WordPress の固定ページ(投稿ページでも可)にショートコードを作成て引数によって変化をつけるのですが、URLをいい感じにしたかったので、ちょいと研究してソースを書いてみました。同じ事で苦労されている方いるかも・・・と思った次第です。
今回はプログラム系なので、興味ない方はまた次回。
今回はリライトの部分をメインにしてます。ショートコードは割愛です。
リライト
参考にしたのは公式ページ「https://wpdocs.osdn.jp/Rewrite_API/add_rewrite_rule」それ以外にわかりやすい説明サイトがありませんでした。
固定ページを作成
まずはショートコードを配置する固定ページを作成します。
固定ページの IDを記録しておいてください。
固定ページのスラッグ名は「abcd」好きな名前で大丈夫です。
引数は「key」。これも好きなもので大丈夫。
結果、http://ドメイン/abcd/?key=001 でアクセスできるようになります。
001 を 002 にしたりすると、ショートコードにて内容が変わります。
しかし、このアドレスを http://ドメイン/abcd/key/001/ でアクセスさせたい。
公式ページを参考に書いてみました。
ソース
define("DEFINE_URI", "abcd"); //固定ページスラッグ define("DEFINE_KEY", "key"); //パラメータ define("DEFINE_ID", "123"); //固定ページID function my_rewrite_tag() { add_rewrite_tag('%'.DEFINE_KEY.'%', '([^&]+)'); } add_action('init', 'my_rewrite_tag', 10, 0); function my_rewrite_rule() { add_rewrite_rule('^'.DEFINE_URI.'/'.DEFINE_KEY.'/([^/]*)/?','index.php?page_id='.DEFINE_ID.'&'.DEFINE_KEY.'=$matches[1]','top'); } add_action('init', 'my_rewrite_rule', 10, 0);
こちらを functions.php に書き入れ、パーマリンクの更新をすると http://ドメイン/abcd/key/001/ でアクセス出来るようになります。
WordPress 内部で http://ドメイン/abcd/key/001/ → http://ドメイン/index.php?page_id=123&key=001 への変換を行うようになりした。
まとめ
結構悩んだのですが、出来上がってみると以外とあっさりでした。
ソース使われる方は自己責任でおねがしいます。
コメント