• このエントリーをはてなブックマークに追加

is_post_type_archiveについて

特定のカスタム投稿タイプのアーカイブ(一覧)かどうかという処理結果を使って、処理を分岐させる方法。
カスタム投稿のアーカイブで、指定したカスタム投稿タイプ名をもとに処理を分岐することができるので、あとはif文を使って分岐する。

簡単なサンプル

trueかfalseが返ってくる処理

is_post_type_archive( 'item' )

を使います。

if ( is_post_type_archive( 'item' ) ) {
// 投稿タイプ:itemの処理
}

例えば、どういった処理が考えられるか?

カスタム投稿タイプitemの表示件数を5件に変更

このように商品のカスタム投稿タイプのアーカイブだけ、表示件数を変更する際は以下の通り。

if ( is_post_type_archive( 'item' ) ) {
// 投稿タイプ:itemだけ5件ずつ表示にする
$query -> set( 'posts_per_page', 5 );
}

カスタム投稿タイプitemの表示件数を全件に変更

すべて表示する際には-1とすると、すべての投稿が表示される。

ページ送りをしないとすべて表示するには時間がかかる、数がとても多いといった時には、こういった全件表示の一覧ページを作成するといい。

if ( is_post_type_archive( 'item' ) ) {
// 投稿タイプ:itemだけ全件表示にする
$query->set( 'posts_per_page', -1 );
}

バナーなどを差し込む

テンプレートファイルはarchive.phpなどで共有化して表示したいが、itemのカスタム投稿タイプの一覧には、バナー・説明文などを差し込みたい時に、ifを使って分岐し、その中にバナーや説明文をテンプレートファイルに書き込んでおくということもあり。

例えばarchive.php

if ( is_post_type_archive( 'item' ) ) {
?>バナーや説明文をここに差し込む<?php
}

このように、テンプレートファイル内で分岐すると、その条件(itemのカスタム投稿タイプのアーカイブ)では、バナーや説明文が表示される。

パーツを読み込むというアイデア

このようにパーツを読み込むことで、コンテンツ部分のみ更新したい時は、そのファイルを更新すれば良い。archive.phpと作業分担するときには良さげ。

if ( is_post_type_archive( 'item' ) ) {
get_template_part( ‘inc/item-main’);
}