MENU

is_post_type_archive()

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_archivetrueに設定されていない。
  • 解決方法: register_post_type()has_archive => trueを指定します。

引数に指定した投稿タイプが存在しない

  • 原因: register_post_type()で該当する投稿タイプが登録されていない。
  • 解決方法: 投稿タイプの登録状況を確認してください。

Q&A

標準投稿タイプpostでも使用できますか?

はい、標準投稿タイプpostでも使用できますが、is_home()を使う方が適切な場合もあります。

アーカイブページのURLが間違っています。どうすれば良いですか?

設定 > パーマリンク設定からパーマリンクを再保存してみてください。

まとめ

is_post_type_archive()は、特定の投稿タイプのアーカイブページを判定する便利なテンプレートタグで、テーマの条件分岐やカスタマイズに広く活用されます。

WordPressのis_post_type_archive()を使えば、現在のページが特定の投稿タイプアーカイブページかを簡単に判定できます。

よかったらシェアしてね!
  • URLをコピーしました!
目次