Moral Hazard!!

ドラマーが音楽やホームページやガラクタを作るよ。

カスタム投稿でアーカイブページを作った時の分岐方法。

No Comment wordpress

wordpress3.1からカスタム投稿タイプを設定する時に、register_post_typeに「'has_archive' => true」を設定する事で、カスタム投稿用のアーカイブページがスラッグ名で作れるようになってる。

カスタム投稿タイプの設定方法

そして最近は「pre_get_posts」「is_main_query」を使って、メインのループを
「テンプレートがスッキリ綺麗」

「クエリ数が減らして速度UP」
なんて書き方がクールだとかなんとか。

ちなみに「カスタム投稿のアーカイブページ」を分岐するのには
is_post_type_archive('投稿タイプ名')
を使う。

function main_loop_check( $wp_query ) {
	if ($wp_query->is_main_query() && is_post_type_archive('movie')) {
        $wp_query->set('posts_per_page','10');
	$wp_query->set('order','ASC');
    }
}
add_action( 'pre_get_posts', 'main_loop_check' );

とすると、投稿タイプ「movie」のアーカイブテンプレートは

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<h2><?php the_title();?></h2>
<?php the_content(); ?>
<?php endwhile; endif; ?>

とquery_postsなど書かなくても反映される。

素敵。