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』
<設定>
①「パーマリンク」部分を『/%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になりますので、ご注意を。