当社の読者の一人が最近、WordPressでカスタム投稿タイプにカテゴリを追加する方法について問い合わせてきました。
カテゴリは WordPress の組み込み分類法の 1 つであり、主にブログ投稿に使用されます。ただし、カスタム投稿タイプには自動的に表示されないため、整理の選択肢が制限されます。
幸いなことに、WordPressサイトでの長年の作業を通じて、この問題に対する簡単な解決策をいくつか見つけました。
この記事では、WordPressでカスタム投稿タイプにカテゴリーを追加する方法をご紹介します。

カスタム投稿タイプにカテゴリを追加する必要があるのはいつですか?
WordPress では、プラグイン開発者やウェブサイトの所有者が独自のコンテンツタイプを作成できます。投稿や固定ページと同様に、これらのカスタム投稿タイプにもカテゴリやタグのような独自の分類法を持たせることができます。
例えば、映画レビューを公開する場合、「映画」というカスタム投稿タイプを作成したいかもしれません。
また、映画を適切なトピックに整理する必要があるかもしれません。そのためには、カスタムタクソノミーが必要です。ジャンルという名前のタクソノミーを作成できます。
しかし、ブログ投稿で使用しているのと同じカテゴリを、映画の投稿タイプでも使用したい場合はどうすればよいでしょうか?
これは、カスタム投稿タイプでカテゴリーを有効にする必要がある場合です。これにより、ブログ投稿とカスタム投稿タイプの両方で同じカテゴリーを使用できるようになります。
それを踏まえて、WordPressでカスタム投稿タイプに簡単にカテゴリを追加する方法を見てみましょう。
- プラグインでカスタム投稿タイプにカテゴリーを追加する
- コードでカスタム投稿タイプにカテゴリを手動で追加する
- カテゴリページに複数の投稿タイプを表示する
- WordPressのカテゴリに関するエキスパートガイド
プラグインでカスタム投稿タイプにカテゴリーを追加する
初心者の方は、Custom Post Type UI プラグインを使用してカスタム投稿タイプを作成することをお勧めします。カスタム投稿タイプを作成する。
Custom Post Type UIプラグインを使用すると、カスタム投稿タイプを、カテゴリーを含む組み込みまたはカスタムタクソノミーに関連付けるオプションがあります。
まず、Custom Post Type UI プラグインをインストールして有効化する必要があります。詳細については、WordPress プラグインのインストール方法に関するステップバイステップガイドをご覧ください。
インストール後、新しいカスタム投稿タイプを作成したり、プラグインで作成した既存のカスタム投稿タイプを編集したりするには、CPT UI » Add/Edit Post Typesにアクセスする必要があります。

設定オプションがある一番下までスクロールしてください。そこには、*Taxnomies*(分類法)エリアが表示されます。
カテゴリの横にあるチェックボックスをオンにして、カスタム投稿タイプを保存する必要があります。

設定を保存するには、「投稿タイプを保存」ボタンをクリックすることを忘れないでください。
これで、その特定の投稿タイプの下にある任意のコンテンツを編集でき、WordPress のブロックエディタで右側の列にカテゴリを選択するオプションが表示されます。

