カスタム投稿タイプを作成し、投稿と同じ「カテゴリー」と「タグ」を使えるようにしても、そのままの状態だとほとんどのテーマがカテゴリーやタグのアーカイブページにカスタム投稿を表示しません。
これはarchive.phpやcategory.phpなどのテンプレートの中で使われているループが、通常の投稿を表示するものになっているからです。
カスタム投稿でも通常の投稿で使用しているカテゴリーとタグを使えるようにした場合、アーカイブページにカスタム投稿を表示してくれた方が何かと便利だと思います。というか、そうでないと投稿と同じカテゴリーやタグを使う意味がなくなってしまいますね。
そこで今回は、カテゴリーとタグのアーカイブページにカスタム投稿を含める方法を紹介いたします。
カテゴリーのアーカイブページにカスタム投稿を含める
カテゴリーのアーカイブページにカスタム投稿を含めるには、functions.phpに以下のコードを追加します。
function add_post_category_archive( $wp_query ) { if ($wp_query->is_main_query() && $wp_query->is_category()) { $wp_query->set( 'post_type', array('post','topics')); } } add_action( 'pre_get_posts', 'add_post_category_archive' , 10 , 1);
「array(‘post’,’topics’)」という記述で出力する投稿タイプを指定しています。「topics」のところには追加しているカスタム投稿タイプ名を入れてください。
上記コードを追加することで、わざわざテンプレートを修正しなくてもアーカイブページにカスタム投稿が表示されるようになります。
タグのアーカイブページにカスタム投稿を含める
タグのアーカイブページにカスタム投稿を含めるには、functions.phpに以下のコードを追加します。
function add_post_tag_archive( $wp_query ) { if ($wp_query->is_main_query() && $wp_query->is_tag()) { $wp_query->set( 'post_type', array('post','topics')); } } add_action( 'pre_get_posts', 'add_post_tag_archive' , 10 , 1)
カテゴリーと同様に「array(‘post’,’topics’)」の「topics」のところには追加しているカスタム投稿タイプ名を入れます。
これでタグのアーカイブページにもカスタム投稿が表示されるようになります。
あとがき
限定的なケースではありますが、テーマを制作している時の参考になれば幸いです。
初めまして。カスタム投稿のアーカイブページで調べていて行き着きました。まさにさがしていた内容だったのですが、上記タグを両方書き込むとfunctions-phpがエラーになってしまいます。
書き方は
で入れてエラーでした。
合わせて書く方法がわからず行き詰まってしまっています。
ご教授していただければとてもありがたいです。
宜しくお願い致します。
どんなエラーが出ているのでしょうか?
それぞれ「array(‘post’,’topics’)」という記述がありますが、「topics」のところには追加しているカスタム投稿タイプ名を入れます。ここがtopicsのままになっていないかご確認ください。
あと、結構ありがちですが、”<?php”〜”?>”の中に記述されていますか? “?>”の外側に記述すると機能しません。