WordPressの条件分岐の関数でis_archive()とis_post_type_archive()があります。
この2つの関数の違いと使い方について、内容をまとめて詳しく解説していきます。
is_archive()とis_post_type_archive()について
is_archive()とis_post_type_archive()は共にアーカイブページであるかどうかという条件分岐のタグになります。
デフォルトの投稿(post)のアーカイブはis_archive()、カスタム投稿タイプはis_post_type_archive()というふうに、使い分けをするものとなります。
それぞれ、引数の有無などに違いがありますので、次の項目から詳しく解説していきます。
is_archive()とis_post_type_archive()の基本的な使い方
まずは、is_archive()とis_post_type_archive()の基本的な使い方を解説していきます。
<?php
if(is_archive()){
// 投稿のアーカイブページだった場合の処理
}
if(is_post_type_archive('blog')){
// カスタム投稿タイプ「blog」のアーカイブページだった場合の処理
}
?>
上記がよく使われる基本的な記述方法です。
それでは、is_archive()とis_post_type_archive()それぞれの詳しい使用例や注意点を解説いたします。
is_archiveの詳しい使用例と注意点
is_archive()はデフォルトの投稿のアーカイブページかどうかの条件分岐タグですが、その中には以下のものが含まれます。条件に合う場合にはtrue、それ以外はfalseを返します。
- カテゴリーアーカイブページ
- タグアーカイブページ
- 日付アーカイブページ(年別、月別、日別)
is_archive()の中には以下のような条件分岐タグの内包や条件分岐も可能となります。
<?php
if(is_archive()){
if(is_category()){
// カテゴリーアーカイブページだった場合の処理
} elseif(is_tag() {
// タグアーカイブページだった場合の処理
} elseif(is_date() {
// 日付アーカイブページだった場合の処理
} else {
// それ以外のアーカイブページだった場合の処理
}
if(is_tax('タクソノミー名')){
// 指定するタクソノミーのアーカイブページだった場合の処理
}
}
if(is_archive() && !is_paged()){
// 投稿のアーカイブページで1ページ目だった場合の処理
}
?>
また、is_archive()には引数はありません。
is_post_type_archiveの詳しい使用例と注意点
is_post_type_archive()はカスタム投稿タイプのアーカイブページかどうかの条件分岐タグで、引数にはカスタム投稿タイプを指定します。条件に合う場合はtrueを返し、それ以外はfalseを返します。
また、複数のカスタム投稿タイプを指定する場合array()を使用し配列で指定します。
<?php
if(is_post_type_archive()){
// カスタム投稿タイプのアーカイブページの場合の処理
}
if(is_post_type_archive('blog')){
// カスタム投稿タイプ「blog」のアーカイブページの場合の処理
}
if(is_post_type_archive(array('blog', 'news'))){
// カスタム投稿タイプ「blog」または「news」のアーカイブページの場合の処理
}
if(is_post_type_archive() && !is_paged()){
// カスタム投稿タイプのアーカイブページで1ページ目の場合の処理
}
?>
is_archive()で紹介したis_date()も内包可能ですが、is_tax()に関しては使用しても意図した反映にはならない為、独立して使用するようにしてください。
さいごに
いかがでしたでしょうか。
今回はis_archive()とis_post_type_archive()の違いと使い方について解説しました。
条件分岐のタグとしてよく使用しますので、ぜひ細かい違いも覚えて使えるようになりましょう。