あくまで自分用の覚え書きなので文章とか適当です...

カスタム投稿のカスタムタクソノミーの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でなくても例えば genrecat など、構いません。これがパーマリンクに使用されます。/book/好きなスラッグ/mystery/

Custom Post Type Permalinks プラグインをインストールする

Custom Post Type Permalinks をインストールして有効化します。

管理画面の 設定 > パーマリンク で「カスタマイズされたカスタムタクソノミーのパーマリンクを使用する。」にチェックを入れます。

管理画面の 設定 > パーマリンク で「カスタマイズされたカスタムタクソノミーのパーマリンクを使用する。」にチェックを入れます。
スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です