为什么flush_rewrite_rules不能在插件激活时运行?

时间:2013-09-05 作者:codecowboy

我正在尝试刷新插件中的重写规则,但它不起作用。我必须在管理面板中转到permalinks->save,以便刷新重写。有人知道为什么吗?

class SpektrixPlugin {

public function __construct(){
    add_filter(\'query_vars\', array($this, \'add_query_vars\'));
    add_action(\'init\', array($this, \'add_rewrite_rules\'));
}

public function activate() {

    flush_rewrite_rules();
}

public function deactivate() {

    flush_rewrite_rules();
}

public function add_query_vars($vars) {
    $vars[] = "event"; // name of the var as seen in the URL
    return $vars;
}

public function add_rewrite_rules() {
    $page = get_page_by_title( \'Event\' );
    add_rewrite_rule( \'whats-on/(.+)/?$\' , \'index.php?page_id=\'.$page->ID.\'&event=$matches[1]\' , \'top\' );
}


}

$SpektrixEvents = new SpektrixPlugin;

register_activation_hook( __FILE__, array($SpektrixEvents, \'activate\') );
register_deactivation_hook( __FILE__, array($SpektrixEvents, \'deactivate\') );

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

在刷新规则之前,必须添加规则:

public function activate() {
  $this->add_rewrite_rules();
  flush_rewrite_rules();
}

结束

相关推荐

wordpress permalinks tweeks

在创建任何帖子后,我都会遵循permalink结构。。。http://domain.com/wp/postname根据Permalink设置。。。。职位名称:http://domain.com/wp/sample-post/这个永久链接对于页面来说很好,但我如何才能像下面这样添加blog作为前缀。。。。http://domain.com/wp/blog/文章标题http://domain.com/wp/blog/类别/职位名称如果你需要更多信息,请告诉我,谢谢。