• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

条件分岐タグ

提供: WordPress Codex 日本語版
2014年7月10日 (木) 12:20時点におけるNao (トーク | 投稿記録)による版 (2014-07-09T22:09:49 Nao 版に更新、一部翻訳。)

移動先: 案内検索

このページ「条件分岐タグ」は一部未翻訳です。和訳や日本語情報を加筆してくださる協力者を求めています

目次

はじめに

条件分岐タグ (Conditional Tag) は、テンプレートファイル内で表示される内容や、特定のページ内容を表示する条件を設定するのに使います。例えば、ブログのホームページの上部に短い文を表示させたいとしましょう。is_home()を使えば、簡単に実行できます。

これらのタグはテンプレート階層と深い関わりがあります。

注: 条件分岐タグが使えるのは WordPress の posts_selection アクションフックの後のみです (wp アクションフックはこれらの条件分岐を使える最初のものです)。テーマの function.php 本文内 (関数の外) では正しく動作しません。

条件の判定

条件分岐タグは、現在のページが指定した条件に合致するかどうかをチェックし、true もしくは false を返します。以下の条件分岐タグの説明では、true 値が返される場合の説明をしています。また、タグで引数が使える場合は追記してあります。

ブログページ

is_front_page()is_home() 

ブログページ用の条件分岐タグはありません。is_home()is_front_page() の両方を使ってこのページを検出する必要がありますが、これらの関数は間違って使われがちです。実際に、ユーザーがある固定ページをホームページとして定義し、別の固定ページでブログを表示するということもあります。この場合ブログページがホームページではないにも関わらず is_home() 関数で true を返します。以下はユーザーが定義できる設定の例です。

  • デフォルトホームページ (最新の投稿を含む)
  • 固定ホームページ、ブログページなし
  • 固定ホームページとブログページ

is_home()is_front_page() を使う場合はバグを防ぐために正しい順序で表記し、すべてのユーザー設定をテストする必要があります。

if ( is_front_page() && is_home() ) {
// デフォルトホームページ
} elseif ( is_front_page() ) {
// 固定ペーを使ったホームページ
} elseif ( is_home() ) {
// ブログページ
} else {
// それ以外
}

メインページ

is_home() 
メインブログページが表示されている場合。これは、サイトにある時系列のブログコンテンツを表示するページです。もしあなたがフロントページに固定ページを設定していた場合(以下を参照)、Administration > Settings > Readingであなたが「投稿ページ」として設定したページでのみ、trueになります。

フロントページ

is_front_page() 
投稿・固定ページにかかわらず、サイトのフロントページが表示されている場合。
true を返すのは、表示設定の「トップページの表示」として
  • 「最新の投稿」を設定している場合には、メインブログページが表示されるとき
  • 「固定ページ (以下を選択)」を設定している場合には、「フロントページ」として選択した固定ページが表示されるとき


管理パネル

is_admin()
ダッシュボードまたは管理パネルが表示されている場合。

注': wp-login.php ページは管理パネル内のページではない。このページが表示されているかを確認するには、管理グローバル変数$pagenow を使う。

管理バー

is_admin_bar_showing() 
管理バーが表示されている場合 true を返す。

 : 管理バー表示をコントロールするには show_admin_bar() を使う。この関数は plugins_loaded の後ですぐ呼び出すか、テーマの functions.php ファイルに含める。

個別投稿ページ

is_single() 
個別投稿のページ(または添付ファイルページ・カスタム投稿タイプの個別ページ)が表示されている場合。固定ページには適用されない。
is_single( '17' ) 
ID 17の投稿が表示されている場合。
is_single( 'Irish Stew' ) 
"Irish Stew" というタイトルの投稿が表示されている場合。
is_single( 'beef-stew' ) 
"beef-stew" という投稿スラッグの投稿が表示されている場合。
is_single( array( 17, 'beef-stew', 'Irish Stew' ) ) 
ID が 17、投稿スラッグが "beef-stew"、またはタイトルが "Irish Stew" のいずれかにあてはまる投稿が表示されている場合。
is_single( array( 17, 19, 1, 11 ) ) 
シングルポストのpost IDが17か19か1か11かのどちらかの場合。
is_single( array( 'beef-stew', 'pea-soup', 'chili' ) ) 
シングルポストのpost_nameが"beef-stew"、"pea-soup" または"chili"のいずれかの場合
is_single( array( 'Beef Stew', 'Pea Soup', 'Chili' ) ) 
シングルポストはpost_titleが "Beef Stew"、"Pea Soup"または"Chili"のいずれかの場合

