説明
WP_Rewrite は、パーマリンクの書き換えルールを管理するクラスです。グローバル変数 $wp_rewrite から使います。
基本構文
global $wp_rewrite
引数
flush_rules():ルールを再生成permalink_structure:現在のパーマリンク構造using_permalinks():パーマリンクを使っているか
戻り値
リライトルールを扱うオブジェクト。
使い方(サンプル)
global $wp_rewrite;
if ( $wp_rewrite->using_permalinks() ) {
// パーマリンク有効
}
注意点
flush_rules()は処理が重いため、頻繁に呼んではいけません。- 通常は
add_rewrite_rule()やflush_rewrite_rules()を使います。
実務での使いどころ
- リライトルール(URLの規則)の、設定や、更新を、行うとき(
global $wp_rewrite)。 - パーマリンクの構造が、使われているかを、確認するとき(
using_permalinks())。
よくあるミスと対処
flush_rules()を、毎回のリクエストで呼んでいる。処理が重くなる。flush_rewrite_rules()を、有効化時などに、一度だけ呼ぶ。- パーマリンク設定が「基本」のサイトで、リライトルールの動作を、前提にしている。
- リライトルールの追加は、
add_rewrite_rule()などの関数を使う。クラスのプロパティを、直接書き換えない。
NG例
add_action( 'init', function () {
global $wp_rewrite;
$wp_rewrite->flush_rules(); // 毎回のリクエストで、実行される
} );
OK例
register_activation_hook( __FILE__, function () {
my_register_rewrite_rules();
flush_rewrite_rules();
} );
使い分け早見表
| やりたいこと | 使うもの |
|---|---|
| リライトルールを更新する | flush_rewrite_rules() |
| ルールを追加する | add_rewrite_rule() |
| パーマリンク構造が有効か確認 | $wp_rewrite->using_permalinks() |

コメント