web-dev-qa-db-ja.com

Flush_rewrite_rulesがプラグインアクティベーションで動作しないのはなぜですか?

私はプラグインの書き換えルールをフラッシュしようとしていますが、うまくいきません。パーマリンク - >書き換えをフラッシュするために管理者用パネルに保存する必要があります。誰もがその理由を見ることができますか?

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
codecowboy

ルールをフラッシュする前に、それらを追加する必要があります。

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