注: この関数は投稿 ID、投稿タイトル、または投稿名を区別しません。投稿 ID が「17」の投稿をリクエストした場合、タイトルや投稿スラッグが「17」の投稿が表示されることがあります。

先頭固定表示の投稿

is_sticky() 
投稿編集ページで「この投稿を先頭に固定表示」のチェックボックスがついている投稿が表示されている場合。もし ID 変数が指定されていない場合、投稿 ID は WordPress ループの投稿のものになる。
is_sticky( '17' ) 
ID 17 の投稿が先頭固定表示の場合、真を返す。

階層を持つ投稿タイプ

is_post_type_hierarchical($post_type) 
この条件分岐タグは、その投稿タイプが階層型かどうかチェックします。これはブール関数であり、TRUEかFALSEを返します(FALSEは、その投稿タイプが存在しないことを意味するかもしれません)。

最初にその投稿タイプが存在することをチェックします。そして投稿タイプのオブジェクトを取得し、最終的にそのオブジェクト内の階層型かどうかの値を返します。

投稿タイプアーカイブ

is_post_type_archive() 
現在のクエリが、引数に与えられた投稿タイプのアーカイブページのものかどうかチェックする。
is_post_type_archive( $post_type ) 
$post_type に一致する投稿タイプアーカイブページの場合に true を返す。
is_post_type_archive( array( 'foo', 'bar', 'baz' ) ) 
投稿タイプアーカイブページが "foo"/"bar"/"baz" いずれかに一致する場合に true を返す。

投稿タイプアーカイブを有効にするには、その投稿タイプを登録する際に 'has_archive' => true を使う。

コメントポップアップ

is_comments_popup() 
コメントポップアップウィンドウが表示されている場合。

投稿を含むページ

comments_open()
WordPress ループ内で処理中の投稿がコメント受信を受け付けている場合。
pings_open()
WordPress ループ内で処理中の投稿がピン(ピンバックおよびトラックバック)を受け付けている場合。

WordPress ページ

ここでいう「ページ」とは、WordPressにおける固定ページのことで、いわゆる「Web ページ」とは異なります。つまり、post_type が 'page' となっているもののことです。詳しくは、「用語について」をご覧ください。

is_page() 
固定ページが表示されている場合。
is_page( '42' ) 
ID 42の固定ページが表示されている場合。
is_page( 'About Me And Joe' ) 
"About Me And Joe"というタイトルの固定ページが表示されている場合。
is_page( 'about-me' ) 
"about-me"という投稿スラッグの固定ページが表示されている場合。
is_page( array( 42, 'about-me', 'About Me And Joe' ) ) 
ID が 42、投稿スラッグが "about-me"、またはタイトルが "About Me And Joe" のいずれかにあてはまる固定ページが表示されている場合。
is_page( array( 42, 54, 6 ) ) 
ID が 42、54、または6のいずれかの固定ページが表示されている場合。

他のスニペットについては is_page() を参照。

: 固定ページがサブページかどうかをチェックする関数はありません。この問題を解決するには以下を参考にしてください。

if ( is_page() && $post->post_parent > 0 ) {
    echo "これは子ページです";
}

ページテンプレート

この条件分岐タグを使うと、特定のページテンプレートを使っているかどうかをチェックできます。

is_page_template() 
ページテンプレートが使われている場合。
is_page_template('about.php') 
"about" というページテンプレートが使われている場合。

: ファイルがサブディレクトリにある場合はファイル名のみだけではなくパスも含める必要があります。例: page-templates/about.php

カテゴリーページ

