Web制作で役立つメモをWEB MEMO LOG

2023.08.17

【WordPress】カスタム投稿・タクソノミーでパーマリンクをカスタマイズする方法

カスタム投稿、カスタムタクソノミーでパーマリンクを親子関係を持つ形で変更する方法。
登録したスラッグは下記の通りです。

【カスタム投稿タイプ】blog
【カスタムタクソノミー】blog-cat
【ターム】info
【投稿スラッグ】post-slug

目指すURLは下記です。

https://サイトアドレス/カスタム投稿タイプ名/ターム名/投稿スラッグ/
例)https://webmemolog.com/blog/info/post-slug/

通常であれば、下記のURLのようになります。

■カスタム投稿タイプ記事一覧(archive-blog.php)
https://サイトアドレス/カスタム投稿タイプ名/
例)https://webmemolog.com/blog/

■タクソノミーページ(taxonomy.php)
https://サイトアドレス/カスタムタクソノミー名/ターム名/
例)https://webmemolog.com/blog-cat/info/

■記事詳細ページ(single-blog.php)
https://サイトアドレス/カスタム投稿タイプ名/投稿スラッグ/
例)https://webmemolog.com/blog/post-slug/

【STEP01】プラグイン『Custom Post Type Permalinks』の設定

プラグイン『Custom Post Type Permalinks』

【STEP01】プラグイン『Custom Post Type Permalinks』の設定

<設定>
①「パーマリンク」部分を『/%blog-cat%/%postname%/』と設定
②「カスタマイズされたカスタムタクソノミーのパーマリンクを使用する。」をチェック

【STEP02】functions.phpの編集

/*	カスタム投稿のパーマリンク設定
-----------------------------------------------------*/
//パーマリンクからタクソノミー名を削除
function my_custom_post_type_permalinks_set($termlink, $term, $taxonomy){
  return str_replace('/'.$taxonomy.'/', '/', $termlink);
}
add_filter('term_link', 'my_custom_post_type_permalinks_set',11,3);

//カスタムタクソノミーアーカイブ用のリライトルールを追加 ページ送り時もリライト
add_rewrite_rule('blog/([^/]+)/?$', 'index.php?blog-cat=$matches[1]', 'top');
add_rewrite_rule('blog/([^/]+)/page/([0-9]+)/?$', 'index.php?blog-cat=$matches[1]&paged=$matches[2]', 'top');

※タクソノミーに属さない投稿は404になりますので、ご注意を。

【参考】カスタムタクソノミーのパーマリンクをいい感じにしたい

About Site

同じことを何度も検索していたりするんで、検索して解決したことを残そうと思いまして。