WordPress Snippet

ワードプレスをカスタマイズしよう

カスタム投稿を、月次アーカイブ、カテゴリアーカイブで、通常の投稿と共に表示する

カスタム投稿タイプは、何かと便利ですが、テンプレートの作成等が必要になり、結構面倒な面もあります。

通常の投稿と同様に、日時アーカイブや、カテゴリアーカイブで表示してみたいと思います。

以下のフィルターでは、次のような処理を行っています。

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)

[emulsion_relate_posts]