is_category() 
ページが $category カテゴリーと関連付けられている場合。
is_category( '9' ) 
カテゴリーID 9のアーカイブページが表示されている場合。
is_category( 'Stinky Cheeses' ) 
"Stinky Cheeses"というカテゴリーのアーカイブページが表示されている場合。
is_category( 'blue-cheese' ) 
"blue-cheese"というカテゴリースラッグのアーカイブページが表示されている場合。
is_category( array( 9, 'blue-cheese', 'Stinky Cheeses' ) ) 
投稿のカテゴリーが term_ID 9、スラッグが "blue-cheese" の場合、カテゴリー名が "Stinky Cheeses" のいずれかにあてはまる場合、真を返す。
in_category( '5' ) 
(注: in_category です。) 現在の投稿がカテゴリーID 5に属する場合に true を返します。 詳細
in_category( array( 1,2,3 ) ) 
現在の記事が、カテゴリID 1、2、3のいずれかに属している場合は true を返します。
! in_category( array( 4,5,6 ) ) 
現在の記事が、カテゴリID 4、5、6のいずれにも属していない場合は true を返します。先頭に「!」が付くことに注目してください。

注意: テストの際にはスペリングをしっかりチェックしましょう。"is" と "in" では意味が大きく異なります。

is_archive()カテゴリーテンプレートも参照してください。

タグページ

is_tag() 
タグのアーカイブページが表示されている場合。
is_tag( 'mild' ) 
'mild' というスラッグのついたタグのアーカイブページが表示されている場合。
is_tag( array( 'sharp', 'mild', 'extreme' ) ) 
'sharp' または 'mild' または 'extreme' というスラッグのついたタグのアーカイブページが表示されている場合。
has_tag() 
タグのある投稿がループ内で表示されている場合。バージョン2.7以前ではループ内で使う必要がある。
has_tag( 'mild' ) 
'mild' というタグのある投稿が表示されている場合。
has_tag( array( 'sharp', 'mild', 'extreme' ) ) 
配列内のいずれかのタグのある投稿が表示されている場合。

is_archive()タグテンプレート/en もあわせてお読みください。

タクソノミーページ (その他関連するもの)

is_tax

is_tax() 
タクソノミーのアーカイブページが表示されている場合。
is_tax( 'flavor' ) 
'flavor' というスラッグのついたタクソノミーのアーカイブページが表示されている場合。
is_tax( 'flavor', array( 'sharp', 'mild', 'extreme' ) ) 
'sharp' または 'mild' または 'extreme' というスラッグのついた flavor タクソノミーのアーカイブページが表示されている場合。

is_archive() もあわせてお読みください。

has_term

has_term() 
Check if the current post has any of given terms. The first parameter should be an empty string. It expects a taxonomy slug/name as a second parameter.
has_term( 'green', 'color' ) 
When the current post has the term 'green' from taxonomy 'color'.
has_term( array( 'green', 'orange', 'blue' ), 'color' ) 
When the current post has any of the terms in the array.

term_exists

term_exists( $term, $taxonomy, $parent ) 
Returns true if $term exists in any taxonomy. If $taxonomy is given, the term must exist in this one. The 3rd parameter $parent is also optionnal, if given, the term have to be a child of this parent, the taxonomy must be hierarchical.

is_taxonomy_hierarchical

is_taxonomy_hierarchical( $taxonomy ) 
Returns true is the taxonomy $taxonomy is hierarchical. To declare a taxonomie hierarchical, use 'hierarchical' => true when using register_taxonomy().

taxonomy_exists

taxonomy_exists( $taxonomy ) 
あるタクソノミーが register_taxonomy() を使って登録されている場合 true を返す。

is_archive() もあわせてお読みください。

作成者ページ

is_author() 
作成者のアーカイブページが表示されている場合。
is_author( '4' ) 
ID 4 の作成者のアーカイブページを表示している場合。
is_author( 'Vivian' ) 
ニックネームが"Vivian"のアーカイブページを表示している場合。
is_author( 'john-jones' ) 
"john-jones" という「ナイスネーム」を持つ作成者のアーカイブページを表示している場合。
is_author( array( 4, 'john-jones' , 'Vivian' ) ) 
ID が4、ナイスネームが "john-jones"、またはニックネームが "Vivian" という作成者のアーカイブページを表示している場合。

is_archive()作成者テンプレート/en もあわせてお読みください。

作成者ページ

