PR

WordPress 引数で固定ページ動的出力の rewrite

wordpress
記事内に広告が含まれている事があります。

WordPress の固定ページ(投稿ページでも可)にショートコードを作成て引数によって変化をつけるのですが、URLをいい感じにしたかったので、ちょいと研究してソースを書いてみました。同じ事で苦労されている方いるかも・・・と思った次第です。

今回はプログラム系なので、興味ない方はまた次回。

今回はリライトの部分をメインにしてます。ショートコードは割愛です。

19be7dd5715dc4e4237b603fac79dfe8_s

リライト

参考にしたのは公式ページ「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 への変換を行うようになりした。

まとめ

結構悩んだのですが、出来上がってみると以外とあっさりでした。

ソース使われる方は自己責任でおねがしいます。

コメント

タイトルとURLをコピーしました