コードでカスタム投稿タイプにカテゴリを手動で追加する
テーマのfunctions.phpファイルにコードを追加してカスタム投稿タイプを作成した場合、サイト固有のプラグイン、またはコードスニペットプラグインで作成した場合、カテゴリーをサポートされるタクソノミーとして追加するためにコードを変更する必要があります。
カスタム投稿タイプの引数にこの行を追加するだけです。
'taxonomies' => array( 'category' ),
他のカスタムタクソノミーを持つカスタム投稿タイプ用の既存のコードに、この行が既に含まれている可能性が高いです。もしそうであれば、その後にカンマを追加し、カテゴリを追加するだけです。次のようになります。
'taxonomies' => array('topics', 'category' ),
ここに、組み込みのカテゴリをサポートする「Movies」という名前のカスタム投稿タイプを作成したコードの完全な例を示します。
function custom_post_type() {
// Set UI labels for Custom Post Type
$labels = array(
'name' => _x( 'Movies', 'Post Type General Name', 'twentythirteen' ),
'singular_name' => _x( 'Movie', 'Post Type Singular Name', 'twentythirteen' ),
'menu_name' => __( 'Movies', 'twentythirteen' ),
'parent_item_colon' => __( 'Parent Movie', 'twentythirteen' ),
'all_items' => __( 'All Movies', 'twentythirteen' ),
'view_item' => __( 'View Movie', 'twentythirteen' ),
'add_new_item' => __( 'Add New Movie', 'twentythirteen' ),
'add_new' => __( 'Add New', 'twentythirteen' ),
'edit_item' => __( 'Edit Movie', 'twentythirteen' ),
'update_item' => __( 'Update Movie', 'twentythirteen' ),
'search_items' => __( 'Search Movie', 'twentythirteen' ),
'not_found' => __( 'Not Found', 'twentythirteen' ),
'not_found_in_trash' => __( 'Not found in Trash', 'twentythirteen' ),
);
// Set other options for Custom Post Type
$args = array(
'label' => __( 'movies', 'twentythirteen' ),
'description' => __( 'Movie news and reviews', 'twentythirteen' ),
'labels' => $labels,
'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'custom-fields', ),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_admin_bar' => true,
'menu_position' => 5,
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'page',
'show_in_rest' => true,
// This is where we add taxonomies to our CPT
'taxonomies' => array( 'category' ),
);
// Registering your Custom Post Type
register_post_type( 'movies', $args );
}
/* Hook into the 'init' action so that the function
* Containing our post type registration is not
* unnecessarily executed.
*/
add_action( 'init', 'custom_post_type', 0 );
カテゴリページに複数の投稿タイプを表示する
デフォルトでは、WordPress サイトのカテゴリページにはデフォルトの「投稿」投稿タイプのみが表示されます。

カスタム投稿タイプをデフォルトの投稿と同じカテゴリページに表示するには、このコードをテーマの functions.php ファイルまたはコードスニペットプラグインに追加する必要があります。
add_filter('pre_get_posts', 'query_post_type');
function query_post_type($query) {
if( is_category() ) {
$post_type = get_query_var('post_type');
if($post_type)
$post_type = $post_type;
else
$post_type = array('nav_menu_item', 'post', 'movies'); // don't forget nav_menu_item to allow menus to work!
$query->set('post_type',$post_type);
return $query;
}
}
注意: 「movies」を独自のカスタム投稿タイプの名前に置き換えるのを忘れないでください。
このコードは、市場で最高のコードスニペットプラグインであるWPCodeを使用して追加することをお勧めします。WPCodeを使用すると、テーマのfunctions.phpファイルを編集せずに、WordPressにカスタムコードを安全かつ簡単に安全に追加できます。

開始するには、無料のWPCodeプラグインをインストールして有効化する必要があります。ヘルプが必要な場合は、WordPressプラグインのインストール方法に関するチュートリアルをご覧ください。
プラグインを有効化したら、WordPressダッシュボードから コードスニペット » スニペットを追加 に移動します。
スニペット追加ページから、「カスタムコードを追加(新規スニペット)」オプションにマウスカーソルを合わせ、「+カスタムスニペットを追加」ボタンをクリックします。

次に、画面に表示されるオプションのリストからコードの種類として「PHPスニペット」を選択します。

次に、ページの上部でスニペットのタイトルを追加します。これは参照用であり、コードが何のためのものかを思い出すのに役立つものであれば何でも構いません。
次に、上記のコードを貼り付けます。

その後、ページ上部のスイッチを「非アクティブ」から「アクティブ」に切り替え、「スニペットを保存」ボタンをクリックします。

これで、カテゴリアーカイブページにアクセスでき、カスタム投稿タイプのエントリが表示されるようになります。