is_multi_author() 
サイト上に一人以上投稿を公開しているユーザーがいる場合。バージョン 3.2 から導入された。

is_archive()作成者テンプレート/en もあわせてお読みください。

日付別ページ

is_date() 
日付別のアーカイブページのいずれかが表示されている場合。(例:月別、年別、日別、時間別)
is_year() 
年別のアーカイブページが表示されている場合。
is_month() 
月別のアーカイブページが表示されている場合。
is_time() 
毎時別、毎分別、毎秒別のアーカイブページが表示されている場合。
is_new_day() 
投稿の日付が新しい日の場合。ループ内で使う。

is_archive() もあわせてお読みください。

アーカイブページ

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

検索結果ページ

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

404 Not Found ページ

is_404() 
"HTTP 404: Not Found"エラーページが表示されている場合。

複数にわたるページ

is_paged() 
表示中のページが複数のページにわたる場合。これは例えばアーカイブページやメインページに表示する投稿数よりも多い投稿があり、複数ページに分かれているときを指し、2ページ目以降のときに true を返します。ただし、1つの投稿や固定ページの本文が <!--nextpage--> クイックタグで複数ページに分けられている場合は当てはまりません。投稿または固定ページが <!--nextpage--> クイックタグを使って分割されているかどうか調べるには、複数にわたるページの一部かどうかをチェックするをご覧ください。

添付ファイルページ

is_attachment() 
投稿または固定ページの添付ファイルが表示されている場合。添付ファイルは、投稿画面のメディアアップロード機能を使ってアップロードした画像などのファイルの事で、テンプレートを使って独自のページ内に表示できます。

詳しくは 画像や添付ファイルの使い方/en もご覧ください。

画像の添付ファイル

wp_attachment_is_image( $post_id ) 
投稿 ID が $post_id と一致する投稿の添付ファイルが画像の場合 true を返す。許可されている Mime 形式および拡張子は以下のとおり: .jpg, .jpeg, .gif, et .png.

ローカル添付ファイル

is_local_attachment( $url ) 
Returns true if the link passed in $url is a real attachment file from this site.

シングルページ (固定ページ、個別投稿ページ、添付ファイルページ)

is_singular() 
is_single()is_page()is_attachment() のいずれかが真である場合に true を返す。
is_singular( 'foo' ) 
'foo' というカスタム投稿タイプの場合に true を返す。
is_singular( array( 'foo', 'bar', 'baz' ) ) 
'foo'/'bar'/'baz' というカスタム投稿タイプの投稿を表示している場合に true を返す。

カスタム投稿タイプも参照。

登録済み投稿タイプ

post_type_exists( $post_type ) 
指定した $post_typeregister_post_type() を使ってこのサイトに登録されている場合に true を返す。

メインクエリ

is_main_query()
現在のクエリ (ループ内など) が「メイン」クエリの場合に true を返す。

フィルターフック the_content を使った例

add_action( 'the_content', 'baw_add_social_buttons' );
function baw_add_social_buttons( $content ) {
    if ( ! is_admin() && is_main_query() ) {
        return $content . function_from_a_social_plugin();
    }
    return $content;
}

WordPress が各投稿のコンテンツをループ内または個別投稿ページで表示しようとした際に、それがメインクエリ内であり管理画面ではない場合、(例えば) ソーシャルボタンを表示する。

アクションフック pre_get_posts を使った例

add_action( 'pre_get_posts', 'baw_modify_query_exclude_category' );
function baw_modify_query_exclude_category( $query ) {
    if ( ! is_admin() && $query->is_main_query() && ! $query->get( 'cat' ) ) {
        $query->set( 'cat', '-5' );
    }
}

pre_get_posts を使って直接 is_main_query を呼び出すことはできないため、引数として $query を使う。

新しい日付

is_new_day() 
新しい日付の場合 true を返す。

フィード

is_feed() 
Syndication(フィード)がリクエストされた場合。
このタグは通常、一般のユーザーがページを表示しているときに条件を判断するためではなく、プラグイン開発の際に WordPress 内部で使われます。

トラックバック

