WordPressにオリジナルのリライトルールを適用する
WordPressにオリジナルのパラメータを渡すのにGETでもいいんだけど、整えたほうが見た目も綺麗だよねってことで、チャレンジ。
実は結構簡単
あまり情報がなかったりして難しそうなイメージがあったんだけど、実は簡単にできた。
やり方はいくつかあるんだろうけど、このやり方が一番簡単なんじゃないかな。
add_action('wp_loaded', 'my_rewrite_rule', 1);
function my_rewrite_rule($rules){
add_rewrite_rule('<リライトルール>', '<リライト>', '<ポジション>');
}
これだけ。
あとは管理ページの「パーマリンク設定」内で「設定を保存」しておくこと。これでリライトルールを追加できる。(たぶん)
まだルールが追加出来できていない時は
flush_rewrite_rules();
を1回だけやって、リライトルールのキャッシュ(?)を削除してあげれば大丈夫。
具体例
例えば「ニュース」カテゴリーのレイアウトを2種類作って好きな方を選んでもらえるようにしたいとして、layoutパラメータを追加することにする。値はlist / magazineのどちらかで。
add_action('wp_loaded', 'custom_rewrite_rule', 1);
function custom_rewrite_rule($rules){
add_rewrite_rule('news/layout/list?$', 'index.php?category_name=news&layout=list', 'top');
add_rewrite_rule('news/layout/magazine?$', 'index.php?category_name=news&layout=magazine', 'top');
}
これだけだとlayout
の値をWordPressがわかってくれないので、わかってもらえるようにする。
add_filter('query_vars', 'custom_query_vars');
function custom_query_vars($vars){
$vars[] = 'layout';
return $vars;
}
これでlayout
の値をget_query_var('layout')
で取得できるようになる。
あとは
if($layout = get_query_var('layout')){
include(TEMPLATEPATH."/{$layout}.php");
}
とかなんとか、どうにでも。
コメント0