如何从wp_options表中永久删除默认重写规则?

时间:2011-08-04 作者:Andres Lucero

我们在wp\\u选项表中保存了大量的重写规则,我想永久删除我们网站上没有使用的任何条目(如评论提要、页面附件等)。

清除这些规则并防止它们在下次调用flush\\u rules()时保存到数据库的最佳方法是什么?我更喜欢在函数中工作的解决方案。php或作为独立插件,而不是编辑核心WP文件,如WP包含/重写。php。

2 个回复
SO网友:Rarst

与修改存储的规则相比,在存储规则之前修改规则更可靠。

  • flush_rewrite_rules() 呼叫WP_Rewrite->flush_rules()
  • WP_Rewrite->wp_rewrite_rules()
  • WP_Rewrite->rewrite_rules()
在最后一个内部,有安装挂钩来修改规则(之后,它们将在每次冲洗时像往常一样保存):

do_action_ref_array(\'generate_rewrite_rules\', array(&$this));
$this->rules = apply_filters(\'rewrite_rules_array\', $this->rules);

SO网友:Andres Abello

要执行所需操作,必须为每个规则添加\\u rewrite\\u规则。我正在存储用户添加到选项数组中的新规则。如果用户想要删除规则,那么一旦选中,我就会将其从数组中取消设置。

function remove_rule($user_input){
    foreach($rules as $key => $rule){
        if($rule === $user_input){
            unset($rules[$key]);
        }
    }
    return $rules;
}
然后通过添加所有存储的规则再次重建htaccess

foreach($rules as $rule){
    add_rewrite_rule($rule[\'pattern\'], $rule[\'url\'], \'top\');
}
希望这能帮助任何需要它的人。

结束

相关推荐

我应该在主题中的哪里更新_Options?

我正在设计一个主题,其中主页(即。is_home()) 应该只显示最新的博客文章。我想做点什么$wp_query->update_option(\'posts_per_page\', 1) 每次我在主页上。所有其他显示帖子(如归档)的页面都应该遵循用户定义的选项。每次都这么做似乎有点不必要,因为选项应该只设置一次,对吗?是否可以在循环中忽略posts_per_page 和力have_posts() 只设一个职位?一般来说,这种“一次性设置”的东西应该去哪里?我真的不认为它应该是一个插件,因为它是特定