is_trackback() 
フックの中にトラックバックの機構が組み込まれている場合。
このタグは通常、一般のユーザーがページを表示しているときに条件を判断するためではなく、プラグイン開発の際に WordPress 内部で使われます。

プレビュー

is_preview() 
未公開モードで固定リンクページを表示している場合。

抜粋あり

has_excerpt() 
投稿に (手動で書かれた) 抜粋がある場合。
has_excerpt( '42' ) 
投稿 ID 42 の投稿に抜粋がある場合。

ナビゲーションメニュー割り当てあり

has_nav_menu() 
登録済みのナビゲーションメニューロケーションにメニューが割り当てられている場合に true を返す。

register_nav_menu() も参照。

ループ内

in_the_loop() 
ループ内かどうかをチェックする。ループ内にあった場合真を返すので、プラグイン作者に便利。

ダイナミックサイドバー対応

is_dynamic_sidebar() 
テーマがダイナミックサイドバーに対応している場合 true を返す。

サイドバー使用中

is_active_sidebar() 
指定したサイドバーが使用中の場合、true を返す。サイドバー名、ID を指定できる。

: サイドバーのコンテンツを表示するには dynamic_sidebar( $sidebar ) を使う。

ウィジェット使用中

is_active_widget( $widget_callback, $widget_id ) 
$widget_callback というコールバックのウィジェットまたは ID$widget_id フロントエンドに表示される場合に true を返す。

 : To be effective this function has to run after widgets have initialized, at action 'init' or later, see Action Reference.

ブログインストール済み

is_blog_installed() 
現在のブログが適切にインストールされている場合 true を返す。

: The cache will be checked first. If you have a cache plugin, which saves the cache values, then this will work. If you use the default WordPress cache, and the database goes away, then you might have problems.

RTL 読み

is_rtl() 
現在のロケールが右から左に読まれるものの場合 true を返す。

 if ( is_rtl() ) {
   wp_enqueue_style(  'style-rtl',  plugins_url( '/css/style-rtl.css', __FILE__ ) );
   wp_enqueue_script( 'script-rtl', plugins_url( '/js/script-rtl.js',  __FILE__ ) );
 }

ネットワークの一部(マルチサイト)

is_multisite is_multisite() 
現在のサイトがマルチサイトインストールの一部かどうかチェックする。

メインサイト(マルチサイト)

is_main_site() 
サイトがネットワークのメインサイトかどうかチェックする。

ネットワークの管理者(マルチサイト)

is_super_admin() 
ユーザーがネットワークの特権管理者かどうかをチェックする。

ユーザーログイン済み

is_user_logged_in() 
権限グループに関わらず、ユーザーの誰かがログイン中の場合 true を返す。

既存メール

email_exists( $email ) 
Check whether or not the given email address $email has already been registered to a username, and returns that user's ID or false if does not exists.

既存ユーザー名

username_exists( $username ) 
Check whether or not the given username $username has already been registered to a username, and returns that user's ID or false if does not exists.

有効化済みプラグイン

is_plugin_active( $path ) 
プラグインが有効化されているかチェックする。
is_plugin_active( 'akismet/akismet.php' ) 
Checks if Akismet is activated.
is_plugin_inactive( $path ) 
Checks if a plugin is deactivated. Same as ! is_plugin_active( $path ).
is_plugin_active_for_network( $path ) 
Same thing for a network activation on a multisite installation.
is_plugin_page() 
Returns true if the loaded page, admin side is a plugin's one. This function is deprecated depuis since WordPress 3.1, with no known alternative.

子テーマ

is_child_theme() 
子テーマが使われているかどうかチェックする。

機能対応のテーマ

current_theme_supports() 
テーマに機能が存在するかチェックする。
current_theme_support( 'post-thumbnails' ) 
Returns true if the current theme supports featured images. To add a theme support functionality, use add_theme_support().

アイキャッチ画像あり

has_post_thumbnail( $post_id ) 
Returns true if the post with ID equal to $post_id contains a featured image. Theme should support Featured Images, see above.

スクリプト使用中

wp_script_is( $handle, $list ) 
Returns true if the script with handle is $handle has been 'registered', 'enqueue/queue', 'done', ou 'to_do' depending on $list.

