flush_rewrite_rules() の使い方|説明・引数・注意点

説明

flush_rewrite_rules() は、リライトルール(パーマリンクのルール)を再生成する関数です。

基本構文

flush_rewrite_rules( bool $hard = true ): void

引数

  • $hard:true で .htaccess も更新する

戻り値

戻り値はありません。

使い方(サンプル)

register_activation_hook( __FILE__, function() {
	// 投稿タイプの登録後に
	flush_rewrite_rules();
} );

注意点

  • 処理が重いため、init などの毎回実行されるフックの中で呼んではいけません。
  • プラグインの有効化・無効化時に1度だけ実行するのが原則です。

実務での使いどころ

  • カスタム投稿タイプやタクソノミーを追加したあとに、リライトルール(URLの規則)を更新するとき。
  • プラグインの有効化・無効化の処理の中で、一度だけ実行するとき。

よくあるミスと対処

  • 毎回のリクエストで呼んでいる(init フックの中など)。処理が重くなる。有効化時など、一度だけにする。
  • 有効化の処理で、投稿タイプの登録より前に呼び、新しいルールが反映されない。登録の処理を呼んでから、この関数を呼ぶ。
  • テンプレートの中で呼んでいる。

NG例

add_action( 'init', function () {
	register_post_type( 'news', array( 'public' => true ) );
	flush_rewrite_rules(); // 毎回のリクエストで実行される
} );

OK例

register_activation_hook( __FILE__, function () {
	my_register_post_types(); // 先に、登録の処理を呼ぶ
	flush_rewrite_rules();
} );

使い分け早見表

やりたいこと 使うもの
リライトルールを更新する flush_rewrite_rules()
手動で更新する 管理画面の「設定 > パーマリンク設定」で、保存する
投稿タイプを登録する register_post_type()

関連項目

register_post_type()、add_rewrite_rule()、register_taxonomy()

公式リファレンス:flush_rewrite_rules() | Function | WordPress Developer Resources

コメント

タイトルとURLをコピーしました