説明
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

コメント