Example

    $handle = 'fluidVids.js';
    $list = 'enqueued';
      if ( wp_script_is( $handle, $list ) ) {
        return;
      } else {
        wp_register_script( 'fluidVids.js', plugin_dir_url(__FILE__).'js/fluidvids.min.js');
        wp_enqueue_script( 'fluidVids.js' );
      }

This would check if the script named 'fluidVids.js' is enqueued. If it is not enqueued, the files are then registered and enqueued.


動作サンプル

以下は条件分岐タグの動作サンプルです。

個別投稿

以下はis_single()によって特定の情報を個別投稿のページでのみ表示させるための例文です。

if ( is_single() ) {
   echo 'この投稿は' . get_the_title() . 'カテゴリーに属しています';
}

Add this custom function to your child themes functions.php file and modify the conditional tag to suit your needs.

add_action( 'loop_start', 'add_to_single_posts' );
function add_to_single_posts() {
if ( is_singular('post') ) {
echo'<div class="your-class">Your Text or HTML</div>';
    }
}

Another example of how to use Conditional Tags in the Loop. Choose to display content or excerpt in index.php when this is a display single post or the home page.

if ( is_home() || is_single() ) {
   the_content();
}
else {
   the_excerpt();
}

When you need display a code or element, in a place that is NOT the home page.

<?php if ( ! is_home() ) {?>
 Insert your markup ...
<?php } ?>

複数の条件をチェックする

PHP 演算子を使って、ひとつの宣言内で複数の条件をチェックできます。

// 2つの条件をチェック

if ( is_single() || is_page() ) ) {
    // If it's a single post or a single page, do something special
}

if ( is_archive() && ! is_category( 'nachos' ) ) {
    // If it's an archive page for any category EXCEPT nachos, do something special
}
// 3つの条件をチェック

if ( $query->is_main_query() && is_post_type_archive( 'products' ) && ! is_admin() ) {  
    // If it's the main query on a custom post type archive for Products
    // And if we're not in the WordPress admin, then do something special
}

if ( is_post_type_archive( 'movies' ) || is_tax( 'genre' ) || is_tax( 'actor' )  ) {
    // If it's a custom post type archive for Movies
    // Or it's a taxonomy archive for Genre
    // Or it's a taxonomy archive for Actor, do something special
}


日付別の表示

以下の例は、日付別ページへのアクセスが行われたときに、年別に色分けして表示させます。

<?php
// WordPress ループを開始
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h2 id="post-<?php the_ID(); ?>">
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>">
<?php the_title(); ?></a></h2>
<small><?php the_time('Y/n/j') ?> <!-- by <?php the_author() ?> --></small>

<?php
// 日付別アーカイブページかどうかをチェック
if ( is_date() ) {
     if ( date( 'Y' ) != get_the_date( 'Y' ) ) {
          // 今年の投稿ではない場合、"oldentry" クラスを追加してスタイルを変える
          echo '<div class="oldentry">';
     } else {
          echo '<div class="entry">';
     }
} else {
     echo '<div class="entry">';
}
the_content( '続きを読む »' );
?>
</div>

サイドバーの内容をページによって変更する

以下の例では、閲覧中のページによってサイドバーに表示させる内容を変更します。

(注)下記コード内の wp_list_cats は廃止予定です。替わりにwp_list_categories をお使いください。(コードを直してくれる人募集中!)

