カスタム投稿のカテゴリー一覧ページのURLは初期設定のままでは違和感がありますので、カスタマイズする方法を紹介します。
タクソノミーアーカイブの初期設定のパーマリンク
はじめにタクソノミーアーカイブ(つまりカスタム投稿タイプのカテゴリーごとの一覧ページ)のパーマリンク(URL)が初期設定ではどのように表示されるのか下記にお示しします。
ページと項目 | パーマリンクとスラッグ |
トップページのパーマリンク | https://hoge.com |
カスタム投稿タイプのスラッグ | works |
カスタムタクソノミーのスラッグ | works-cat |
カスタム投稿アーカイブのパーマリンク | https://hoge.com/works |
タクソノミーアーカイブのパーマリンク | https://hoge.com/works-cat/ターム名 |
上の表のように、カスタム投稿タイプではworksとなっていたのが、タクソノミーアーカイブではworks-catに置き換わってしまうことが不自然に感じ、下記のように表示させたい方もいらっしゃると思います。
https://hoge.com/works/ターム名
そのためにはfunctions.phpに設定を書き加える必要があります。
タクソノミーアーカイブのパーマリンクのカスタマイズ方法
以下、タクソノミーアーカイブのパーマリンク変更のためのfuctions.phpの記述方法を紹介していきます。
functions.phpのカスタムタクソノミー(カテゴリー)を追加部分に追記する
カスタムタクソノミー(カテゴリー)を追加するときに書いたfunctions.phpの記述に下記の一行を付け加えます。
'rewrite' => array('slug' => '変更後の文字列'),
たとえば、下の例は、パーマリンクをworks-catからworksと表示されるようにしたもので、10行目が書き加えた箇所です。
// カスタムタクソノミー(カテゴリー)を追加
register_taxonomy(
'works-cat', // カテゴリのスラッグ(半角英数字の小文字)
'works', // カテゴリーを追加したいカスタム投稿タイプのスラッグ
array(
'label' => 'カテゴリー', //管理画面での表示名
'hierarchical' => true, //階層構造
'public' => true, // 管理画面に表示するか?
'show_in_rest' => true, //ブロックエディターON
'rewrite' => array('slug' => 'works'),
)
);
関連記事
functions.phpにadd_rewrite_ruleを追加する
さらに、function.phpにadd_rewrite_ruleを書き加えます。
下に記述例を載せておきますが、方法は「works」「works-cat」の部分を、ご自分の場合の「変更したいスラッグ」「変更前のスラッグ」に置き換えて下さい。その他はコピペでOKです。
// -----------------------------------------------------------------
// タクソノミーアーカイブのパーマリンク変更:add_rewrite_ruleの追加
// -----------------------------------------------------------------
function add_custom_rewrite_rules()
{
add_rewrite_rule('works/([^0-9]+)/?$', 'index.php?works-cat=$matches[1]&taxonomy=works-cat', 'top');
add_rewrite_rule('works/([^0-9]+)/page/([^/]+)/?$', 'index.php?works-cat=$matches[1]&taxonomy=works-cat&paged=$matches[2]', 'top');
}
add_action('init', 'add_custom_rewrite_rules');
functions.phpにタームリンクの調整を追加する
続いて、functions.phpにタームリンクの調整に関する記述を書き加えます。これはget_terms等で取得されるURLが上記変更によりバグらないようにするための処置です。
下の記述例に対して、「works-cat」「works」の部分を、ご自分の場合の「変更前のスラッグ」「変更したいスラッグ」に置き換えて下さい。その他はコピペでOKです。
// -----------------------------------------------------------------
// タクソノミーアーカイブのパーマリンク変更:タームリンクの調整
// -----------------------------------------------------------------
function rewrite_term_links($termlink, $term, $taxonomy)
{
return ($taxonomy === 'works-cat' ? home_url('/works' . $term->slug) : $termlink);
}
add_filter('term_link', 'rewrite_term_links', 10, 3);
管理画面の設定>パーリンク>変更を保存
最後に、WordPressの管理画面に戻って、設定>パーマリンクと開いて、「変更の保存」ボタンをクリックします。この操作をしないとパーマリンクに加えた変更が反映されません。