BLOG

URL(パーマリンク)から表示する記事を絞り込んで表示する – リライトルール

2014-04-20

WordPressでは、URL(パーマリンク)において、パラメータを渡すことによって、記事を絞り込んで表示することができます。
パラメータ一覧や解釈、ロジックは、「WordPress の表示ロジックを理解する – Reloaded –」がすばらしく参考になります。
これらを理解すると、Wordpressの表現がぐっと増えると思います。

URL(パーマリンク)をキレイにしたい!!!

例えば、
カスタム投稿名が「news」、ラベルが「ニュース」、カスタム分類名が「area」、ラベルが「エリア」を作り、
各記事をエリアで分類し、管理しているとした時、
https://in-visible.net/wp/?post_type=news&area=kanto とすると、ニュース記事でエリアが「関東」の記事が、
アーカイブページとして表示できます。
ですが、ちょっとURLがブサイクです・・・。ハンサムURLは、
https://in-visible.net/wp/news/kanto/ でしょう!
そこで登場するのが、「リライトルール」です。

functions.phpに書くだけ

function gomaUrlRewrite(){
  add_rewrite_rule('(.*)/(.*)$', 'index.php?post_type=$matches[1]&initial=$matches[2]', 'top');
}
add_action( 'init', 'gomaUrlRewrite' );

add_rewrite_ruleは、

add_rewrite_rule('このURLが来たら', 'これを表示します', '優先度');

という感じになります。
最初の([.*])が、matches[1] に当てはまります。2つ目の([.*])は、matches[2] ですね。
ですから、https://in-visible.net/wp/news/kanto/ですと、
?post_type=news&area=kanto と同じページになります。
要するに、特別なページを作るのではなく、URLパターンを複製している感じかなと。
簡単にハンサムURLを作り出すことができました。
優先度を’top’にすると、デフォルトのルールよりも前に来るので、先にルールが適応されることになります。

リライトルール一覧を表示する

現在設定されているリライトルール一覧を表示したい時は、テンプレート内に、

<pre><?php var_dump( get_option( 'rewrite_rules' ) ); ?></pre>

と記述することで確認できます。

注意点

設定後は、「パーマリンク設定」で「OK」を押下後、初めて有効になります。
リライトルールを更新、のニュアンスで、考えずクリックしておいてください。