<!-- サイドバー開始 -->
<div id="sidebar">
<?php
// 表示中のページに合わせたサイドバーコンテンツを生成
if ( is_home() ) {
	// ホームページを表示している際、トップレベルカテゴリーの一覧を表示
	 echo "<ul>";
	 wp_list_categories('optionall=0&sort_column=name&list=1&children=0');
	 echo "</ul>";
} elseif ( is_category() ) {
	// カテゴリーアーカイブページを表示している際、そのカテゴリー内のサブカテゴリーを含む一覧を表示
	echo "<ul>";
	wp_list_categories('optionall=1&sort_column=name&list=1&children=1&hierarchical=1');
	 echo "</ul>";
 elseif ( is_single() ) {
	// 投稿の固定リンクページを表示している際は何も表示させない
} elseif ( is_page() ) {
	// 固定ページを表示しています。どのページ?
	if ( is_page( '管理人について' ) ) {
		// 「管理人について」ページ
		echo "<p>当ブログの管理人についての説明ページ。</p>";
	} elseif ( is_page( 'ブログについて' ) ) {
		echo "<p>当ブログについての説明ページ。</p>";
	} else {
		// その他の固定ページで表示させたいものがあればここに記入
	}
} else {
	// その他のページ(アーカイブページ、検索、404など)で表示させたいものがあればここに記入
} // 以上で終わりです!
?>
<form id="searchform" method="get" action="<?php echo esc_url( $_SERVER['PHP_SELF'] ); ?>">
<div>
<input type="text" name="s" id="s" size="15" />
<input type="submit" value="<?php _e( 'Search' ); ?>" />
</div>
</form>

</div>
<!-- end sidebar -->

分かりやすい 404 ページ

Creating an Error 404 Page」という記事の「サーバーが 404 ページを見つけるのを助ける」というセクションに、PHP の条件分岐関数 isset() を使う例が書かれています。


ダイナミックメニューハイライト

ダイナミックハイライトとは、条件分岐タグを使用して、メニュー内の現在アクセスしているページを際立たせる方法です。

テーマの footer.php ファイル内

sidebar.php などの他のテンプレートファイルによってクエリが実行された場合、元の条件分岐タグは破損してしまいます。例えば、header.php では条件分岐タグが適切に機能するのに、footer.php では正しく機能しないトラブルがよくあります。これを解決するにはフッターで条件分岐タグを使う前に wp_reset_query を実行します:

<?php
wp_reset_query();
if ( is_page( '2' ) ) {
	echo 'ページ 2 です。';
} 
?>

このようなトラブルを無くすために、別の場所(テンプレートファイルやプラグイン)でクエリを実行した場合は、必要な処理を終えた後に必ず wp_reset_query を実行するようにしましょう。

<?php
query_posts('posts_per_page=5&cat=123');
if( have_posts() ) :
  while( have_posts() ) :
    the_posts();
    /* 投稿を出力するなどの処理... */
  endwhile;
else :
  /* 該当する投稿がない場合、何もしない */
endif;
wp_reset_query();
?>

条件分岐タグ インデックス

アルファベット順一覧

外部リソース

変更履歴

  • 2.8 : is_active_sidebar を追加。
  • (バージョン未確認): is_comments_popup, is_singular, has_excerpt, in_the_loop を追加。
  • 2.7 : is_sticky() を追加。
  • 2.6 : has_tag() を追加。
  • バージョン 2.5 :
    • is_front_pageis_page_template を追加。
    • いくつかの条件分岐タグは、引数に配列を渡せるようになりました。
  • Version 2.3 : タグページ用の is_tag() を追加。
  • Version 2.1 :
    • is_home() の動作が変わりました。参照
    • comments_openpings_open を追加。
  • バージョン確認中 :
    • is_preview() を追加。
    • is_admin() を追加。
    • is_attachment() を追加。

最新英語版: WordPress Codex » Conditional Tags最新版との差分

関数リファレンス

条件分岐タグis_404(), is_admin(), is_admin_bar_showing(), is_archive(), is_attachment(), is_author(), is_category(), is_comments_popup(), is_date(), is_day(), is_feed(), is_front_page(), is_home(), is_local_attachment(), is_main_query, /is_multi_author, is_month(), is_new_day(), is_page(), is_page_template(), is_paged(), is_plugin_active(), is_plugin_active_for_network() /en, is_plugin_inactive() /en, is_plugin_page() /en, is_post_type_archive(), is_preview() /en, is_search(), is_single(), is_singular(), is_sticky(), is_tag(), is_tax(), is_taxonomy_hierarchical(), is_time(), is_trackback(), is_year(), in_category(), in_the_loop(), is_active_sidebar(), is_active_widget(), is_blog_installed() /en, is_rtl(), is_dynamic_sidebar(), is_user_logged_in(), has_excerpt(), has_post_thumbnail(), has_tag(), pings_open(), email_exists(), post_type_exists(), taxonomy_exists(), term_exists(), username_exists() /en, wp_attachment_is_image(), wp_script_is()