(とりわけ)カスタム投稿タイプをインスタンス化するプラグインを書いています。これはマルチサイトプラグインであり、mu-pluginsディレクトリにあります。
この状況でflush_rewrite_rules()を処理するためのベストプラクティスは何ですか?「通常の」プラグインの場合、これはアクティベーションフックで行います。これらのフックは使用できないため、必須のプラグインでは不可能です。
これはカスタム投稿タイプを登録した後の「1回限りの」イベントであるため、CPTを登録するクラスで次のようなことを行うのは理にかなっています。
private function check_flush_my_CPT() {
global $wp_rewrite;
if ( !get_option('my_plugin_firstrun') ) {
$wp_rewrite->init();
$wp_rewrite->flush_rules(true);
update_option('my_plugin_firstrun', 'yes');
}
}
public function register_my_CPT() {
// do all the CPT setup steps for the $args array...
register_post_type('my_CPT', $args);
$this->check_flush_my_CPT();
}
add_action( 'init', array(&$this, 'register_my_CPT' ) );
したがって、CPT登録はすべての「init」アクションで発生しますが、この権限がある場合、書き換えルールのフラッシュは1回だけ発生します。 これまで。
私は正しい軌道に乗っていますか?
(編集):試してみたところです。私のCPTは404 not foundエラーを出しているので、書き換えルールは機能していません:-(
(編集#2):私はこの質問に示すように、グローバル変数にアクセスするための解決策を試しました: マルチサイトで書き換えルールを確実にフラッシュする方法は?-上記のコード例を更新してこれを示します。残念ながら、CPTを読み込もうとすると、404エラーが発生します。書き換えルールがデータベースに保存されているようですが、使用されていないようです。道に迷いました。