こんにちわ、namaechanさん。
メニューバーの「カテゴリーA」を押した場合には、投稿タイプに関係なく全てのカテゴリーAに関連した記事を表示させる
この一文のメニューバーが何を指すのかが分からなかったのですが、プログのサイドバーというふうに勝手に解釈して、以下のようにしてみました。
■仕様
- Info というカスタム投稿タイプを作成
- Info はデフォルトのカテゴリとタグを使用して記事を分類
- カテゴリーとタグのアーカイブを表示した際に、info の記事も含まれるようにする
■functions.php
function register_post_type_infomation() {
register_post_type( 'info',
array(
'labels' => array(
'name' => __( 'Infomations' ),
'name_admin_bar' => _x( 'Infomation', 'add new on admin bar' ),
'singular_name' => __( 'Infomation' ),
),
'public' => true,
'_edit_link' => 'post.php?post=%d', /* internal use only. don't use this when registering your own post type. */
'capability_type' => 'post',
'map_meta_cap' => true,
'hierarchical' => false,
'rewrite' => array( 'slig' => 'info' ),
'query_var' => false,
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'post-formats' ),
)
);
register_taxonomy( 'post_tag', array( 'post', 'info' ),
array(
'hierarchical' => false,
'query_var' => 'tag',
)
);
register_taxonomy( 'category', array( 'post', 'info' ),
array(
'hierarchical' => true,
'query_var' => 'category_name',
)
);
}
add_action( 'init', 'register_post_type_infomation' );
function category_loop_filter( $query ) {
if ( is_admin() && ! $query->is_main_query() ) {
return;
}
if ( $query->is_category() || $query->is_tag() ) {
$query->set( 'post_type', array( 'post', 'info' ) );
}
}
add_action( 'pre_get_posts', 'category_loop_filter' );
こんな感じでいかがでしょう ?
一応 Twenty Fourteen でテストしていますが、サクッとテストしただけなのでバグとかあるかもしれません。
投稿タイプを追加した後パーマリンクの更新を行ってください。
設定内容は変更せず、更新ボタンを押下するだけでよいです。
見当違いな回答だった場合、すみません ! !