カスタム投稿タイプにもタグを追加するために、同じ方法を使用できます。詳細については、カテゴリーとタグの違いに関するガイドをご覧ください。
WordPressのカテゴリに関するエキスパートガイド
WordPressでカテゴリを使用することについて、さらに詳しく知りたいですか?これらのチュートリアルをご覧ください:
- WordPress でカテゴリの順序を変更する方法
- WordPressのカテゴリを正しく変更、移動、削除する方法
- WordPress で投稿ごとに 1 つのカテゴリを強制する方法
- WordPressにタクソノミー画像(カテゴリアイコン)を追加する方法
- WordPressのカテゴリをカスタムタクソノミーに変換する方法
- WordPressウィジェットで空のカテゴリを表示する方法
- WordPressのカテゴリとタグの分析を追跡する方法(簡単な方法)
この記事が、WordPressでカスタム投稿タイプにカテゴリを追加する方法を学ぶのに役立ったことを願っています。また、ウェブサイトを成長させるための必須のWordPressプラグインや、ブログのトラフィックを増やす方法に関するヒントもご覧ください。
この記事が気に入ったら、WordPressのビデオチュートリアルについては、YouTubeチャンネルを購読してください。 TwitterやFacebookでもフォローできます。
Chandu Mullangi
この記事、ありがとうございます
カテゴリページに複数の投稿タイプを表示するためのコードはうまく機能しています。
タグページに複数の投稿タイプを表示したいのですが、そのコードを共有していただけますか?
WPBeginnerサポート
カスタム投稿タイプにタグを追加するには、タクソノミー配列に「post_tag」を追加します。その場合、次のようになります。
‘taxonomies’ => array( ‘category’, ‘post_tag’ ),
管理者
Muhamad Shahzad
ブログ投稿のカテゴリとカスタム投稿タイプのカテゴリリストをどのように分離できますか?上記のコードを追加しましたが、機能します。しかし、問題は、このカスタム投稿タイプのカテゴリとブログ投稿のカテゴリが混ざっていることです。それらは分離されるべきです。
WPBeginnerサポート
このチュートリアルの目的は、それらを混在させることです。お探しのものについては、カスタム投稿タイプに別のカテゴリを使用するのが最善かもしれません。これにより、カテゴリアーカイブページに表示されなくなります。
管理者
ポウロミ・バス
こんにちは。
このコードを使用したら、完璧に機能しました!CPTは私が選択した投稿カテゴリに表示されます。
しかし、ブログアーカイブには表示されません。すべての投稿を表示するデフォルトのアーカイブのように。
そこにも表示するにはどうすればよいですか?
本当にありがとうございます!
WPBeginnerサポート
You would want to take a look at our article below that covers how to do this
https://www.wpbeginner.com/wp-tutorials/how-to-create-custom-post-types-in-wordpress/
管理者
Connie
メニューにカスタム投稿タイプ(CPT)のカテゴリを追加する方法を教えてください。
CPT「article」にカテゴリー「car」と「truck」があります
これらの項目を含むカスタムメニューを作成したいです。
すべて – 車 – トラック
いくら探しても見つかりません。メニュー管理のカテゴリは表示され、メニューに追加することもできますが、これらのリンクの結果は空白のページになります。
表示されているカテゴリは、投稿カテゴリを意図したものであり、カスタム投稿タイプカテゴリではないと推測します…
何かヒントはありますか?
Connie
WPBeginnerサポート
メニューエリアの画面オプションを確認して、カスタム投稿タイプが現在チェックされていないオプションとして利用可能かどうかを確認してください。
管理者
Vico
投稿タイプ「products」を作成し、コアのwpカテゴリーを使用しています。
私の製品URL構造は mysite.com/product/skf bearing 12 です。
私のカテゴリーページは mysite.com/category/bearings を表示します。
なぜ製品URLにカテゴリーがURL内に表示されないのでしょうか? このように:
mysite.com/bearings/skf bearing 12
カスタム投稿のパーマリンクは %category%%post% です。
パーマリンクを保存しましたが、まだ同じ構造が表示されています。
dharamjeet
こんにちは!デフォルトの投稿カテゴリリストがカスタム投稿タイプのカテゴリリストに表示されています
直すのを手伝ってもらえませんか
カルロス・バリン
finally works for me
thank you
Moises
なぜコードにtwentythirteenを追加したのですか?
WPBeginnerサポート
こんにちは、Moisesさん。
この文字列は翻訳に使用されます。テーマが翻訳をサポートしている場合は、テーマのテキストドメインに置き換える必要があります。ここで何を使用すべきか不明な場合は、テーマサポートに問い合わせてください。そのまま貼り付けても、これらの文字列は無視されます。
管理者
Brian
FYI、これは管理画面での一括編集を壊します。多くの投稿タイプに追加しましたが、一括編集に移動すると、クエリのpost_type部分が、管理画面で編集しようとしている投稿タイプではなく、「Array」になります。
これを回避するには、if( is_category() ): の前にこれを追加するだけです。
`if ( is_admin() ) return;`
rose
こんにちは、助けが必要です。
CPTを2つ持っていますが、それらが共通の分類を持たないようにしたいです。
例えば
CPT 1
– 分類 (タイプ)
– タイプ A
– タイプ B
CPT 2
– 分類 (タイプ)
– タイプ c
– タイプ D
注意: CPT 1 のタイプ A & B をここに表示したくありません。
ありがとうございます
WPBeginnerサポート
Roseさん、こんにちは。
タクソノミーを作成する際に、異なる名前を付け、同じラベルを持たせることができます。
管理者
Gabriela
2つ目のカスタム投稿タイプを追加するにはどうすればよいですか?
CPTの名前を変更してコードを繰り返してみましたが、うまくいきません…
何かアイデアはありますか?
アルン・サティヤ
カテゴリーページでのCPT表示コードは、見事に機能しました。ありがとうございます!ただし、注意すべき点があります。カテゴリー名でタグ付けされた最新の投稿/CPT投稿は、そのカテゴリーページにすぐに表示されません。2回目の同様のアクションでのみ表示されます。つまり、同じカテゴリーに別の投稿/CPT投稿が追加された場合にのみ、最初の投稿がそのカテゴリーページに表示されます。これに対する修正方法はありますか?
ソンジョエ
CPT UIを使用しています。「jobs」というカスタム投稿タイプを作成し、カテゴリを許可しました。しかし、これらの同じカテゴリは投稿にもあります。それらは同じカテゴリを使用しています。私のカスタム投稿タイプ「jobs」が独自のカテゴリを持ち、通常の投稿が独自のカテゴリを持つことは可能ですか?ありがとうございます
Rizky
同じ質問です。カスタム投稿タイプのカテゴリアーカイブを作成したい場合、カスタムクエリを実行する必要がありますか?
fathur
メニュー項目もリストする「最近の投稿」サイドバーウィジェットをどのように扱いますか?
$post_type = array(‘nav_menu_item’, ‘post’, ‘movies’);
WPBeginnerサポート
nav_menu_itemを削除できます
管理者
vivek
Thanks for the great tutorial here.
カスタム投稿をカテゴリごとに別のページに表示する方法を教えていただけますか?
デフォルトのカテゴリーページは正常に機能しており、投稿が表示されます。しかし、別のページで同じカテゴリーの投稿を表示しようとすると、空の配列が返されます。助けてください。
マシュー・ライト
ありがとうございます!これは素晴らしいです。もっと複雑な(そして機能しなかった)解決策で取り組んでいた問題を簡単に解決してくれました。
ただ一つ質問があります。CPTのカスタムタクソノミーを作成する際にタクソノミー宣言を追加したことはありませんが、タクソノミーは常に機能していました。「category」だけを追加して何が起こるか見てみましたが、それは見事に機能し、既存のカスタムタクソノミーに悪影響を与えることなく、CPTに投稿カテゴリを追加しました。
カスタムタクソノミーをCPT引数に入れるのはベストプラクティスですか?
Thanks again for sharing
WPBeginnerサポート
はい、その特定の投稿タイプにカスタムタクソノミーを使用することがすでにわかっている場合です。
管理者
デイジー
カスタム投稿タイプにカテゴリとサブカテゴリを追加するためのカスタムコード。$post_type = array(‘nav_menu_item’, ‘post’, ‘myPostType’); のコードをカテゴリ表示に使用すると、そのカテゴリのみが表示されますが、別のカテゴリに同じ関数を再利用しても機能しません。何かアイデアをいただけますか?
クリス・ナジマン
こんにちは。カスタム投稿タイプ(Artwork)を functions.php で正常に作成しました。次にカスタム分類(「階層的」=> true)を作成したので、新しい Artwork 投稿を作成する際にカスタムカテゴリーを追加できます。
同じカスタムタクソノミー関数内で、アートワーク投稿のカテゴリーを事前に定義することは可能でしょうか?
ユーザーが選択できるのは、1) 絵画、2) 彫刻の2つのカテゴリのみとしたいです。ユーザーがこれら以外のカテゴリを追加できるようにしたくありません。理想的には、ユーザーはどちらかのカテゴリを選択することを「強制」され、つまり、カテゴリが選択されない限り投稿は公開できないようにしたいです。
これは可能ですか?
WPBeginnerサポート
カテゴリの作成に制限を設けたカスタムユーザーロールを作成することで可能です。
管理者
マウ・フェルスカ
複数のカスタム投稿タイプに複数のカテゴリを追加しています。
1行に複数追加するにはどうすればよいですか?
$post_type = array(‘nav_menu_item’, ‘post’, ‘myPostType’);
?
ありがとうございます!
マウ・フェルスカ
問題はすでに解決しました。
本能的に、カスタム投稿タイプを配列としてリストアップしましたが、カンマで区切って$post_typeオブジェクト内にリストアップするだけでよかったことがわかりました。
ありがとうございます!
Eren
こんにちは、質問があります。プラグインを投稿タイプとして使用しており、独自のカテゴリ領域があります。このプラグインでWordPressのコアカテゴリを使用したいのですが、今のところそれができません。上記のプラグインを使用しましたが、その後、プラグインの下に2つのカテゴリ領域が作成され、その投稿タイプの投稿をカテゴリで表示しようとすると、プラグイン独自のカテゴリリストが空であるため何も表示されません。プラグインのコードを操作するなど、多くのことを試しましたが、どれも問題を解決しませんでした。何か提案はありますか?
Davide
この問題について何か解決策は見つかりましたか?
デビッド
この記事は、現在のWPバージョンで動作するように最近更新されましたか?使用されているプラグインが2年以上更新されていないことに気づき、使用を少しためらっています。
デビッド
すみません、やっぱり大丈夫です。更新された情報を見ました。
Piyush
素晴らしいチュートリアルをありがとうございます。カスタム投稿をカテゴリごとに別のページに表示する方法を教えていただけますか?例えば、「talent」というカスタム投稿タイプと、「art」というカテゴリがあるとします。投稿は2つあり、1つはカスタム投稿タイプ「talent」で作成され、もう1つは通常の投稿として作成されています。どちらの投稿も「art」カテゴリに割り当てられています(これはカスタム投稿タイプと通常の投稿の両方に共通です)。通常の投稿の場合、例:example.com/category/art/ のようにカテゴリページを表示できることはわかっています。カスタム投稿タイプのカテゴリページの場合、URLは example.com/talent/art/ になるはずですが、404エラーが表示されます。
WPBeginnerサポート
パーマリンク構造を更新してみてください。単に 設定 » パーマリンク にアクセスし、何も変更せずに変更を保存ボタンをクリックしてください。
管理者
ロバート
よくできました、ありがとうございます!
いくつか問題があります:
– 「カテゴリー」ウィジェットにカスタム投稿タイプのカテゴリーが表示されますが、クリックすると「何も見つかりませんでした」というメッセージが表示されます。
– 「最近の投稿」ウィジェットにカスタム投稿タイプの投稿が表示されません。
これを修正する方法はありますか?
Hemang Rindani
興味深い記事です。WordPressは、企業がビジネス要件に合った効率的なウェブサイトを持つことを可能にする強力なエンタープライズウェブコンテンツ管理サービスです。使いやすく、手間のかからないツールにより、開発が容易に見えます。レスポンシブデザインからセキュリティ、拡張性まで、WordPress CMSはすべてを備えていますが、ウェブサイトに最適なツールを見つけることが重要です。
カスタム投稿タイプにカテゴリを追加することは、記事で述べられている方法が役立つ、ある投稿を別の投稿と区別するために必要になることがあります。プラグインを使用することは簡単な方法であり、技術者でない人でも実装できます。しかし、この記事を読むと、技術者でない人がコードを使用してこの機能を追加することが難しいとは思いません。
共有していただきありがとうございます。
エミリー・ジョンズ
素晴らしいヒントです。これで問題を解決する方法がわかりました。ありがとうございます!