WordPressでカスタム投稿を設定した場合、投稿のカテゴリーやタグは表示されません。
そこで、カスタム投稿にもカテゴリーを表示させる方法についてお伝えします。
なお、細かくテストしていないので、アーカイブなど上手く表示できないかもしれません。
(追加でコードが必要になる可能性大)
また、基本は、カスタム投稿はカスタムタクソノミーでカテゴリ分けを行います。
ちょっと、あまり使わない方法かもしれません。
条件
WordPress バージョン 5.8.3
カスタム投稿やカスタムタクソノミーは、function.phpにコードで入れる。
結論
以下はnewsというカスタムタクソノミーとカテゴリーを表示させる例です。
よくありがちなやつですね。。。
<?php
/**
* カスタム投稿 ニュース
*
* @package WordPress
* @subpackage yorozuyaarimichi
* @author aw1.jp
* @version 2022.1.16
*/
/**
* カスタム投稿 ニュース
*
* @return void
*/
function add_custom_news() {
if ( function_exists( 'register_post_type' ) ) {
$slug = 'news';
$labels = array(
'name' => 'ニュース',
'singular_name' => 'ニュース',
'add_new' => 'ニュースを新しく追加',
'add_new_item' => 'ニュースを新しく追加',
'edit_item' => '編集',
'new_item' => '新しいニュースアイテム',
'view_item' => 'ニュースアイテムを見る',
'search_items' => '検索する',
'not_found' => '見つかりませんでした',
'not_found_in_trash' => 'ゴミ箱には見つかりませんでした',
'parent_item_colon' => '',
);
// 管理画面で表示する項目
$supports_array = array(
'title', // タイトル
'editor', // エディタ
'author', // 投稿者
'thumbnail', // アイキャッチ
'excerpt', // 抜粋
'revisions', // リビジョン
);
// 表示するカテゴリー
$cat_array = array(
'news_category', // register_taxonomyで定義したカスタムタクソノミー
'category', // 投稿のカテゴリー
);
register_post_type(
'news',
array(
'label' => 'ニュース',
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'menu_position' => 3,
'show_ui' => true,
'query_var' => true,
'rewrite' => array( 'slug' => $slug ),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false, // 階層(親)の有無
'supports' => $supports_array,
'taxonomies' => $cat_array,
)
);
}
}
add_action( 'init', 'add_custom_news' );
/**
* ニュースのカテゴリー(カスタムタクソノミー)を追加
*
* @return void
*/
function create_news_taxonomies() {
$args_news_category = array(
'label' => 'ニュースカテゴリー',
'labels' => array(
'name' => 'ニュースのカテゴリー',
'singular_name' => 'ニュースのカテゴリー',
'search_items' => 'カテゴリーの検索',
'popular_items' => '人気のカテゴリー',
'all_items' => '全てのカテゴリー',
'parent_item' => '親カテゴリー',
'edit_item' => 'カテゴリーを編集する',
'update_item' => 'カテゴリーを更新する',
'add_new_item' => '新しいカテゴリーを追加する',
'new_item_name' => 'カテゴリーの名前',
),
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'hierarchical' => true,
'rewrite' => array( 'hierarchical' => false ),
);
register_taxonomy( 'news_category', 'news', $args_news_category );
}
// init アクションにフックして、そのタイミングで create_news_taxonomies を呼び出す
add_action( 'init', 'create_news_taxonomies', 0 );
全部は書いていないですが、とりあえず、これを元にすれば何とかなると思います。
アーカイブの出力はまた別途だけど・・・


