is_post_type_archive()
は、現在のページが指定された投稿タイプのアーカイブページかどうかを判定するテンプレートタグです。投稿タイプごとの表示制御に役立ちます。
機能の説明
is_post_type_archive()
は、現在表示されているページがカスタム投稿タイプや標準投稿タイプのアーカイブページであるかを確認するために使用されます。投稿タイプに応じてテーマの表示を条件分岐させる際に便利です。
シンプルなコード例
<?php
if ( is_post_type_archive( 'books' ) ) {
echo 'This is the Books archive page.';
}
?>
このコードでは、現在のページがカスタム投稿タイプbooks
のアーカイブページの場合にメッセージを表示します。
使い方の解説
is_post_type_archive()
は、主にアーカイブテンプレートやテーマの条件分岐で使用され、特定の投稿タイプのアーカイブページに限定したカスタマイズを実現します。
引数
$post_type
(string|array)-
- 判定する投稿タイプを指定します。
- 投稿タイプ名を文字列で渡すか、複数の投稿タイプを配列で渡します。
- 引数を省略した場合、現在のページが任意の投稿タイプアーカイブであれば
true
を返します。
戻り値
bool
-
true
: 現在のページが指定した投稿タイプのアーカイブページである場合。false
: それ以外の場合。
オプション
このテンプレートタグには特定のオプションはありません。
使用例
<?php
// 複数の投稿タイプアーカイブを判定する例
if ( is_post_type_archive( array( 'books', 'movies' ) ) ) {
echo 'This is either the Books or Movies archive page.';
}
?>
このコードは、books
またはmovies
という投稿タイプのアーカイブページでメッセージを表示します。
一緒に使うことが多い関連タグ
post_type_archive_title()
post_type_archive_title()
は、投稿タイプアーカイブページのタイトルを取得するためのテンプレートタグです。
使用例
<?php
if ( is_post_type_archive( 'books' ) ) {
echo '<h1>' . post_type_archive_title( '', false ) . '</h1>';
}
?>
このコードでは、books
の投稿タイプアーカイブページで、そのページのタイトルを取得して<h1>
タグに表示します。
追加情報を取得したい場合
特定の投稿タイプに関連する情報を動的に取得したい場合は、以下のテンプレートタグを併用します。
get_post_type_archive_link()
でアーカイブページのURLを取得
<?php
$books_archive_url = get_post_type_archive_link( 'books' );
echo '<a href="' . esc_url( $books_archive_url ) . '">Books Archive</a>';
?>
books
の投稿タイプアーカイブページへのリンクを出力します。
そのテンプレートタグで出力できる情報
- URL: 指定した投稿タイプアーカイブページへのURL。
想定されるトラブル
投稿タイプアーカイブページが表示されない
- 原因: 投稿タイプを登録する際に
has_archive
がtrue
に設定されていない。 - 解決方法:
register_post_type()
でhas_archive => true
を指定します。
引数に指定した投稿タイプが存在しない
- 原因:
register_post_type()
で該当する投稿タイプが登録されていない。 - 解決方法: 投稿タイプの登録状況を確認してください。
Q&A
まとめ
is_post_type_archive()
は、特定の投稿タイプのアーカイブページを判定する便利なテンプレートタグで、テーマの条件分岐やカスタマイズに広く活用されます。
WordPressのis_post_type_archive()
を使えば、現在のページが特定の投稿タイプアーカイブページかを簡単に判定できます。