WordPress カスタムタクソノミーのURL(パーマリンク)を「/カスタム投稿タイプ名/category/ターム名/」 にする方法
カスタム投稿のカスタムタクソノミーのURLを投稿と同じように /category/ターム名/ にする方法です。プラグイン「Custom Post Type Permalinks」を使用します。
※/category/ の部分は好みで変更可能です。
https://example.com/カスタム投稿タイプ名/category/ターム名/
例)
https://example.com/book/category/mystery/
https://example.com/book/category/fantasy/
https://example.com/book/category/horror/ …
カスタム投稿の登録
「本」というカスタム投稿を作成する場合の例
functions.php
/**
* 本カスタム投稿登録
*/
function my_book_post() {
register_post_type(
'book',
array(
'labels' => array(
'name' => '本',
'add_new_item' => '本を追加',
'edit_item' => '本を編集',
'all_items' => '本一覧',
),
'public' => true,
'show_ui' => true,
'supports' => array(
'title',
'editor',
),
'has_archive' => true,
'rewrite' => array(
'with_front' => false,
),
'show_in_rest' => true, // ブロックエディタの場合
)
);
// カテゴリー.
register_taxonomy(
'book_cat',
'book',
array(
'labels' => array( 'name' => '本のカテゴリー' ),
'hierarchical' => true, // カテゴリー.
'rewrite' => array(
'slug' => 'category',
'with_front' => false,
),
'show_in_rest' => true, // Gutenberg.
)
);
}
add_action( 'init', 'my_book_post' );
管理画面で 設定 > パーマリンク > パーマリンク設定で「カスタム構造」を選択して、例えば「/blog/xxxx」(具体例 /blog/%year%/%monthnum%/%day%/%post_id%/)のようにしている場合は「/blog/book/xxxx」とならないように register_post_type の ‘rewrite’ を ‘with_front’ => false にします。
register_taxonomy でも’rewrite’を ‘with_front’ => false に。‘slug’ には ‘category’ を設定します。
※categoryでなくても例えば genre や cat など、構いません。これがパーマリンクに使用されます。/book/好きなスラッグ/mystery/
Custom Post Type Permalinks プラグインをインストールする
Custom Post Type Permalinks をインストールして有効化します。
管理画面の 設定 > パーマリンク で「カスタマイズされたカスタムタクソノミーのパーマリンクを使用する。」にチェックを入れます。