WordPressの条件分岐タグでページを判別する

WordPressの条件分岐タグでページを判別する


WordPressでサイト制作をしているうちに、「トップページだけサイドバーを非表示にしたい」や、「固定ページや個別投稿ページではサイドバーを表示したい」など、そのページごとに処理を変える必要が出てきます。
そんなときは、WordPress条件分岐タグを使って、現在のページを判別し、表示するものを切り替えたほうが、効率的です。

WordPress関連記事

if文で条件分岐をつくる

WordPressの条件分岐タグで判別した結果で出力を変更するには、if文で分岐させます。

if(条件1){
  条件1に当てはまる場合
}elseif(条件2){
  条件2に当てはまる場合
}else{
  条件1にも条件2にも当てはまらない場合
}

フロントページと投稿ページ

フロントページと投稿ページを判別する場合、is_front_page()やis_home()を使用します。

設定 > 表示設定の「ホームページの表示(フロントページの表示)」が、
「最新の投稿」を設定している場合、ホームページ(フロントページ)ではis_front_page()・is_home()の両方とも、trueになります。

is_front_page()

「固定ページ」を設定している場合、ホームページ(フロントページ)ではis_front_page()が、trueになります。

is_home()

「固定ページ」を設定している場合、投稿ページではis_home()が、trueになります。

条件分岐タグの書き方

PHP

if ( is_front_page() && is_home() ) {
  // デフォルトのフロントページ
} elseif ( is_front_page() ) {
  // 固定ペーシを使ったフロントページ
} elseif ( is_home() ) {
  // 固定ペーシを使った投稿ページ
} else {
  // それ以外
}

シングルページ

is_single($page)

個別投稿のページ(または添付ファイルページ・カスタム投稿タイプの個別ページ)が表示されている場合に、trueになります。

引数には、IDスラッグタイトル名で指定できます。
また、複数指定したい場合は、それらを配列で指定することもできます。

PHP

is_single(); // 個別投稿ページ
is_single( '5' ); // 記事IDが5
is_single( 'Q&A' ); // タイトル名がQ&A
is_single( 'fa' ); // スラッグがfa
is_single( array( '5', 'Q&A' ) ); // 記事IDが5 もしくは、タイトル名がQ&A

is_page($page)

固定ページが表示されている場合に、trueになります。

引数には、IDスラッグタイトル名で指定できます。
また、複数指定したい場合は、それらを配列で指定することもできます。

PHP

is_page(); // 固定ページ
is_page( '5' ); // 固定ページのIDが5
is_page( 'Q&A' ); // タイトル名がQ&A
is_page( 'fa' ); // スラッグがfa
is_page( array( '5', 'Q&A' ) ); // 固定ページのIDが7 もしくは、タイトル名がQ&A
// 固定ページが子ページかどうか判別したい場合
if ( is_page() && $post->post_parent > 0 ) {}

is_attachment()

投稿ページまたは固定ページの添付ファイルが表示されている場合に、trueになります。

PHP

is_attachment(); // 添付ファイルが表示されている場合

is_singular($post_types)

is_single()、is_page()、is_attachment()のいずれかがtrueである場合に、trueになります。

引数には、投稿タイプで指定できます。
また、複数指定したい場合は、それらを配列で指定することもできます。

PHP

is_singular(); // 個別の投稿
is_singular( 'post' ); // デフォルトの投稿タイプ
is_singular( 'fa' ); // カスタム投稿タイプ(fa)
is_singular( array( 'fa', 'news' ) ); // カスタム投稿タイプのfa もしくは、news

アーカイブページ

is_post_type_archive($post_types)

引数の投稿タイプのアーカイブページの場合に、trueになります。
引数がない場合、カスタム投稿タイプのアーカイブの場合に、trueになります。

PHP

is_post_type_archive(); // カスタム投稿タイプのアーカイブ
is_post_type_archive( 'news' ); // カスタム投稿タイプ(news)のアーカイブ

is_category($category)

カテゴリーのアーカイブページが表示されている場合に、trueになります。

引数には、IDスラッグカテゴリー名で指定できます。
また、複数指定したい場合は、それらを配列で指定することもできます。

PHP

is_category(); // カテゴリーのアーカイブページ
is_category( '5' ); // カテゴリーIDが5
is_category( '商品' ); // カテゴリー名が商品
is_category( 'items' ); // スラッグがitems
is_category( array( '5', '商品' ) ); // カテゴリーIDが5 もしくは、カテゴリー名が商品

is_tag($tag)

タグのアーカイブページが表示されている場合に、trueになります。

引数には、IDスラッグタグ名で指定できます。
また、複数指定したい場合は、それらを配列で指定することもできます。

PHP

is_tag(); // タグのアーカイブページ
is_tag( '5' ); // タグIDが5
is_tag( 'シューズ' ); // タグ名がシューズ
is_tag( 'shoes' ); // スラッグがshoes
is_tag( array( '5', 'シューズ' ) ); // タグIDが5 もしくは、タグ名がシューズ

is_tax($taxonomy, $term)

タクソノミーのアーカイブページが表示されている場合に、trueになります。
第一引数には、タクソノミーのスラッグで指定できます。
第二引数には、IDスラッグターム名で指定できます。
また、どちらも複数指定したい場合は、それらを配列で指定することもできます。

PHP

is_tax(); // タクソノミーのアーカイブページ
is_tax( 'news' ); // タクソノミーのスラッグがnews
is_tax( 'news', '5' ); // タクソノミーのスラッグがnewsで、タームIDが5
is_tax( 'news', 'news-cat' ); // タクソノミーのスラッグがnewsで、タームのスラッグがnews-cat

is_author($author)

投稿者のアーカイブページが表示されている場合に、trueになります。
引数には、ID投稿者名で指定できます。

PHP

is_author(); // 投稿者のアーカイブページが表示されている場合
is_author( '2' ); // 投稿者IDが2の場合
is_author( 'beyo' ); // 投稿者名がbeyoの場合

is_year()

年別アーカイブページが表示されている場合に、trueになります。

PHP

is_year(); // 年別アーカイブページが表示されている場合

is_month()

月別アーカイブページが表示されている場合に、trueになります。

PHP

is_month(); // 月別アーカイブページが表示されている場合

is_date()

年別や月別など、日付に関するアーカイブページが表示されている場合に、trueになります。

PHP

is_date(); // 日付に関するアーカイブページが表示されている場合

is_archive()

各アーカイブページが表示されている場合に、trueになります。
アーカイブページにはカテゴリー、タグ、作成者、日付別、カスタム投稿タイプのアーカイブ、タクソノミー項目が対象になります。

PHP

is_archive() // アーカイブページが表示されている場合

検索結果と404ページ

is_search()

検索結果のページが表示されている場合に、trueになります。

PHP

is_search() // 検索結果のページが表示されている場合

is_404()

404エラーが表示されている場合に、trueになります。

PHP

is_404() // 404エラーが表示されている場合

モバイル(スマホ・タブレット)

wp_is_mobile()

モバイル(スマホ・タブレット)の場合に、trueになります。

PHP

wp_is_mobile() // モバイル(スマホ・タブレット)の場合

コメント

タイトルとURLをコピーしました