読者です 読者をやめる 読者になる 読者になる

ファイヤードブログ

ディジタル・パブリッシングという観点から、Webサイト制作、電子書籍制作などを。※ブログリニューアル中

投稿フォーマットごとの一覧で、条件分岐タグを使用して記事数を変更する方法

WebDev WordPress

 ポイントは2つ。

  1. 投稿フォーマットに直接働きかける条件分岐タグはない。が、やや遠回りな方法で分岐させることは可能。
  2. pre_get_postsの使用。

 タイトルに書いた「投稿フォーマットに条件分岐タグを使用してフォーマットごとに記事数を変更する方法」は、この1と2の組み合わせで可能になります。今回は、1について簡単に触れて終わりにします。ちなみに、この記事はTwenty Fourteenの写経の成果の一つでもあります。
 投稿フォーマットに対する条件分岐タグは、なんとなく is_post_format('video') といようなものがありそうな気がするのですが、そんなものはありません。じゃあ、どうするかというと、答えはTwenty Fourteenの taxonomy-post_format.php に載っています。

<?php
//抜粋
<header class="archive-header">
<h1 class="archive-title">
	<?php
		if ( is_tax( 'post_format', 'post-format-aside' ) ) :
			_e( 'Asides', 'twentyfourteen' );

		elseif ( is_tax( 'post_format', 'post-format-image' ) ) :
			_e( 'Images', 'twentyfourteen' );

		elseif ( is_tax( 'post_format', 'post-format-video' ) ) :
			_e( 'Videos', 'twentyfourteen' );

		elseif ( is_tax( 'post_format', 'post-format-audio' ) ) :
			_e( 'Audio', 'twentyfourteen' );

		elseif ( is_tax( 'post_format', 'post-format-quote' ) ) :
			_e( 'Quotes', 'twentyfourteen' );

		elseif ( is_tax( 'post_format', 'post-format-link' ) ) :
			_e( 'Links', 'twentyfourteen' );

		elseif ( is_tax( 'post_format', 'post-format-gallery' ) ) :
			_e( 'Galleries', 'twentyfourteen' );

		else :
			_e( 'Archives', 'twentyfourteen' );

		endif;
	?>
</h1>
</header><!-- .archive-header -->
?>

 is_taxから始まるところを必要に応じて借りてくればOKです。どうしてis_taxで可能なのかは、WordPress Taxonomy « WordPress Codex Taxonomy関連のデータベーススキーマについて理解すると、すっと理解できるはずです。
 では、実際に、投稿フォーマット「動画」だけ一覧での表示数を12にしてみます。それは次のようなコードになります(functions.php内に記述)。

<?php
	function customize_posts_per_page( $query ) {
	    if ( is_admin() || ! $query->is_main_query() ) {
	    	return;
	    }

	    if ( is_tax( 'post_format', 'post-format-video' ) ) {
	    	$query->set( 'posts_per_page', 12 );
	    	return;
	    }
	}
	add_action( 'pre_get_posts', 'customize_posts_per_page');

?>

 以上です。そういえば、動物本初のWordPress本、手に入れましたよ。