WordPressのページの種類に応じて処理を分けたい時ありませんか。
「投稿ページだけ特定のCTAを設置したい」
「トップページはサイドバー無し」
「固定ページをLP仕様にしたい」
こんな時に便利なのが、WordPressの条件分岐タグです。当記事では、よく使われる30個の条件分岐タグを以下の3つのセクションに分けて解説していきます。
記事の最後には、30個の条件分岐タグをすべてまとめたチートシートを用意してますので、ぜひお役立てください。
WordPressの条件分岐タグとは?
特定の条件に応じて「真(true)」か「疑(false)」を返す関数のことです。ページの種類やコンテンツの有無など、様々な条件を簡単に判別できる関数がWordPressで定義されています。今回は、この定義済み関数を30パターン紹介していきます。
これらの関数は、PHP上で動作するので、WordPressのテーマフォルダの中のPHPファイルに記入してください。(記事の本文に書いても動きません)基本的には、以下のようにif文とセットで利用します。
<?php
// is_front_page()はトップページかどうか判別する関数
if( is_front_page() ){
// トップページのときに行う処理をここに書く
}
?>
【基本】条件分岐タグ10個
まずは、基本的なテーマ開発で必須の条件分岐タグを10個ご紹介します。どれもWordPressでよく使われるページを判別できる関数になります。
トップページ | is_front_page() | 公式ページ |
投稿アーカイブ | is_home() | 公式ページ |
個別投稿ページ | is_single() | 公式ページ |
固定ページ | is_page() | 公式ページ |
アーカイブページ | is_archive() | 公式ページ |
カテゴリーアーカイブ | is_category() | 公式ページ |
タグアーカイブ | is_tag() | 公式ページ |
検索結果ページ | is_search() | 公式ページ |
著者アーカイブ | is_author() | 公式ページ |
404ページ | is_404() | 公式ページ |
トップページ:is_front_page()
トップページを判別する時に利用します。トップページで表示したいコンテンツがあればこちらを利用してください。
<?php
if( is_front_page() ){
// トップページで実行したい処理をココに記載
}
?>
投稿アーカイブ:is_home()
投稿のアーカイブページを判別するときに使います。ただし、WordPressの表示設定によっては、トップページでもtrueを返します。
<?php
if( is_home() ){
// 投稿アーカイブで実行したい処理をココに記載
}
?>
WordPressの表示設定では、トップページの内容を「最新の投稿」か「固定ページ」か選択できますよね。「最新の投稿」を選択した場合は、トップページ = 投稿アーカイブとなるので、トップページでtrueを返します。
「固定ページ」を選択していた場合は、「投稿ページ」で指定した固定ページが投稿アーカイブとなるため、この固定ページにアクセスした際にtrueを返します。
表示設定に関しては、以下で解説してますので、ぜひご覧ください。
WordPressの設定で必ず確認しておきたいのが「表示設定」です。設定項目の数は多くありませんが、1つ1つが非常に重要ですので、当記事を参考に設定していきましょう。 表示設定とは トップページのタイプやアーカイブページで表示する記事の数、RSS、検索エンジン等の設定を行えます。「設定」>...
個別投稿ページ:is_single()
投稿で作成した記事のページを判別するときに利用します。この関数は、引数にIDやスラッグを指定できるため、特定の投稿ページだけを判別することも可能です。
<?php
// すべての投稿ページで実行したい処理をココに記載
if( is_single() ){
// 当てはまる時の処理
}
// 投稿IDが「97」のページのみ(スラッグも可)
if( is_single( 97 ) ){
// 当てはまる時の処理
}
// 投稿IDが「97、103、234」のページのみ(スラッグも可)
if( is_single( array( 97, 103, 234 ) ) ){
// 当てはまる時の処理
}
?>
対象のページが複数ある時も、配列形式で引数に指定することで対応可能です。また、is_single()は、カスタム投稿個別ページの時もtrueを返します。
固定ページ:is_page()
固定ページを判別するときに利用します。この関数も同様に引数にIDやスラッグを指定できるため、特定の固定ページだけを判別することも可能です。
<?php
// すべての固定ページで実行したい処理をココに記載
if( is_page() ){
// 当てはまる時の処理
}
// 固定ページIDが「97」のページのみ(スラッグも可)
if( is_page( 97 ) ){
// 当てはまる時の処理
}
// 固定ページIDが「97、103、234」のページのみ(スラッグも可)
if( is_page( array( 97, 103, 234 ) ) ){
// 当てはまる時の処理
}
?>
対象のページが複数ある時も、配列形式で引数に指定することで対応可能です。
アーカイブページ:is_archive()
各種アーカイブページのときに処理を実行する時に利用します。
<?php
if( is_archive() ){
// アーカイブページで実行したい処理をココに記載
}
?>
この関数は条件がかなり広く、以下のアーカイブの時にtrueを返します。ただし、投稿アーカイブはこの中に含まれていないので、注意が必要です。
- カテゴリーアーカイブ
- タグアーカイブ
- 著者アーカイブ
- 日付アーカイブ
- カスタム投稿アーカイブ
- カスタムタクソノミーアーカイブ
カテゴリーアーカイブ:is_category()
カテゴリーアーカイブの判別に利用します。この関数も同様に引数にIDやスラッグを指定できるため、特定のカテゴリーのアーカイブページだけを判別することも可能です。
<?php
// すべてのカテゴリーアーカイブで実行したい処理をココに記載
if( is_category() ){
// 当てはまる時の処理
}
// カテゴリーIDが「97」のアーカイブページのみ(スラッグも可)
if( is_category( 97 ) ){
// 当てはまる時の処理
}
// カテゴリーIDが「97、103、234」のアーカイブページのみ(スラッグも可)
if( is_category( array( 97, 103, 234 ) ) ){
// 当てはまる時の処理
}
?>
対象のページが複数ある時も、配列形式で引数に指定することで対応可能です。
タグアーカイブ:is_tag()
タグアーカイブの判別に利用します。この関数も同様に引数にIDやスラッグを指定できるため、特定のタグのアーカイブページだけを判別することも可能です。
<?php
// すべてのタグアーカイブで実行したい処理をココに記載
if( is_tag() ){
// 当てはまる時の処理
}
// タグIDが「97」のアーカイブページのみ(スラッグも可)
if( is_tag( 97 ) ){
// 当てはまる時の処理
}
// タグIDが「97、103、234」のアーカイブページのみ(スラッグも可)
if( is_tag( array( 97, 103, 234 ) ) ){
// 当てはまる時の処理
}
?>
対象のページが複数ある時も、配列形式で引数に指定することで対応可能です。
検索結果ページ:is_search()
検索結果ページかどうか判定する時は、is_search()を利用します。なお、検索フォームに入力された文字列は、get_search_query()で取得できるので、合わせて覚えておくといいですね。
<?php
if( is_search() ){
// 検索結果ページで実行したい処理をココに記載
echo '検索結果は、' . get_search_query() . 'です。';
}
?>
著者アーカイブ:is_author()
著者アーカイブの判別には、is_author()を利用します。この関数も同様に引数にIDやスラッグを指定できるため、特定の著者のアーカイブページだけを判別することも可能です。
<?php
// すべての著者アーカイブで実行したい処理をココに記載
if( is_author() ){
// 当てはまる時の処理
}
// ユーザーIDが「97」の著者アーカイブのみ(ユーザー名も可)
if( is_author( 97 ) ){
// 当てはまる時の処理
}
// ユーザーIDが「97、103、234」の著者アーカイブのみ指定(ユーザー名も可)
if( is_author( array( 97, 103, 234 ) ) ){
// 当てはまる時の処理
}
?>
対象のページが複数ある時も、配列形式で引数に指定することで対応可能です。
404ページ:is_404()
404ページかどうか判定する時は、is_404()を利用します。
<?php
if( is_404() ){
// 404ページで実行したい処理をココに記載
}
?>
【知っておくと便利】条件分岐タグ10個
ここまで紹介した条件分岐タグでも十分ですが、開発するテーマによっては、カスタム投稿や固定ページテンプレートなど、より詳細なページの判別が必要になります。そこで役に立つ条件分岐タグをさらに10個ご紹介します。
カスタム投稿個別ページ | is_singular() | 公式ページ |
カスタム投稿アーカイブ | is_post_type_archive() | 公式ページ |
カスタムタクソノミーアーカイブ | is_tax() | 公式ページ |
固定ページテンプレート | is_page_template() | 公式ページ |
アーカイブの2ページ目移行 | is_paged() | 公式ページ |
添付ファイルページ | is_attachment() | 公式ページ |
日付アーカイブ | is_date() | 公式ページ |
プライバシーポリシーページ | is_privacy_policy() | 公式ページ |
プレビューページ | is_preview() | 公式ページ |
管理画面 | is_admin() | 公式ページ |
カスタム投稿個別ページ:is_singular()
カスタム投稿の個別ページを判定する時は、is_singular()を利用します。引数に投稿タイプの名称を指定することで判定できます。
<?php
// カスタム投稿「news」の個別ページを判定する場合
if( is_singular( 'news' ) ){
// 実行したい処理をココに記載
}
// カスタム投稿「news」と「product」の個別ページを判定する場合
if( is_singular( array( 'news', 'product' ) ) ){
// 実行したい処理をココに記載
}
?>
なお、引数に何も指定しない場合は、個別投稿ページ、カスタム投稿個別ページ、固定ページのすべてのページでtrueを返します。カスタム投稿の特定の個別ページを指定する時は、is_single()の引数にIDを入力してお使いください。
<?php
// 引数に何も指定しない場合
if( is_singular() ){
// すべての個別ページが対象
}
// 投稿IDが「97」のカスタム投稿個別ページを判定する時は、is_single()を使用
if( is_single( 97 ) ){
// 当てはまる時の処理
}
?>
カスタム投稿アーカイブ:is_post_type_archive
カスタム投稿のアーカイブページを判定する時は、is_post_type_archive()を利用します。こちらも引数に投稿タイプ名を入力することで、判定できます。
<?php
// カスタム投稿「news」のアーカイブページを判定する場合
if( is_post_type_archive( 'news' ) ){
// 実行したい処理をココに記載
}
// カスタム投稿「news」と「product」のアーカイブページを判定する場合
if( is_post_type_archive( array( 'news', 'product' ) ) ){
// 実行したい処理をココに記載
}
?>
投稿タイプ名を入力しなかった場合は、すべてのカスタム投稿アーカイブページでtrueを返します。
<?php
// 引数に何も指定しない場合
if( is_post_type_archive() ){
// すべてのカスタム投稿アーカイブが対象
}
?>
カスタムタクソノミーアーカイブ:is_tax()
カスタムタクソノミーアーカイブを判定する時は、is_tax()に引数を指定して利用します。第一引数には、カスタムタクソノミーの登録名称、第二引数には、タームIDやスラッグを指定可能です。
<?php
// カスタムタクソノミー「news_category」のアーカイブページを判定する場合
if( is_tax( 'news_category' ) ){
// 実行したい処理をココに記載
}
// カスタムタクソノミー「news_category」と「product_category」のアーカイブページを判定する場合
if( is_tax( array( 'news_category', 'product_category' ) ) ){
// 実行したい処理をココに記載
}
// カスタムタクソノミー「news_category」のIDが「97」のアーカイブページのみ指定(スラッグも可)
if( is_tax( 'news_category', 97 ) ){
// 実行したい処理をココに記載
}
// カスタムタクソノミー「news_category」のIDが「97、103、234」のアーカイブページのみ指定(ユーザー名も可)
if( is_tax( 'news_category', array( 97, 103, 234 ) ) ){
// 当てはまる時の処理
}
?>
カスタムタクソノミー名を入力しなかった場合は、すべてのカスタムタクソノミーアーカイブページでtrueを返します。
<?php
// 引数に何も指定しない場合
if( is_tax() ){
// すべてのカスタムタクソノミーアーカイブが対象
}
?>
固定ページテンプレート:is_page_template()
固定ページには、カスタムテンプレートを登録できます。is_page_template()の引数にテンプレートファイルを指定することで、そのテンプレートが使われているページかどうか判定できます。
<?php
// 固定ページテンプレート「page_template.php」を判定する場合
if( is_page_template( 'page_template.php' ) ){
// 実行したい処理をココに記載
}
// 引数を指定しなければカスタムテンプレートを使用している固定ページすべてが対象
if( is_page_template() ){
// 実行したい処理をココに記載
}
?>
アーカイブの2ページ目移行:is_paged()
アーカイブページのぺージャーをクリックすると、2ページ目、3ページ目に移動しますよね。この2ページ目以降かどうか判定するのにis_paged()を使用します。
<?php
// 2ページ目以降を判定する場合
if( is_paged() ){
// 実行したい処理をココに記載
}
// 1ページ目を判定する場合
if( ! is_paged() ){
// 実行したい処理をココに記載
}
?>
添付ファイルページ:is_attachment()
メディアの添付ファイルページを判定するに利用します。添付ファイルページはis_single()にも含まれます。
<?php
if( is_attachment() ){
// 添付ファイルページで実行したい処理をココに記載
}
?>
日付アーカイブ:is_date()
投稿の日付アーカイブを判定するには、is_date()を利用します。
<?php
if( is_date() ){
// 日付アーカイブページで実行したい処理をココに記載
}
?>
なお、日付アーカイブの中には年月日のアーカイブが含まれています。それぞれ個別に条件を分けたい方は以下の関数をお使いください。
<?php
if( is_year() ){
// 年別アーカイブページで実行したい処理をココに記載
}
if( is_month() ){
// 月別アーカイブページで実行したい処理をココに記載
}
if( is_day() ){
// 日別アーカイブページで実行したい処理をココに記載
}
?>
プライバシーポリシーページ:is_privacy_policy()
WordPressのプライバシー設定で、特定の固定ページをプライバシーページに指定できます。このページを判定する時は、is_privacy_policy()を利用します。
<?php
if( is_privacy_policy() ){
// プライバシーポリシーページで実行したい処理をココに記載
}
?>
プレビューページ:is_preview()
WordPressで個別ページを作成する時に、プレビューを利用できます。このページがプレビュー中かどうか判定するときに使います。
<?php
if( is_preview() ){
// プレビュー中に実行したい処理をココに記載
}
?>
管理画面:is_admin()
現在表示されているページが、管理画面内のページかどうか判定には、is_admin()を使用します。より複雑なカスタマイズを行う場合は、かなり多用する関数になります。
<?php
if( is_admin() ){
// 管理画面のページで実行したい処理をココに記載
}
?>
【色々便利】条件分岐タグ10個
ここまでご紹介したのは、すべて特定のページを判別するための関数です。それ以外にもアイキャッチ画像やナビゲーションの有無など、様々な判別に使える条件分岐タグが用意されているので、以下の10個もぜひマスターしておきましょう。
アイキャッチが設定されているか | has_post_thumbnail() | 公式ページ |
抜粋が入力されているか | has_excerpt() | 公式ページ |
パスワード保護状態かどうか | post_password_required() | 公式ページ |
コメントが許可されているか | comments_open() | 公式ページ |
カテゴリーが選択されているか | has_category() | 公式ページ |
タグが選択されているか | has_tag() | 公式ページ |
特定のショートコードが存在するか | has_shortcode() | 公式ページ |
ナビゲーションが設定されているか | has_nav_menu() | 公式ページ |
ログイン中かどうか | is_user_logged_in() | 公式ページ |
モバイル端末かどうか | wp_is_mobile() | 公式ページ |
アイキャッチが設定されているか:has_post_thumbnail()
記事にアイキャッチ画像が設定されているか判定する時に使える関数です。以下のように、設定時はアイキャッチ画像を表示、未設定時は代替画像を表示するような使い方が主流です。なお、引数に投稿IDを指定することで、特定のページのみ判別することも可能です。
<?php
// アイキャッチが設定済みなら画像をimgタグで出力する
if( has_post_thumbnail() ){
the_post_thumbnail( 'full' );
}else{
echo '<img src="アイキャッチの代わりに表示する画像のパス">';
}
// 投稿IDが「97」のページのアイキャッチが設定済みなら画像をimgタグで出力する
if( has_post_thumbnail( 97 ) ){
echo get_the_post_thumbnail( 97, 'full' );
}
?>
なお、アイキャッチ画像の取得方法に関しては、以下の記事にもまとめてますので、ぜひご覧ください。
投稿の一覧や個別ページのヘッダーにアイキャッチ画像を表示することは多いですよね。 今回は、アイキャッチ画像を取得・表示できる関数をまとめました。事前準備から実際の活用までご紹介してますので、これから開発を始める方はぜひ参考にしてください。 アイキャッチ画像を取得するための事前準備 デフォル...
抜粋が入力されているか:has_excerpt()
記事に抜粋が記入されているか判定できる関数です。記事一覧で、入力済みなら抜粋文を表示するなどの用途で使われます。
<?php
// 抜粋が入力済みなら抜粋文を表示
if( has_excerpt() ){
the_excerpt();
}
// 投稿IDが「97」のページの抜粋が入力済みなら抜粋文を表示
if( has_excerpt( 97 ) ){
echo get_the_excerpt( 97 );
}
?>
パスワード保護状態かどうか:post_password_required()
投稿がパスワード保護が有効化されているか判定する時に使います。使う機会は少ないですが、パスワード保護ページをカスタマイズする際に利用します。
<?php
if( post_password_required() ){
// パスワード保護中に表示したい処理をココに記載
}
// 投稿IDが「97」のページに限定する場合
if( post_password_required( 97 ) ){
// パスワード保護中に表示したい処理をココに記載
}
?>
パスワード保護ページのカスタマイズ方法に関しては、以下の記事でもご紹介してますので、ぜひ参考にしてください。
WordPressでは記事を公開する際に、公開状態をパスワード保護に設定すると、パスワードを知っている人のみが閲覧できる「保護ページ」という機能があります。保護ページを使うことで、コンテンツを限定した人だけに公開することができます。 保護ページはよく使うかと言うと、あまり使われない機能だと思い...
コメントが許可されているか:comments_open()
投稿のコメントが許可されているか判定する時に使います。WordPressのコメントフォームを自作する時などに利用します。
<?php
if( comments_open() ){
// コメントが許可されている時の処理をココに記載
}
// 投稿IDが「97」のページに限定する場合
if( comments_open( 97 ) ){
// コメントが許可されている時の処理をココに記載
}
?>
カテゴリーが選択されているか:has_category()
投稿が特定のカテゴリーに属しているかどうか調べるために使います。引数にカテゴリーのIDやスラッグを記入することで、特定のカテゴリーがその記事に属するかも判定可能です。
<?php
// カテゴリーが設定されていたらカテゴリー一覧を表示
if( has_category() ){
the_category();
}
// 特定のカテゴリー(ID:97)が記事に属するか調べる
if( has_category( 97 ) ){
// 当てはまる場合の処理をココ
}
?>
なお、カテゴリーの取得方法に関しては、以下の記事で解説してますので、ご覧ください。
既存テーマのカスタマイズやクライアントワーク等、投稿のカテゴリーに関する情報を取得して、様々なコンテンツを作成・編集したいケースがあります。 今回は、これからWordPress開発を始める方向けに、カテゴリーを取得する関数を用途別に分類してみました。 はじめは、どの関数を使えばどの情報を...
タグが選択されているか:has_tag()
投稿が特定のタグに属しているかどうか調べるために使います。引数にタグのIDやスラッグを記入することで、特定のタグが属するかも判定可能です。
<?php
// タグが設定されていたらタグ一覧を表示
if( has_tag() ){
the_tags();
}
// 特定のタグ(ID:97)が記事に属するか調べる
if( has_tag( 97 ) ){
// 当てはまる場合の処理をココ
}
?>
特定のショートコードが存在するか:has_shortcode()
記事の中に特定のショートコードが存在するか調べる時に使います。
<?php
// 本文の中にショートコード[cardlink]があるか調べる
global $post;
if( has_shortcode( $post->post_content, 'cardlink' ) ){
// ショートコードが存在した時の処理
}
?>
ナビゲーションが設定されているか:has_nav_menu()
引数にメニューの位置を指定することで、特定のナビゲーションメニューが存在するか判定することができます。
<?php
// メニューの位置が「global-nav」のナビゲーションを表示する
if( has_nav_menu( 'global-nav' ) ){
wp_nav_menu( array( 'theme_location' => 'global-nav' ) );
}
?>
ナビゲーションメニューを表示する方法については以下の記事で詳しく解説してます。
WordPressでは、外観 > メニューでヘッダーやフッター等のナビゲーションを登録できますよね。これらを表示する時に使うのが、WordPressのテンプレートタグ「wp_nav_menu()」です。 当記事では、この関数の基本的な使い方〜カスタマイズ方法までご紹介します。記事の最後には、...
ログイン中かどうか:is_user_logged_in()
ユーザーがログイン中かどうか判定する時に使います。基本的には、会員サイトでユーザーのログイン状態によって表示コンテンツを切り替える時に利用します。
<?php
if( is_user_logged_in() ){
// ログイン中のユーザー向けの内容をココ
}else{
// ログアウト中のユーザー向けの内容をココ
}
?>
モバイル端末かどうか:wp_is_mobile()
端末情報を取得して、スマートフォンやタブレットからのアクセスかどうかを判別できます。汎用性がかなり高い関数になりますので、非常に便利です。
<?php
if( wp_is_mobile() ){
// モバイル端末(タブレット含む)向けの処理をココに記載
}else{
// PC向けの処理をココに記載
}
?>
まとめ
WordPressで使える条件分岐タグをご紹介しました。特に最初にご紹介した10個に関しては、テーマ開発で必須の関数になりますので覚えておきましょう。
最後に今回ご紹介した条件分岐タグを30個すべて表にまとめてますので、チートシートとしてお使いいただければ幸いです。
トップページ | is_front_page() | 公式ページ |
投稿アーカイブ | is_home() | 公式ページ |
個別投稿ページ | is_single() | 公式ページ |
固定ページ | is_page() | 公式ページ |
アーカイブページ | is_archive() | 公式ページ |
カテゴリーアーカイブ | is_category() | 公式ページ |
タグアーカイブ | is_tag() | 公式ページ |
検索結果ページ | is_search() | 公式ページ |
著者アーカイブ | is_author() | 公式ページ |
404ページ | is_404() | 公式ページ |
カスタム投稿個別ページ | is_singular() | 公式ページ |
カスタム投稿アーカイブ | is_post_type_archive() | 公式ページ |
カスタムタクソノミーアーカイブ | is_tax() | 公式ページ |
固定ページテンプレート | is_page_template() | 公式ページ |
アーカイブの2ページ目移行 | is_paged() | 公式ページ |
添付ファイルページ | is_attachment() | 公式ページ |
日付アーカイブ | is_date() | 公式ページ |
プライバシーポリシーページ | is_privacy_policy() | 公式ページ |
プレビューページ | is_preview() | 公式ページ |
管理画面 | is_admin() | 公式ページ |
アイキャッチが設定されているか | has_post_thumbnail() | 公式ページ |
抜粋が入力されているか | has_excerpt() | 公式ページ |
パスワード保護状態かどうか | post_password_required() | 公式ページ |
コメントが許可されているか | comments_open() | 公式ページ |
カテゴリーが選択されているか | has_category() | 公式ページ |
タグが選択されているか | has_tag() | 公式ページ |
特定のショートコードが存在するか | has_shortcode() | 公式ページ |
ナビゲーションが設定されているか | has_nav_menu() | 公式ページ |
ログイン中かどうか | is_user_logged_in() | 公式ページ |
モバイル端末かどうか | wp_is_mobile() | 公式ページ |
コメント