"投稿"のパーマリンクだけカスタマイズ:/news/%post_id%にする
CPT UI等で作ったカスタム投稿タイプの記事ページのパーマリンクに影響を与えないように、デフォルトで存在する投稿の記事ページのパーマリンクだけをカスタマイズしたい...
と思ったのですが、ちょっと苦労したのでメモしておきます。
具体的には「以下赤字部分のようなパーマリンクをどう実現するか」というのが問題でした。
- 投稿ページのパーマリンク:https://xx.com/news/%post_id%
例) https://xxx.com/news/14 - カスタム投稿ページのパーマリンク:https://xx.com/product/%post_id%
例) https://xxx.com/product/23
これは単純に考えると、WordPress管理画面 > 設定 > パーマリンク設定 で以下のようにすれば解決!と思いがちですが、
こうすると上記例にあるカスタム投稿(product)ページのパーマリンクもつられて
https://xxx.com/news/product/23
となってしまってダメなのでした。
なんとしても、他のカスタム投稿タイプのパーマリンクには影響を与えずに修正したい。そんな時の方法です。
ー もくじ ー
"投稿"ページのパーマリンクだけカスタマイズする
以下2ステップです。
- functions.phpにコードを追記
- 管理画面からパーマリンクの設定を変更
1. functions.phpにコードを追記
WordPressテーマフォルダ内のfunctions.phpの中に以下コードをコピペして、
- 3行目、11行目の「xxx」部分を希望する文字列に書き換える
functions.php// 投稿ページのパーマリンクをカスタマイズ
function add_article_post_permalink( $permalink ) {
$permalink = '/xxx' . $permalink;
return $permalink;
}
add_filter( 'pre_post_link', 'add_article_post_permalink' );
function add_article_post_rewrite_rules( $post_rewrite ) {
$return_rule = array();
foreach ( $post_rewrite as $regex => $rewrite ) {
$return_rule['xxx/' . $regex] = $rewrite;
}
return $return_rule;
}
add_filter( 'post_rewrite_rules', 'add_article_post_rewrite_rules' );
参考サイトSimple Colorさん:投稿の個別ページのみパーマリンクを変更する方法
このコードを保存した時点で、投稿のパーマリンクに以下のようなビフォーアフターが起きています。
↓
2. 管理画面からパーマリンクの設定を変更
あとはWordPress管理画面 > 設定 > パーマリンク設定 をいじるだけなのですが...
【注意】末尾を %post_id% にしたい時
正しく動作する設定は以下です。
これで、/news/%post_id%のパーマリンクが実現できました。
一方、パーマリンクが以下の形式では正常に動作しない点に注意しましょう。
どうダメになるかというと、投稿記事の全てのパーマリンクが以下のようになってしまいました。僕はここで15分ほど「なんぞこれ!?」とハマりました。
URLにアクセスするとエラーになってしまい記事が表示されません。
/xxx/%postnameにしたい時
/news/about-our-close-hourのようにしたいときは以下のようにします。
最後に、カスタム投稿タイプのパーマリンクに影響を与えていないか確認
ここまで加えてきた変更は、すべてデフォルトで存在する"投稿"ページのパーマリンクにのみ影響があります。
最後にカスタム投稿タイプの記事ページのパーマリンクを確認して、問題なければ完了!
例)
https://xxx.com/product/23 が https://xxx.com/news/product/23 などになっていないこと
おまけ:カスタム投稿タイプのパーマリンクカスタマイズ
冒頭で、カスタム投稿タイプのパーマリンクを以下のようにしたいとサラッと書きましたが、
- カスタム投稿"商品"ページのパーマリンク:https://xxx.com/product/%post_id%
例) https://xxx.com/product/23
上記のようにカスタム投稿タイプのパーマリンク末尾を %post_id% に変えたい時なども別でカスタマイズが必要です。
Custom Post Type Permalinksというプラグインをインストール・有効化すると、パーマリンク設定変更ページに以下のような欄が出現します。
カスタム投稿タイプ1つずつのパーマリンクを柔軟に変更できるので、併せて知っておくと便利です。