カスタム投稿タイプは、何かと便利ですが、テンプレートの作成等が必要になり、結構面倒な面もあります。
通常の投稿と同様に、日時アーカイブや、カテゴリアーカイブで表示してみたいと思います。
以下のフィルターでは、次のような処理を行っています。
1.カスタム投稿タイプの登録
codex_custom_init()で投稿タイプを登録し、フックします。
2. アーカイブで、カスタム投稿タイプを表示する設定をします
my_post_type_query() で 設定し、フックします。
3. カスタム投稿タイプで、カテゴリを使用できるように カスタム投稿タイプにカテゴリを登録します
my_add_categories_for_book()で登録し、フックします。
<?php
add_action( 'init', 'my_custom_init' );
add_action( 'pre_get_posts', 'my_post_type_query', 1 );
add_action( 'init', 'my_add_categories_for_book' );
function my_post_type_query( $query ) {
if ( is_admin() | | !$query->is_main_query() ) {
return;
}
if ( is_archive() ) {
$query->set( 'post_type', array( 'post', 'book' ) );
return;
}
}
function my_custom_init() {
$args= array(
'public'=> true,
'label' => 'Books'
);
register_post_type( 'book', $args );
}
function my_add_categories_for_book() {
register_taxonomy_for_object_type( 'category', 'book' );
}
?>
以上で、カスタム投稿タイプbookを日付アーカイブ、カテゴリアーカイブで、通常の投稿とともに表示することが出来るようになります。
- https://ja.forums.wordpress.org/topic/141522?replies=14#post-195809(b:@source)