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

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

「条件分岐タグ」の版間の差分

提供: WordPress Codex 日本語版
移動先: 案内検索
(メインページ)
 
(7人の利用者による、間の41版が非表示)
1行目: 1行目:
{{NeedTrans|一部}}
 
 
{{テーマ・テンプレートガイド}}
 
{{テーマ・テンプレートガイド}}
 
== はじめに ==
 
== はじめに ==
7行目: 6行目:
 
これらのタグは[[テンプレート階層]]と深い関わりがあります。
 
これらのタグは[[テンプレート階層]]と深い関わりがあります。
  
'''注:''' 条件分岐タグが使えるのは WordPress の ''init'' アクションフックの後のみです。テーマの function.php 本文内(関数の外)では正しく動作しません。
+
'''注:''' 条件分岐タグが使えるのは WordPress の ''posts_selection'' [[プラグイン_API/アクションフック一覧#一般的リクエスト中に実行されるアクション|アクションフック]]の後のみです (''wp'' アクションフックはこれらの条件分岐を使える最初のものです)。テーマの function.php 本文内 (関数の外) では正しく動作しません。
 +
 
 +
'''しかし''' <tt>query</tt> オブジェクトへの参照があれば (例えば <tt>parse_query</tt> または <tt>pre_get_posts</tt> フック内から )、WP_Query 条件メソッドを使用できます(例: <code>$query->is_search()</code>)。
  
 
<div id="The_Conditions_For_...">
 
<div id="The_Conditions_For_...">
13行目: 14行目:
 
</div>
 
</div>
  
条件分岐タグは、現在のページが指定した条件に合致するかどうかをチェックし、TRUE もしくは FALSE を返します。以下の条件分岐タグの説明では、TRUE 値が返される場合の説明をしています。また、タグで引数が使える場合は追記してあります。
+
条件分岐タグは、現在のページが指定した条件に合致するかどうかをチェックし、true もしくは false を返します。以下の条件分岐タグの説明では、true 値が返される場合の説明をしています。また、タグで引数が使える場合は追記してあります。
 +
 
 +
<div id="The_Blog_Page">
 +
=== ブログページ ===
 +
</div>
 +
 
 +
; <tt>[[関数リファレンス/is_front_page|is_front_page()]]</tt> と <tt>[[関数リファレンス/is_home|is_home()]]</tt> :
 +
ブログページ用の条件分岐タグはありません。<tt>is_home()</tt> と <tt>is_front_page()</tt> の両方を使ってこのページを検出する必要がありますが、これらの関数は間違って使われがちです。実際に、ユーザーがある固定ページをホームページとして定義し、別の固定ページでブログを表示するということもあります。この場合ブログページがホームページではないにも関わらず <tt>is_home()</tt> 関数で <tt>true</tt> を返します。以下はユーザーが定義できる設定の例です。
 +
 
 +
* デフォルトホームページ (最新の投稿を含む)
 +
* 固定ホームページ、ブログページなし
 +
* 固定ホームページとブログページ
 +
 
 +
<tt>is_home()</tt> と <tt>is_front_page()</tt> を使う場合はバグを防ぐために正しい順序で表記し、すべてのユーザー設定をテストする必要があります。
 +
<pre>if ( is_front_page() && is_home() ) {
 +
// デフォルトホームページ
 +
} elseif ( is_front_page() ) {
 +
// 固定ペーシを使ったホームページ
 +
} elseif ( is_home() ) {
 +
// ブログページ
 +
} else {
 +
// それ以外
 +
}</pre>
  
 
<div id="The_Main_Page">
 
<div id="The_Main_Page">
 +
 
=== メインページ ===
 
=== メインページ ===
 
</div>
 
</div>
  
; <tt>[[関数リファレンス/is_home|is_home()]]</tt> : メインブログページが表示されている場合。これは、あなたのサイトにある時系列のブログコンテンツを表示するページです。もしあなたがフロントページに固定ページを設定していた場合(次を参照)、[[Administration_Panels|Administration]] >  [[Administration_Panels#Reading|Settings]] > [[Settings_Reading_SubPanel|Reading]]であなたが「投稿ページ」として設定したページでのみ、trueになります。
+
; <tt>[[関数リファレンス/is_home|is_home()]]</tt> : メインブログページが表示されている場合。これは、サイトにある時系列のブログコンテンツを表示するページです。もしあなたがフロントページに固定ページを設定していた場合(以下を参照)、[[Administration_Panels|Administration]] >  [[Administration_Panels#Reading|Settings]] > [[Settings_Reading_SubPanel|Reading]]であなたが「投稿ページ」として設定したページでのみ、trueになります。
  
 
<div id="The_Front_Page">
 
<div id="The_Front_Page">
26行目: 50行目:
 
</div>
 
</div>
  
; <tt>[[関数リファレンス/is_front_page|is_front_page()]]</tt> : サイトのフロントページが表示されている場合(投稿・[[Pages|固定ページ]]にかかわらず)。
+
; <tt>[[関数リファレンス/is_front_page|is_front_page()]]</tt> : 投稿・[[Pages|固定ページ]]にかかわらず、サイトのフロントページが表示されている場合。
 
: true を返すのは、[[Settings Reading SubPanel|表示設定]]の「トップページの表示」として
 
: true を返すのは、[[Settings Reading SubPanel|表示設定]]の「トップページの表示」として
 
:* 「最新の投稿」を設定している場合には、メインブログページが表示されるとき
 
:* 「最新の投稿」を設定している場合には、メインブログページが表示されるとき
41行目: 65行目:
  
 
<div id="The_Administration_Panels">
 
<div id="The_Administration_Panels">
=== 管理パネル ===
+
=== 管理画面 ===
 
</div>
 
</div>
  
; <tt>[[関数リファレンス/is_admin|is_admin()]]</tt>: ダッシュボードまたは管理パネルが表示されている場合。
+
; <tt>[[関数リファレンス/is_admin|is_admin()]]</tt>: ダッシュボードまたは管理画面が表示されている場合。
 +
 
 +
''注''': '''wp-login.php''' ページは管理パネル内のページではない。このページが表示されているかを確認するには、<tt>[[グローバル変数#Admin_Globals|管理グローバル変数]]</tt> の '''$pagenow''' を使う。
 +
 
 +
; <tt>[[関数リファレンス/is_network_admin|is_network_admin()]]</tt>: ネットワークダッシュボードやマルチサイトのネットワーク管理パネルが表示されている時。
 +
'''注''':  '''wp-login.php''' は管理者ページではありません。このページが表示されているかを確認するには、<tt>[[Global_Variables#Admin_Globals|管理グローバル変数]]</tt>の '''$pagenow'''を使う。
 +
 
 +
<div id="The_Admin_Bar">
 +
 
 +
=== 管理バー ===
 +
</div>
 +
 
 +
; <tt>[[関数リファレンス/is_admin_bar_showing|is_admin_bar_showing()]]</tt> : 管理バーが表示されている場合 <tt>true</tt> を返す。
 +
 
 +
''注'' : 管理バー表示をコントロールするには [[関数リファレンス/show_admin_bar|show_admin_bar()]] / [[:en:Function_Reference/show_admin_bar|en]] を使う。この関数は ''plugins_loaded'' の後ですぐ呼び出すか、テーマの ''functions.php'' ファイルに含める。
  
 
<div id="A_Single_Post_Page">
 
<div id="A_Single_Post_Page">
 +
 
=== 個別投稿ページ ===
 
=== 個別投稿ページ ===
 
</div>
 
</div>
68行目: 107行目:
 
; <tt>is_sticky( '17' )</tt> : ID 17 の投稿が先頭固定表示の場合、真を返す。
 
; <tt>is_sticky( '17' )</tt> : ID 17 の投稿が先頭固定表示の場合、真を返す。
  
 +
<!--
 
<div id="A_Post_Type">
 
<div id="A_Post_Type">
 
=== 投稿タイプ ===
 
=== 投稿タイプ ===
74行目: 114行目:
 
; <tt> if( 'book' == get_post_type() ) ...</tt> : 現在の投稿が「book」という投稿タイプに属しているかを判定します。
 
; <tt> if( 'book' == get_post_type() ) ...</tt> : 現在の投稿が「book」という投稿タイプに属しているかを判定します。
 
; <tt>[[関数リファレンス/is_singular|is_singular()]]</tt>: <tt>is_single、is_page、is_attachment</tt>のいずれかの条件を満たすときにtrueを返します。投稿タイプの判定にも使えます。
 
; <tt>[[関数リファレンス/is_singular|is_singular()]]</tt>: <tt>is_single、is_page、is_attachment</tt>のいずれかの条件を満たすときにtrueを返します。投稿タイプの判定にも使えます。
; <tt>[[Function_Reference/post_type_exists|post_type_exists()]]</tt> : Returns true if a given post type is a [[関数リファレンス/register_post_type|registered post type]].  This does not test if a post is a certain post_type.  Note: This function replaces a function called ''is_post_type'' which existed briefly in 3.0 development.
+
; <tt>[[関数リファレンス/post_type_exists|post_type_exists()]]</tt> : この[[Conditional_Tags|条件分岐タグ]]は、引数に与えられた名称の投稿タイプが存在するかチェックします。これはブール関数であり、グローバル変数 $wp_post_types を使用して投稿タイプの存在をチェックします。つまり、もし投稿タイプが存在すればTRUEを、存在しなければFALSEを返します。投稿タイプは[[関数リファレンス/register_post_type|登録された投稿タイプ]]でなければなりません。
 
+
-->
 
<div id="A_Post_Type_is_Hierarchical">
 
<div id="A_Post_Type_is_Hierarchical">
 
 
=== 階層を持つ投稿タイプ ===
 
=== 階層を持つ投稿タイプ ===
 
</div>
 
</div>
; <tt>[[関数リファレンス/is_post_type_hierarchical|is_post_type_hierarchical($post_type)]]</tt> : Returns true if this $post_type has been set with [[Function_Reference/register_post_type|hierarchical support when registered]].
+
 
; <tt>is_post_type_hierarchical( 'book' )</tt> : Returns true if the book post type was registered as having support for hierarchical.
+
; <tt>[[関数リファレンス/is_post_type_hierarchical|is_post_type_hierarchical($post_type)]]</tt> : この[[Conditional_Tags|条件分岐タグ]]は、その投稿タイプが階層型かどうかチェックします。これはブール関数であり、TRUEかFALSEを返します(FALSEは、その投稿タイプが存在しないことを意味するかもしれません)。
 +
 
 +
最初にその投稿タイプが存在することをチェックします。そして投稿タイプのオブジェクトを取得し、最終的にそのオブジェクト内の階層型かどうかの値を返します。
  
 
<div id="A_Post_Type_Archive">
 
<div id="A_Post_Type_Archive">
87行目: 128行目:
 
</div>
 
</div>
  
:<tt>[[関数リファレンス/is_post_type_archive|is_post_type_archive()]]</tt> : Returns true on any post type archive.
+
;<tt>[[関数リファレンス/is_post_type_archive|is_post_type_archive()]]</tt> : 現在のクエリが、引数に与えられた投稿タイプのアーカイブページのものかどうかチェックする。
:<tt>is_post_type_archive( $post_type )</tt> : Returns true if on a post type archive page that matches $post_type (can be a single post type or an array of post types).
+
;<tt>is_post_type_archive( $post_type )</tt> : $post_type に一致する投稿タイプアーカイブページの場合に true を返す。
 +
;<tt>is_post_type_archive( array( 'foo', 'bar', 'baz' ) )</tt> : 投稿タイプアーカイブページが "foo"/"bar"/"baz" いずれかに一致する場合に true を返す。
  
To turn on post type archives, use 'has_archive' => true, when [http://codex.wordpress.org/Function_Reference/register_post_type registering the post type].
+
投稿タイプアーカイブを有効にするには、[[関数リファレンス/register_post_type|その投稿タイプを登録する]]際に 'has_archive' => true を使う。
  
 
<div id="A_Comments_Popup">
 
<div id="A_Comments_Popup">
105行目: 147行目:
  
 
<div id="A_PAGE_Page">
 
<div id="A_PAGE_Page">
=== WordPress ページ ===
+
=== WordPress ページ ===
 
</div>
 
</div>
  
117行目: 159行目:
 
; <tt>is_page( array( 42, 54, 6 ) )</tt> : ID が 42、54、または6のいずれかの[[Pages|固定ページ]]が表示されている場合。
 
; <tt>is_page( array( 42, 54, 6 ) )</tt> : ID が 42、54、または6のいずれかの[[Pages|固定ページ]]が表示されている場合。
  
<div id="Testing_for_paginated_Pages">
+
他のスニペットについては [[関数リファレンス/is_page|is_page()]] を参照。
==== 複数にわたるページの一部かどうかをチェックする ====
+
</div>
+
You can use this code to check whether you're on the nth page in a Post or PAGE Page that has been divided into pages using the <tt><!<nowiki></nowiki>--nextpage--></tt> QuickTag. This can be useful, for example, if you wish to display meta-data only on the first page of a post divided into several pages.
+
  
'''例 1'''
+
'''': 固定ページがサブページかどうかをチェックする関数はありません。この問題を解決するには以下を参考にしてください。
<pre><?php       
+
$paged = $wp_query->get( 'paged' );
+
  
if ( ! $paged || $paged < 2 )
+
<pre>if ( is_page() && $post->post_parent > 0 ) {
{
+
     echo "これは子ページです";
    // 複数にわたるページの一部ではない場合 (または複数にわたる投稿・固定ページの最初のページの場合)
+
}</pre>
 
+
}
+
else
+
{
+
  // 複数にわたるページの一部である場合
+
 
+
}
+
?>
+
</pre>
+
 
+
'''例 2'''
+
<!-- Could someone please take a look at the difference between 'paged' & 'page'? I ran into some support requests, where people said it's 'page', not 'paged' -->
+
 
+
<pre><?php
+
$paged = get_query_var( 'page' ) ? get_query_var( 'page' ) : false;
+
if ( $paged === false )
+
{
+
    // 複数ページの一部ではない場合 (または投稿・固定ページの複数ページの最初のページの場合)
+
}
+
else
+
{
+
  // 複数ページの一部である場合
+
}
+
?></pre>
+
 
+
<div id="Testing_for_sub-Pages">
+
==== サブページかどうかをチェックする ====
+
</div>
+
 
+
残念ながら、<tt>is_subpage()</tt>というタグは今のところありませんが、対応策はあります。
+
 
+
'''スニペット 1'''
+
<pre><?php
+
global $post;    // ループ外の場合
+
 
+
if ( is_page() && $post->post_parent ) {
+
    // サブページの場合
+
} else {
+
    // サブページではない場合
+
}
+
?></pre>
+
 
+
以下のように <tt>is_subpage()</tt> 関数を作ることもできます。[[テーマの作成#Theme Functions File|functions.php]] ファイルにこの関数を追加すればスニペット 1 のようにサブページかどうかをチェックすることができます。この関数は現在のページがサブページなら親ページの ID を、サブページでないなら <tt>false</tt> を返します。
+
 
+
'''スニペット 2'''
+
<pre>
+
function is_subpage() {
+
global $post;                                // $post には現在の固定ページの情報があります
+
        if ( is_page() && $post->post_parent ) {      // 現在の固定ページが親ページを持つかどうかをチェックします
+
              return $post->post_parent;                      // 親ページの ID を返します
+
        } else {                                      // 親ページを持たないので...
+
              return false;                          // ...false を返します
+
        };
+
};
+
</pre>
+
 
+
サブページかどうかのチェックを頻繁にする予定なら、スニペット 1 よりも スニペット 2 のように関数にして利用する方が便利です。
+
 
+
現在のページの親ページが特定の固定ページ、例えば "紹介"(デフォルトでページ ID は 2)かどうかをチェックするならスニペット 3 のようにチェックできます。この方法は、指定したページであるか、またはそのサブページであるかをチェックします。サイトのセクションごとに異なった変数(バナーや見出しなど)を設定するのに便利です。
+
 
+
'''スニペット 3'''
+
<pre>
+
<?php
+
if ( is_page( 'about' ) || '2' == $post->post_parent ) {  
+
     // このページは "紹介"、または親ページが "紹介"
+
    $bannerimg = 'about.jpg';
+
 
+
} elseif ( is_page( 'learning' ) || '56' == $post->post_parent ) {
+
    $bannerimg = 'teaching.jpg';
+
 
+
} elseif ( is_page( 'admissions' ) || '15' == $post->post_parent ) { 
+
    $bannerimg = 'admissions.jpg';
+
 
+
} else {
+
    $bannerimg = 'home.jpg'; // 上のどれにも当てはまらないページ(たぶんホームページ)
+
}
+
 
+
?>
+
</pre>
+
 
+
スニペット 4 はスニペット 3 のチェックをより簡単に実現する関数です。この関数は指定したページ('紹介' など)またはそのサブページ(親ページの ID が 2)であれば true を返します。
+
 
+
'''スニペット 4'''
+
<pre>
+
function is_tree( $pid ) {      // $pid = 指定したページの ID
+
global $post;        // $post に現在の固定ページの情報をロード
+
 
+
    if ( is_page($pid) )
+
        return true;            // その固定ページまたはサブページの場合
+
 
+
    $anc = get_post_ancestors( $post->ID );
+
    foreach ( $anc as $ancestor ) {
+
        if( is_page() && $ancestor == $pid ) {
+
            return true;
+
        }
+
    }
+
 
+
    return false;  // その固定ページではない、または親ページではない場合
+
}
+
</pre>
+
 
+
スニペット 4 を [[テーマの作成#Theme Functions File|functions.php]] ファイルに追加して、<tt>is_tree( 'id' )</tt> を実行すると現在のページが指定したページ、またはそのサブページであるかどうかがわかります。例えば、スニペット 3 の始めの if ブロック内にある "<tt>is_page( 'about' ) || '2' == $post->post_parent</tt>" は <tt>is_tree( '2' )</tt> に置き換えられます。
+
 
+
注意:2階層以上のページ階層がある場合は、親ページは現在より1階層上のページを差します。ページ階層の最上にあるページではないことに注意してください。
+
  
 
<div id="Is_a_Page_Template">
 
<div id="Is_a_Page_Template">
239行目: 172行目:
 
この条件分岐タグを使うと、特定の[[Pages#ページテンプレート|ページテンプレート]]を使っているかどうかをチェックできます。
 
この条件分岐タグを使うと、特定の[[Pages#ページテンプレート|ページテンプレート]]を使っているかどうかをチェックできます。
  
; <tt>[[関数リファレンス/is_page_template|is_page_template()]]</tt> : [[Pages#ページテンプレート|ページテンプレート]]が使われている場合。
+
; <tt>[[関数リファレンス/is_page_template|is_page_template()]]</tt>
; <tt>is_page_template('about.php')</tt> : "about" という[[Pages#ページテンプレート|ページテンプレート]]が使われている場合。他の条件分岐タグとは違い、特定のテンプレートを選びたい場合には about.php などのファイル名を指定する必要があります。
+
: [[Pages#ページテンプレート|ページテンプレート]]が使われている場合。
 +
; <tt>is_page_template('about.php')</tt> : "about" という[[Pages#ページテンプレート|ページテンプレート]]が使われている場合。
 +
 
 +
''注'': ファイルがサブディレクトリにある場合はファイル名のみだけではなくパスも含める必要があります。例: <tt>page-templates/about.php</tt>
  
 
<div id="A_Category_Page">
 
<div id="A_Category_Page">
 +
 
=== カテゴリーページ ===
 
=== カテゴリーページ ===
 
</div>
 
</div>
  
; <tt>[[関数リファレンス/is_category|is_category()]]</tt> : あるカテゴリーのアーカイブページが表示されている場合。
+
; <tt>[[関数リファレンス/is_category|is_category()]]</tt> : ページが <tt>$category</tt> カテゴリーと関連付けられている場合。
 
; <tt>is_category( '9' )</tt> : カテゴリーID 9のアーカイブページが表示されている場合。
 
; <tt>is_category( '9' )</tt> : カテゴリーID 9のアーカイブページが表示されている場合。
 
; <tt>is_category( 'Stinky Cheeses' )</tt> : "Stinky Cheeses"というカテゴリーのアーカイブページが表示されている場合。
 
; <tt>is_category( 'Stinky Cheeses' )</tt> : "Stinky Cheeses"というカテゴリーのアーカイブページが表示されている場合。
 
; <tt>is_category( 'blue-cheese' )</tt> : "blue-cheese"というカテゴリースラッグのアーカイブページが表示されている場合。
 
; <tt>is_category( 'blue-cheese' )</tt> : "blue-cheese"というカテゴリースラッグのアーカイブページが表示されている場合。
 
; <tt>is_category( array( 9, 'blue-cheese', 'Stinky Cheeses' ) )</tt> : 投稿のカテゴリーが term_ID 9、スラッグが "blue-cheese" の場合、カテゴリー名が "Stinky Cheeses" のいずれかにあてはまる場合、真を返す。
 
; <tt>is_category( array( 9, 'blue-cheese', 'Stinky Cheeses' ) )</tt> : 投稿のカテゴリーが term_ID 9、スラッグが "blue-cheese" の場合、カテゴリー名が "Stinky Cheeses" のいずれかにあてはまる場合、真を返す。
; <tt>'''in'''_category( '5' )</tt> : (注: '''in'''_category です。) 現在の投稿がカテゴリーID 5に'''属する'''場合にtrueを返します。 [[テンプレートタグ/in_category|詳細]]
+
; <tt>'''in'''_category( '5' )</tt> : (注: '''in'''_category です。) 現在の投稿がカテゴリーID 5に'''属する'''場合に true を返します。 [[テンプレートタグ/in_category|詳細]]
; <tt>in_category( array( 1,2,3 ) )</tt> : Returns true if the current post is '''in''' either category 1, 2, or 3.
+
; <tt>in_category( array( 1,2,3 ) )</tt> : 現在の記事が、カテゴリID 1、2、3の'''いずれか'''に属している場合は true を返します。
; <tt>! in_category( array( 4,5,6 ) )</tt> : Returns true if the current post is '''NOT in''' either category 4, 5, or 6.  Note the '''!''' at the beginning.
+
; <tt>! in_category( array( 4,5,6 ) )</tt> : 現在の記事が、カテゴリID 4、5、6の'''いずれにも属していない'''場合は true を返します。先頭に「!」が付くことに注目してください。
 +
 
 +
'''注意:''' テストの際にはスペリングをしっかりチェックしましょう。"is" と "in" では意味が大きく異なります。
  
 
<tt>[[#Any Archive Page|is_archive()]]</tt> と[[Category Templates|カテゴリーテンプレート]]も参照してください。
 
<tt>[[#Any Archive Page|is_archive()]]</tt> と[[Category Templates|カテゴリーテンプレート]]も参照してください。
  
 
<div id="A_Tag_Page">
 
<div id="A_Tag_Page">
 +
 
=== タグページ ===
 
=== タグページ ===
 
</div>
 
</div>
264行目: 204行目:
 
; <tt>is_tag( 'mild' )</tt> : 'mild' というスラッグのついたタグのアーカイブページが表示されている場合。
 
; <tt>is_tag( 'mild' )</tt> : 'mild' というスラッグのついたタグのアーカイブページが表示されている場合。
 
; <tt>is_tag( array( 'sharp', 'mild', 'extreme' ) )</tt> : 'sharp' または 'mild' または 'extreme' というスラッグのついたタグのアーカイブページが表示されている場合。
 
; <tt>is_tag( array( 'sharp', 'mild', 'extreme' ) )</tt> : 'sharp' または 'mild' または 'extreme' というスラッグのついたタグのアーカイブページが表示されている場合。
; <tt>has_tag()</tt> : タグのある投稿がループ内で表示されている場合。
+
; <tt>[[関数リファレンス/has_tag|has_tag()]]</tt> : タグのある投稿がループ内で表示されている場合。バージョン2.7以前ではループ内で使う必要がある。
 
; <tt>has_tag( 'mild' )</tt> : 'mild' というタグのある投稿が表示されている場合。
 
; <tt>has_tag( 'mild' )</tt> : 'mild' というタグのある投稿が表示されている場合。
 
; <tt>has_tag( array( 'sharp', 'mild', 'extreme' ) )</tt> : 配列内のいずれかのタグのある投稿が表示されている場合。
 
; <tt>has_tag( array( 'sharp', 'mild', 'extreme' ) )</tt> : 配列内のいずれかのタグのある投稿が表示されている場合。
271行目: 211行目:
  
 
<div id="A_Taxonomy_Page">
 
<div id="A_Taxonomy_Page">
=== タクソノミーページ ===
+
=== タクソノミーページ (その他関連するもの) ===
 
</div>
 
</div>
  
 +
==== is_tax ====
 
; <tt>[[関数リファレンス/is_tax|is_tax()]]</tt> : タクソノミーのアーカイブページが表示されている場合。
 
; <tt>[[関数リファレンス/is_tax|is_tax()]]</tt> : タクソノミーのアーカイブページが表示されている場合。
 
; <tt>is_tax( 'flavor' )</tt> : 'flavor' というスラッグのついたタクソノミーのアーカイブページが表示されている場合。
 
; <tt>is_tax( 'flavor' )</tt> : 'flavor' というスラッグのついたタクソノミーのアーカイブページが表示されている場合。
280行目: 221行目:
 
<tt>[[#Any Archive Page|is_archive()]]</tt> もあわせてお読みください。
 
<tt>[[#Any Archive Page|is_archive()]]</tt> もあわせてお読みください。
  
<div id="A_Registered_Taxonomy">
+
==== has_term ====
=== 登録タクソノミー ===
+
</div>
+
  
; <tt>[[関数リファレンス/taxonomy_exists|taxonomy_exists()]]</tt> : あるタクソノミーが [[関数リファレンス/register_taxonomy|register_taxonomy()]] を使って登録されている場合。バージョン 3.0 で非推奨になるまでは is_taxonomy() と呼ばれていた。
+
; <tt>[[関数リファレンス/has_term|has_term()]]</tt> : 現在のポストが指定の項目(term)を持つかどうかを確認します。最初のパラメータは空の文字列である必要があります。2番目のパラメータには、分類のスラッグ、または名前を指定します。
 +
; <tt>has_term( 'green', 'color' )</tt> : 現在の投稿が分類 'color' の項目 'green' をもつ場合。
 +
; <tt>has_term( array( 'green', 'orange', 'blue' ), 'color' )</tt> : 現在の投稿が配列内の任意の項目をもつ場合。
 +
 
 +
==== term_exists ====
 +
 
 +
; <tt>[[関数リファレンス/term_exists|term_exists( $term, $taxonomy, $parent )]]</tt> : 任意の分類の中に <tt>$term</tt> が存在すれば <tt>true</tt> を返す。<tt>$taxonomy</tt> が指定された場合、項目はその中に存在する必要がある。3番目のパラメータ <tt>$parent</tt> もまたオプションで、指定された場合、項目はこの親の子である必要があり、分類は階層型でなければならない。
 +
 
 +
==== is_taxonomy_hierarchical ====
 +
 
 +
; <tt>[[関数リファレンス/is_taxonomy_hierarchical|is_taxonomy_hierarchical( $taxonomy )]]</tt> : 分類 <tt>$taxonomy</tt> が階層型なら <tt>true</tt> を返す。階層型分類を宣言するには、[[関数リファレンス/register_taxonomy|register_taxonomy()]] を使用する際に <tt>'hierarchical' => true</tt> を使用してください。
 +
 
 +
==== taxonomy_exists ====
 +
 
 +
;<tt>[[関数リファレンス/taxonomy_exists|taxonomy_exists( $taxonomy )]]</tt> : あるタクソノミーが [[関数リファレンス/register_taxonomy|register_taxonomy()]] を使って登録されている場合 true を返す。
 +
 
 +
<tt>[[#Any Archive Page|is_archive()]]</tt> もあわせてお読みください。
  
 
<div id="An_Author_Page">
 
<div id="An_Author_Page">
310行目: 265行目:
 
</div>
 
</div>
  
; <tt>[[関数リファレンス/is_date|is_date()]]</tt> : 日付別のアーカイブページのいずれかが表示されている場合。(例:月別、年別、日別、時間別)
+
; <tt>[[関数リファレンス/is_date|is_date()]] </tt> : 日付別のアーカイブページのいずれかが表示されている場合。(例:月別、年別、日別、時間別)
; <tt>[[関数リファレンス/is_year|is_year()]]</tt> : 年別のアーカイブページが表示されている場合。
+
; <tt>[[関数リファレンス/is_year|is_year()]] / [[:en:Function_Reference/is_year|en]]</tt> : 年別のアーカイブページが表示されている場合。
; <tt>[[関数リファレンス/is_month|is_month()]]</tt> : 月別のアーカイブページが表示されている場合。
+
; <tt>[[関数リファレンス/is_month|is_month()]] / [[:en:Function_Reference/is_month|en]]</tt> : 月別のアーカイブページが表示されている場合。
; <tt>[[関数リファレンス/is_day|is_day()]]</tt> : 日別のアーカイブページが表示されている場合。
+
; <tt>[[関数リファレンス/is_time|is_time()]] / [[:en:Function_Reference/is_time|en]]</tt> : 毎時別、毎分別、毎秒別のアーカイブページが表示されている場合。
; <tt>[[関数リファレンス/is_time|is_time()]]</tt> : 毎時別、毎分別、毎秒別のアーカイブページが表示されている場合。
+
; <tt>[[関数リファレンス/is_new_day|is_new_day()]] / [[:en:Function_Reference/is_new_day|en]]</tt> : 投稿の日付が新しい日の場合。ループ内で使う。
; <tt>[[関数リファレンス/is_new_day|is_new_day()]]</tt> : 投稿の日付が新しい日の場合。ループ内で使う。
+
  
 
<tt>[[#Any Archive Page|is_archive()]]</tt> もあわせてお読みください。
 
<tt>[[#Any Archive Page|is_archive()]]</tt> もあわせてお読みください。
  
 
<div id="Any_Archive_Page">
 
<div id="Any_Archive_Page">
 +
 
=== アーカイブページ ===
 
=== アーカイブページ ===
 
</div>
 
</div>
  
; <tt>[[関数リファレンス/is_archive|is_archive()]]</tt> : 各アーカイブページが表示されている場合。アーカイブページには、カテゴリー、タグ、作成者、日付別のものがあります。
+
; <tt>[[関数リファレンス/is_archive|is_archive()]]</tt> : 各アーカイブページが表示されている場合。アーカイブページには、カテゴリー、タグ、その他のタクソノミー項目、カスタム投稿タイプアーカイブ、作成者、日付別のものがあります。
  
 
<div id="A_Search_Result_Page">
 
<div id="A_Search_Result_Page">
341行目: 296行目:
 
</div>
 
</div>
  
; <tt>[[関数リファレンス/is_paged|is_paged()]]</tt> : 表示中のページが複数のページにわたる場合。これは例えばアーカイブページやメインページに表示する投稿数よりも多い投稿があり、複数ページに分かれているときを指し、2ページ目以降のときに true を返します。ただし、1つの投稿や[[Pages|固定ページ]]の本文が <tt><nowiki><!--nextpage--></nowiki></tt> [[Writing Posts#Visual Versus HTML Editor|クイックタグ]]で複数ページに分けられている場合は当てはまりません。投稿または固定ページが <tt><!<nowiki></nowiki>--nextpage--></tt> クイックタグを使って分割されているかどうか調べるには、[[#Testing_for_paginated_Pages|複数にわたるページの一部かどうかをチェックする]]をご覧ください。
+
; <tt>[[関数リファレンス/is_paged|is_paged()]]</tt> : 表示中のページが複数のページにわたる場合。これは例えばアーカイブページやメインページに表示する投稿数よりも多い投稿があり、複数ページに分かれているときを指し、2ページ目以降のときに true を返します。ただし、1つの投稿や[[Pages|固定ページ]]の本文が <tt><nowiki><!--nextpage--></nowiki></tt> [[Writing Posts#Visual Versus HTML Editor|クイックタグ]]で複数ページに分けられている場合は当てはまりません。投稿または固定ページが <tt><!<nowiki></nowiki>--nextpage--></tt> クイックタグを使って分割されているかどうか調べるには、[[関数リファレンス/is_page#Testing_for_paginated_Pages|ページ分けされている固定ページであるか]] をご覧ください。
  
 
<div id="An_Attachment">
 
<div id="An_Attachment">
347行目: 302行目:
 
</div>
 
</div>
  
; <tt>[[関数リファレンス/is_attachment|is_attachment()]]</tt> : 投稿または[[Pages|固定ページ]]の添付ファイルが表示されている場合。添付ファイルは、投稿画面のメディアアップロード機能を使ってアップロードした画像などのファイルの事で、テンプレートを使って独自のページ内に表示できます。詳細は、 [[Using Image and File Attachments|画像や添付ファイルの使い方]]/[[:en:Using Image and File Attachments|en]] をご覧ください。
+
; <tt>[[関数リファレンス/is_attachment|is_attachment()]]</tt> : 投稿または[[Pages|固定ページ]]の添付ファイルが表示されている場合。添付ファイルは、投稿画面のメディアアップロード機能を使ってアップロードした画像などのファイルの事で、テンプレートを使って独自のページ内に表示できます。
 +
 
 +
詳しくは [[Using Image and File Attachments|画像や添付ファイルの使い方]]/[[:en:Using Image and File Attachments|en]] もご覧ください。
 +
 
 +
<div id="Attachement_Is_Image">
 +
=== 画像の添付ファイル ===
 +
</div>
 +
; <tt>[[関数リファレンス/wp_attachment_is_image|wp_attachment_is_image( $post_id )]]</tt> : 投稿 ID が <tt>$post_id</tt> と一致する投稿の添付ファイルが画像の場合 <tt>true</tt> を返す。許可されている ''Mime'' 形式および拡張子は以下のとおり: .jpg, .jpeg, .gif, et .png.
 +
 
 +
<div id="A_Local_Attachment">
 +
=== ローカル添付ファイル ===
 +
</div>
 +
 
 +
; <tt>[[関数リファレンス/is_local_attachment|is_local_attachment( $url )]] / [[:en:Function_Reference/is_local_attachment|en]]</tt> : <tt>$url</tt> に渡されたリンクが、このサイトからの実際の添付ファイルであれば <tt>true</tt> を返す。
  
 
<div id="A_Single_Page.2C_Single_Post_or_Attachment">
 
<div id="A_Single_Page.2C_Single_Post_or_Attachment">
 +
 
=== シングルページ (固定ページ、個別投稿ページ、添付ファイルページ) ===
 
=== シングルページ (固定ページ、個別投稿ページ、添付ファイルページ) ===
 
</div>
 
</div>
; <tt>[[関数リファレンス/is_singular|is_singular()]]</tt> : <tt>is_single()</tt>、<tt>is_page()</tt> 、<tt>is_attachment()</tt> のいずれかが真である場合。
+
 
; <tt>is_singular( 'book' )</tt> : 'book' という[[投稿タイプ|カスタム投稿タイプ]]の投稿を表示している場合。
+
; <tt>[[関数リファレンス/is_singular|is_singular()]]</tt> : <tt>is_single()</tt>、<tt>is_page()</tt> 、<tt>is_attachment()</tt> のいずれかが真である場合に <tt>true</tt> を返す。
; <tt>is_singular( array( 'newspaper', 'book' ) )</tt> : 'newspaper' または 'book' という[[投稿タイプ|カスタム投稿タイプ]]の投稿を表示している場合。
+
; <tt>is_singular( 'foo' )</tt> : 'foo' という[[投稿タイプ|カスタム投稿タイプ]]の場合に <tt>true</tt> を返す。
 +
; <tt>is_singular( array( 'foo', 'bar', 'baz' ) )</tt> : 'foo'/'bar'/'baz' という[[投稿タイプ|カスタム投稿タイプ]]の投稿を表示している場合に <tt>true</tt> を返す。
 +
 
 +
[[カスタム投稿タイプ]]も参照。
 +
 
 +
<div id="Post_Type_Exists">
 +
=== 登録済み投稿タイプ ===
 +
</div>
 +
 
 +
; <tt>[[関数リファレンス/post_type_exists|post_type_exists( $post_type )]]</tt> : 指定した <tt>$post_type</tt> が [[関数リファレンス/register_post_type|register_post_type()]] を使ってこのサイトに登録されている場合に <tt>true</tt> を返す。
 +
 
 +
<div id="Is_Main_Query">
 +
=== メインクエリ ===
 +
</div>
 +
 
 +
; <tt>[[関数リファレンス/is_main_query|is_main_query()]]</tt>: 現在のクエリ (ループ内など) が「メイン」クエリの場合に <tt>true</tt> を返す。
 +
 
 +
'''フィルターフック the_content を使った例'''
 +
<pre>
 +
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;
 +
}
 +
</pre>
 +
 
 +
WordPress が各投稿のコンテンツをループ内または個別投稿ページで表示しようとした際に、それがメインクエリ内であり管理画面ではない場合、(例えば) ソーシャルボタンを表示する。
 +
 
 +
'''アクションフック pre_get_posts を使った例'''
 +
<pre>
 +
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>
 +
<tt>pre_get_posts</tt> を使って直接 <tt>is_main_query</tt> を呼び出すことはできないため、引数として <tt>$query</tt> を使う。
 +
 
 +
<div id="A_New_Day">
 +
=== 新しい日付 ===
 +
</div>
 +
 
 +
; <tt>[[関数リファレンス/is_new_day|is_new_day()]]  [[:en:Function_Reference/is_new_day| /en]]</tt> : 新しい日付の場合 <tt>true</tt> を返す。
  
 
<div id="A_Syndication">
 
<div id="A_Syndication">
 +
 
=== フィード ===
 
=== フィード ===
 
</div>
 
</div>
  
; <tt>[[関数リファレンス/is_feed|is_feed()]]</tt> : [[ブログ入門#Syndication|Syndication]](フィード)がリクエストされた場合。
+
; <tt>[[関数リファレンス/is_feed|is_feed()]] /[[:en:Function_Reference/is_feed|en]]</tt> : [[ブログ入門#Syndication|Syndication]](フィード)がリクエストされた場合。
 
:このタグは通常、一般のユーザーがページを表示しているときに条件を判断するためではなく、プラグイン開発の際に WordPress 内部で使われます。
 
:このタグは通常、一般のユーザーがページを表示しているときに条件を判断するためではなく、プラグイン開発の際に WordPress 内部で使われます。
  
 
<div id="A_Trackback">
 
<div id="A_Trackback">
 +
 
=== トラックバック ===
 
=== トラックバック ===
 
</div>
 
</div>
  
; <tt>[[関数リファレンス/is_trackback|is_trackback()]]</tt> : フックの中にトラックバックの機構が組み込まれている場合。
+
; <tt>[[関数リファレンス/is_trackback|is_trackback()]] /[[:en:Function_Reference/is_trackback|en]]</tt> : フックの中にトラックバックの機構が組み込まれている場合。
 
:このタグは通常、一般のユーザーがページを表示しているときに条件を判断するためではなく、プラグイン開発の際に WordPress 内部で使われます。
 
:このタグは通常、一般のユーザーがページを表示しているときに条件を判断するためではなく、プラグイン開発の際に WordPress 内部で使われます。
  
 
<div id="A_Preview">
 
<div id="A_Preview">
 +
 
=== プレビュー ===
 
=== プレビュー ===
 
</div>
 
</div>
  
; <tt>[[関数リファレンス/is_preview|is_preview()]]</tt> : 未公開モードで固定リンクページを表示している場合。
+
; <tt>[[関数リファレンス/is_preview|is_preview()]] /[[:en:Function_Reference/is_preview|en]]</tt> : 未公開モードで固定リンクページを表示している場合。
  
 
<div id="Has_An_Excerpt">
 
<div id="Has_An_Excerpt">
 +
 
=== 抜粋あり ===
 
=== 抜粋あり ===
 
</div>
 
</div>
 
; <tt>[[関数リファレンス/has_excerpt|has_excerpt()]]</tt> : 投稿に (手動で書かれた) 抜粋がある場合。
 
; <tt>[[関数リファレンス/has_excerpt|has_excerpt()]]</tt> : 投稿に (手動で書かれた) 抜粋がある場合。
 
; <tt>has_excerpt( '42' )</tt> : 投稿 ID 42 の投稿に抜粋がある場合。
 
; <tt>has_excerpt( '42' )</tt> : 投稿 ID 42 の投稿に抜粋がある場合。
 
<pre><?php
 
//  もし関数内なら $post を取得
 
global $post;
 
 
if ( empty( $post->post_excerpt ) ) {
 
    // 投稿に抜粋がない場合
 
} else {
 
    // 投稿に抜粋がある場合
 
}
 
?></pre>
 
 
=== その他の使い方 ===
 
 
when you need hide the excerpt auto displayed and only display yours posts excerpts.
 
 
<pre>
 
<?php if ( ! has_excerpt() ) {
 
      echo '';
 
} else {
 
      the_excerpt();
 
}
 
</pre>
 
 
Replace auto excerpt for a text or code.
 
<pre>
 
<?php if ( ! has_excerpt() ) {?>
 
    <!-- you text or code -->
 
<?php } ?>
 
</pre>
 
  
 
<div id="Has_A_Nav_Menu_Assigned">
 
<div id="Has_A_Nav_Menu_Assigned">
 
=== ナビゲーションメニュー割り当てあり ===
 
=== ナビゲーションメニュー割り当てあり ===
 
</div>
 
</div>
 +
; <tt>[[関数リファレンス/has_nav_menu|has_nav_menu()]] /[[:en:Function_Reference/has_nav_menu|en]]
 +
</tt> : 登録済みのナビゲーションメニューロケーションにメニューが割り当てられている場合に <tt>true</tt> を返す。
  
; <tt>[[関数リファレンス/has_nav_menu|has_nav_menu()]]</tt> : 登録済みのナビゲーションメニュー一が割り当てられているかどうかをチェックする。割り当て済み (true) または割り当てなし (false) を返す。
+
[[関数リファレンス/register_nav_menu|register_nav_menu()]] も参照。
  
 
<div id="Inside_The_Loop">
 
<div id="Inside_The_Loop">
 +
 
=== ループ内 ===
 
=== ループ内 ===
 
</div>
 
</div>
 
; <tt>[[関数リファレンス/in_the_loop|in_the_loop()]]</tt> : ループ内かどうかをチェックする。ループ内にあった場合真を返すので、プラグイン作者に便利。
 
; <tt>[[関数リファレンス/in_the_loop|in_the_loop()]]</tt> : ループ内かどうかをチェックする。ループ内にあった場合真を返すので、プラグイン作者に便利。
 +
 +
<div id="Is_Dynamic_SideBar">
 +
=== ダイナミックサイドバー対応 ===
 +
</div>
 +
; <tt>[[関数リファレンス/is_dynamic_sidebar|is_dynamic_sidebar()]]</tt> : テーマがダイナミックサイドバーに対応している場合 <tt>true</tt> を返す。
  
 
<div id="Is_Sidebar_Active">
 
<div id="Is_Sidebar_Active">
 
=== サイドバー使用中 ===
 
=== サイドバー使用中 ===
 
</div>
 
</div>
; <tt>[[関数リファレンス/is_active_sidebar|is_active_sidebar()]]</tt> : 指定したダイナミックサイドバーが使用中の場合、真を返す。サイドバー名、ID、番号を指定できる。
+
; <tt>[[関数リファレンス/is_active_sidebar|is_active_sidebar()]]</tt> : 指定したサイドバーが使用中の場合、''true'' を返す。サイドバー名、ID を指定できる。
  
<div id="Part_of_a_Network _Multisite">
+
''注'': サイドバーのコンテンツを表示するには [[関数リファレンス/dynamic_sidebar|dynamic_sidebar( $sidebar )]] を使う。
 +
 
 +
<div id="Is_Widget_Active">
 +
=== ウィジェット使用中 ===
 +
</div>
 +
; <tt>[[関数リファレンス/is_active_widget|is_active_widget( $widget_callback, $widget_id )]]</tt> : <tt>$widget_callback</tt> というコールバックのウィジェットまたは <tt>ID</tt> が <tt>$widget_id</tt> フロントエンドに表示される場合に <tt>true</tt> を返す。
 +
 
 +
''注'' : 有効化するには、この関数をウィジェットの初期化後、すなわち、アクション 'init' またはその後で実行する必要がある。[[Plugin_API/Action_Reference|アクションフック一覧]]参照。
 +
 
 +
<div id="Is_Blog_Installed">
 +
=== ブログインストール済み ===
 +
</div>
 +
; <tt>[[関数リファレンス/is_blog_installed|is_blog_installed()]] /[[:en:Function_Reference/is_blog_installed|en]]</tt> : 現在のブログが適切にインストールされている場合 <tt>true</tt> を返す。
 +
 
 +
''注'': 最初にキャッシュが確認される。キャッシュ値を保存するキャッシュプラグインを有効化している場合、この関数は動作する。デフォルトの WordPress キャッシュを使用していて、データベースが停止した場合、問題が発生するかもしれない。
 +
 
 +
<div id="Right_To_Left_Reading">
 +
 
 +
=== RTL 読み ===
 +
</div>
 +
; <tt>[[関数リファレンス/is_rtl|is_rtl()]]</tt> : 現在のロケールが右から左に読まれるものの場合 <tt>true</tt> を返す。
 +
 
 +
'''例'''
 +
<pre>
 +
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__ ) );
 +
}
 +
</pre>
 +
 
 +
<div id="Part_of_a_network">
 
=== ネットワークの一部(マルチサイト) ===
 
=== ネットワークの一部(マルチサイト) ===
 
</div>
 
</div>
; <tt>[[関数リファレンス/is_multisite is_multisite|is_multisite is_multisite()]]</tt> : 現在のサイトがマルチサイトインストールの一部かどうかチェックする。
+
; <tt>[[関数リファレンス/is_multisite|is_multisite()]] /[[:en:Function_Reference/is_multisite|en]]</tt> : 現在のサイトがマルチサイトインストールの一部かどうかチェックする。
+
 
 +
<div id="Main_Site_.28Multisite.29">
 +
 
 +
=== メインサイト(マルチサイト) ===
 +
</div>
 +
; <tt>[[関数リファレンス/is_main_site|is_main_site()]] /[[:en:Function_Reference/is_main_site|en]]</tt> : サイトがネットワークのメインサイトかどうかチェックする。
 +
 
 
<div id="Admin_of_a_Network _Multisite">
 
<div id="Admin_of_a_Network _Multisite">
 +
 
=== ネットワークの管理者(マルチサイト) ===
 
=== ネットワークの管理者(マルチサイト) ===
 
</div>
 
</div>
 
; <tt>[[関数リファレンス/is_super_admin|is_super_admin()]]</tt> : ユーザーがネットワークの特権管理者かどうかをチェックする。
 
; <tt>[[関数リファレンス/is_super_admin|is_super_admin()]]</tt> : ユーザーがネットワークの特権管理者かどうかをチェックする。
+
 
 +
<div id="Is_User_Logged_in">
 +
=== ユーザーログイン済み ===
 +
</div>
 +
 
 +
; <tt>[[関数リファレンス/is_user_logged_in|is_user_logged_in()]]</tt> : 権限グループに関わらず、ユーザーの誰かがログイン中の場合 <tt>true</tt> を返す。
 +
 
 +
<div id="Email_Exists">
 +
=== 既存メール ===
 +
</div>
 +
; <tt>[[関数リファレンス/email_exists|email_exists( $email )]]</tt> : 指定されたメールアドレス <tt>$email</tt> がユーザー名として登録されているかどうかを確認する。登録されている場合はユーザーの <tt>ID</tt> を返し、存在しない場合 <tt>false</tt> を返す。
 +
 
 +
<div id="Username_Exists">
 +
=== 既存ユーザー名 ===
 +
</div>
 +
 
 +
; <tt>[[関数リファレンス/username_exists|username_exists( $username )]] /[[:en:Function_Reference/username_exists|en]]</tt> : 指定されたユーザー名 <tt>$username</tt> がユーザー名として登録されているかどうかを確認する。登録されている場合はユーザーの <tt>ID</tt> を返し、存在しない場合 <tt>false</tt> を返す。
 +
 
 
<div id="An_Active_Plugin">
 
<div id="An_Active_Plugin">
 +
 
=== 有効化済みプラグイン ===
 
=== 有効化済みプラグイン ===
 
</div>
 
</div>
; <tt>[[関数リファレンス/is_plugin_active|is_plugin_active()]]</tt> : プラグインが有効化されているかチェックする。
+
; <tt>[[関数リファレンス/is_plugin_active|is_plugin_active( $path )]]</tt> : プラグインが有効化されているかチェックする。
+
; <tt>is_plugin_active( 'akismet/akismet.php' )</tt> : ''Akismet'' が有効化されているかチェックする。
 +
; <tt>[[関数リファレンス/is_plugin_inactive|is_plugin_inactive( $path )]] /[[:en:Function_Reference/is_plugin_inactive|en]]</tt> : プラグインが無効化されているかチェックする。<tt>! is_plugin_active( $path )</tt> と同じ。
 +
; <tt>[[関数リファレンス/is_plugin_active_for_network|is_plugin_active_for_network( $path )]] /[[:en:Function_Reference/is_plugin_active_for_network|en]]</tt> : マルチサイト環境でのネットワークで有効化と同じ
 +
; <tt>[[関数リファレンス/is_plugin_page|is_plugin_page()]] /[[:en:Function_Reference/is_plugin_page|en]]</tt> : ロードされたページが管理画面のプラグインページであれば <tt>true</tt> を返す。'''この関数は WordPress 3.1 から非推奨です。代替はありません。'''
 +
 
 +
<div id="A_Child_Theme">
 +
 
 +
=== 子テーマ ===
 +
</div>
 +
; <tt>[[関数リファレンス/is_child_theme|is_child_theme()]] /[[:en:Function_Reference/is_child_theme|en]]</tt> : 子テーマが使われているかどうかチェックする。
 +
 
 
<div id="Theme_supports_a_feature">
 
<div id="Theme_supports_a_feature">
 +
 
=== 機能対応のテーマ ===
 
=== 機能対応のテーマ ===
 
</div>
 
</div>
; <tt>[[関数リファレンス/current_theme_supports|current_theme_supports()]]</tt> : テーマに機能が存在するかチェックする。
+
; <tt>[[関数リファレンス/current_theme_supports|current_theme_supports()]] /[[:en:Function_Reference/current_theme_supports|en]]</tt> : テーマに機能が存在するかチェックする。
 +
; <tt>current_theme_support( 'post-thumbnails' )</tt> : 現在のテーマが [[Post_Thumbnails|アイキャッチ画像]] をサポートすれば <tt>true</tt> を返す。テーマに機能を追加するには [[関数リファレンス/add_theme_support|add_theme_support()]] を使用する。
 +
 
 +
<div id="Has_Post_Thumbnail">
 +
 
 +
=== アイキャッチ画像あり ===
 +
</div>
 +
; <tt>[[関数リファレンス/has_post_thumbnail|has_post_thumbnail( $post_id )]]</tt> : <tt>ID</tt> が <tt>$post_id</tt> の投稿がアイキャッチ画像を含めば <tt>true</tt> を返す。テーマはアイキャッチ画像をサポートする必要がある。[[#機能対応のテーマ|機能対応のテーマ]] 参照。
 +
 
 +
<div id="Script_Is_In_use">
 +
=== スクリプト使用中 ===
 +
</div>
 +
; <tt>[[関数リファレンス/wp_script_is|wp_script_is( $handle, $list )]] /[[:en:Function_Reference/wp_script_is|en]]</tt> : ''handle'' が <tt>$handle</tt> のスクリプトが <tt>$list</tt> で指定された 'registered'、'enqueue/queue'、'done'、'to_do' であれば <tt>true</tt> を返す。
 +
 
 +
'''用例'''
 +
<pre>
 +
    $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' );
 +
      }
 +
</pre>
 +
スクリプト 'fluidVids.js' が enqueue されているかどうか確認します。もし enqueue されていなければ、ファイルは登録され、enqueue される。
 +
 
 +
<div id="Is Previewed in the Customizer">
 +
=== カスタマイザーでプレビュー中===
 +
</div>
 +
 
 +
; <tt>[[関数リファレンス/is_customize_preview|is_customize_preview()]] /[[:en:Function_Reference/is_customize_preview|en]]</tt> : [[Theme_Customization_API|Customizer]]内でサイトのプレビュー中なら<tt>true</tt>、それ以外なら<tt>false</tt>を返す。
 +
 
  
 
<div id="Working_Examples">
 
<div id="Working_Examples">
462行目: 556行目:
 
<pre>
 
<pre>
 
if ( is_single() ) {
 
if ( is_single() ) {
   echo 'この投稿は' . single_cat_title() . 'カテゴリーに属しています';
+
   echo 'この投稿は' . get_the_title() . 'カテゴリーに属しています';
 
}
 
}
 
</pre>
 
</pre>
  
以下の例は、現在表示しているページによって本文を表示するか抜粋を表示するかを切り替えます。
+
このカスタム関数を子テーマの functions.php ファイルに追加し、必要に応じて条件分岐タグを変更してください。
 +
 
 +
<pre>
 +
add_action( 'loop_start', 'add_to_single_posts' );
 +
function add_to_single_posts() {
 +
if ( is_single('post') ) {
 +
echo'<div class="your-class">Your Text or HTML</div>';
 +
    }
 +
}
 +
</pre>
 +
 
 +
以下のようにも使えます。
 +
 
 +
<pre>
 +
add_action( 'loop_start', 'wpsites_add_to_single_posts' );
 +
function wpsites_add_to_single_posts() {
 +
if ( is_single() ) {
 +
echo'<div class="your-class">Your Text or HTML</div>';
 +
    }
 +
}
 +
</pre>
 +
 
 +
ループ内で条件分岐タグを使用する別の例。index.php 内で、個別の投稿を表示するか、ホームページを表示する場合にコンテンツを表示し、それ以外では抜粋を表示する。
  
 
<pre>
 
<pre>
476行目: 592行目:
 
}
 
}
 
</pre>
 
</pre>
 +
 +
ホームページでない場所では、コードまたは要素を表示する必要がある場合。
 +
 +
<pre>
 +
<?php if ( ! is_home() ) {?>
 +
ここにマークアップを挿入 ...
 +
<?php } ?>
 +
</pre>
 +
 +
<div id="Check_for_Multiple_Conditionals">
 +
===複数の条件をチェックする===
 +
</div>
 +
 +
[http://www.php.net/manual/ja/language.operators.comparison.php PHP 演算子]を使って、ひとつの宣言内で複数の条件をチェックできます。
 +
 +
<pre>
 +
// 2つの条件をチェック
 +
 +
if ( is_single() || is_page() ) ) {
 +
    // 個別の投稿または固定ページであれば、何かを行う
 +
}
 +
 +
if ( is_archive() && ! is_category( 'nachos' ) ) {
 +
    // カテゴリー「nachos」を除く任意のカテゴリーアーカイブページであれば、何かを行う
 +
}
 +
</pre>
 +
 +
<pre>
 +
// 3つの条件をチェック
 +
 +
if ( $query->is_main_query() && is_post_type_archive( 'products' ) && ! is_admin() ) { 
 +
    // カスタム投稿タイプ Products アーカイブのメインクエリであり、
 +
    // かつ、WordPress admin でなければ、何かを行う
 +
}
 +
 +
if ( is_post_type_archive( 'movies' ) || is_tax( 'genre' ) || is_tax( 'actor' )  ) {
 +
    // カスタム投稿タイプ Movie アーカイブ
 +
    // または 分類 Genre アーカイブ
 +
    // または 分類 Actor アーカイブならば、何かを行う
 +
}
 +
</pre>
 +
  
 
<div id="Date-Based_Differences">
 
<div id="Date-Based_Differences">
488行目: 646行目:
 
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
 
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
 
<h2 id="post-<?php the_ID(); ?>">
 
<h2 id="post-<?php the_ID(); ?>">
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>">
+
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>">
 
<?php the_title(); ?></a></h2>
 
<?php the_title(); ?></a></h2>
 
<small><?php the_time('Y/n/j') ?> <!-- by <?php the_author() ?> --></small>
 
<small><?php the_time('Y/n/j') ?> <!-- by <?php the_author() ?> --></small>
515行目: 673行目:
 
以下の例では、閲覧中のページによってサイドバーに表示させる内容を変更します。
 
以下の例では、閲覧中のページによってサイドバーに表示させる内容を変更します。
  
(注)下記コード内の [[テンプレートタグ/wp_list_cats|wp_list_cats]] は廃止予定です。替わりに[[テンプレートタグ/wp_list_categories|wp_list_categories]] をお使いください。(コードを直してくれる人募集中!)
+
<!--(注)下記コード内の [[テンプレートタグ/wp_list_cats|wp_list_cats]] は廃止予定です。替わりに[[テンプレートタグ/wp_list_categories|wp_list_categories]] をお使いください。-->
 
+
 
<pre><nowiki>
 
<pre><nowiki>
 
<!-- サイドバー開始 -->
 
<!-- サイドバー開始 -->
525行目: 682行目:
 
// ホームページを表示している際、トップレベルカテゴリーの一覧を表示
 
// ホームページを表示している際、トップレベルカテゴリーの一覧を表示
 
echo "<ul>";
 
echo "<ul>";
wp_list_cats('optionall=0&sort_column=name&list=1&children=0');
+
wp_list_categories('optionall=0&sort_column=name&list=1&children=0');
 
echo "</ul>";
 
echo "</ul>";
 
} elseif ( is_category() ) {
 
} elseif ( is_category() ) {
 
// カテゴリーアーカイブページを表示している際、そのカテゴリー内のサブカテゴリーを含む一覧を表示
 
// カテゴリーアーカイブページを表示している際、そのカテゴリー内のサブカテゴリーを含む一覧を表示
 
echo "<ul>";
 
echo "<ul>";
wp_list_cats('optionall=1&sort_column=name&list=1&children=1&hierarchical=1');
+
wp_list_categories('optionall=1&sort_column=name&list=1&children=1&hierarchical=1');
 
echo "</ul>";
 
echo "</ul>";
 
  elseif ( is_single() ) {
 
  elseif ( is_single() ) {
548行目: 705行目:
 
} // 以上で終わりです!
 
} // 以上で終わりです!
 
?>
 
?>
<form id="searchform" method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>">
+
<form id="searchform" method="get" action="<?php echo esc_url( $_SERVER['PHP_SELF'] ); ?>">
 
<div>
 
<div>
 
<input type="text" name="s" id="s" size="15" />
 
<input type="text" name="s" id="s" size="15" />
563行目: 720行目:
 
=== 分かりやすい 404 ページ ===
 
=== 分かりやすい 404 ページ ===
 
</div>
 
</div>
[[Creating an Error 404 Page]] という投稿の [[Creating an Error 404 Page#サーバーが 404 ページを見つけるのを助ける|サーバーが 404 ページを見つけるのを助ける]] というセクションに、PHP の条件分岐関数 <code>isset()</code> を使う例が書かれています。
+
[[Creating an Error 404 Page|404エラーページの作成]]」という記事の「[[Creating an Error 404 Page#サーバーが 404 ページを見つけるのを助ける|サーバーが 404 ページを見つけるのを助ける]]」というセクションに、PHP の条件分岐関数 <code>isset()</code> を使う例が書かれています。
  
<!-- リンク先のコード内のコメントも下記のように訳す。それまで参考としてコメントアウトで残しておきます。
 
威圧的で役に立たない404エラーページをよく見かけます。WordPress では、存在しないページへのリンクをクリックした時にメールで通知する機能を追加して、404ページの冷たい雰囲気を和らげ、読者にも管理人にも役に立つページにすることが出来ます。以下のスクリプトを使う際は、'''メールアドレスの設定'''を忘れずに行ってください。
 
  
<pre><nowiki>
+
<div id="Dynamic_Menu_Highlighting">
<p>
+
<?php
+
# スクリプトが使用する変数。変更してもかまいません。
+
$adminemail = get_bloginfo('admin_email'); # WordPress 管理人のメールアドレス
+
$website = get_bloginfo('url'); # WordPress サイトの URL
+
$websitename = get_bloginfo('name'); # WordPress サイトの名称
+
  
  if ( !isset($_SERVER['HTTP_REFERER']) ) {
 
    # 丁寧にユーザーエラーを指摘 :-)
 
        echo "ご覧になろうとした"; # 出力する文章の組み立てを開始
 
$casemessage = "でも、これが世界の終わりではありません!";
 
  } elseif ( isset($_SERVER['HTTP_REFERER'] ) ) {
 
    # 読者が探しているページを見つけるためのヒント。また、間違ったリンクを管理人に送信
 
echo "クリックされたリンク先の、 ";
 
        # 管理人に送信するメッセージを設定
 
$failuremess = "読者が $website"
 
        .$_SERVER['REQUEST_URI']." ページを見ようとした際、404(ページが見つかりません)エラーが発生しました。";
 
$failuremess .= "読者が悪いわけではありませんので、原因となる問題を訂正しましょう。
 
        被リンク元は、 ".$_SERVER['HTTP_REFERER']." です。";
 
mail($adminemail, $_SERVER['REQUEST_URI']."への間違ったリンク",
 
        $failuremess, "From: $websitename <noreply@$website>"); # 問題を管理人へ報告
 
$casemessage = "この問題について管理人へメールを自動送信しました。"; #フレンドリーなメッセージを表示
 
  }
 
  echo " ".$website.$_SERVER['REQUEST_URI']; ?>
 
というページは存在しないようです。</p>
 
<p><?php echo $casemessage; ?> ブラウザの「戻る」ボタンをクリックして
 
再度お試しになるか、お探しの内容を検索してみてください。
 
  <?php include(TEMPLATEPATH . "/searchform.php"); ?>
 
</p>
 
</nowiki></pre>
 
-->
 
 
<div id="Dynamic_Menu_Highlighting">
 
 
=== ダイナミックメニューハイライト ===
 
=== ダイナミックメニューハイライト ===
 
</div>
 
</div>
608行目: 731行目:
  
 
<div id="In_a_theme.27s_footer.php_file">
 
<div id="In_a_theme.27s_footer.php_file">
===テーマの footer.php ファイルで===
+
===テーマの footer.php ファイル内===
 
</div>
 
</div>
 
sidebar.php などの他のテンプレートファイルによってクエリが実行された場合、元の条件分岐タグは破損してしまいます。例えば、header.php では条件分岐タグが適切に機能するのに、footer.php では正しく機能しないトラブルがよくあります。これを解決するにはフッターで条件分岐タグを使う前に ''wp_reset_query'' を実行します:
 
sidebar.php などの他のテンプレートファイルによってクエリが実行された場合、元の条件分岐タグは破損してしまいます。例えば、header.php では条件分岐タグが適切に機能するのに、footer.php では正しく機能しないトラブルがよくあります。これを解決するにはフッターで条件分岐タグを使う前に ''wp_reset_query'' を実行します:
654行目: 777行目:
 
* [[#A_Tag_Page|has_tag]]
 
* [[#A_Tag_Page|has_tag]]
 
* [[#A_Category_Page|in_category]]
 
* [[#A_Category_Page|in_category]]
 +
* [[#A_Taxonomy_Page|has_term]]
 
* [[#A_404_Not_Found_Page|is_404]]
 
* [[#A_404_Not_Found_Page|is_404]]
 
* [[#The_Administration_Panels|is_admin]]
 
* [[#The_Administration_Panels|is_admin]]
660行目: 784行目:
 
* [[#An_Author_Page|is_author]]
 
* [[#An_Author_Page|is_author]]
 
* [[#A_Category_Page|is_category]]
 
* [[#A_Category_Page|is_category]]
 +
* [[#A_Child_Theme|is_child_theme]]
 
* [[#A_Comments_Popup|is_comments_popup]]
 
* [[#A_Comments_Popup|is_comments_popup]]
 +
* [[#Is_Previewed_in_the_Customizer|is_customize_preview]]
 
* [[#A_Date_Page|is_date]]
 
* [[#A_Date_Page|is_date]]
 
* [[#A_Date_Page|is_day]]
 
* [[#A_Date_Page|is_day]]
669行目: 795行目:
 
* [[#A Multi-author Site|is_multi_author]]
 
* [[#A Multi-author Site|is_multi_author]]
 
* [[#Part_of_a_network|is_multisite]]
 
* [[#Part_of_a_network|is_multisite]]
 +
* [[#Main_Site_.28Multisite.29|is_main_site]]
 
* [[#A_PAGE_Page|is_page]]
 
* [[#A_PAGE_Page|is_page]]
 
* [[#Is_a_Page_Template|is_page_template]]
 
* [[#Is_a_Page_Template|is_page_template]]
 
* [[#A_Paged_Page|is_paged]]
 
* [[#A_Paged_Page|is_paged]]
 
* [[#A_Preview|is_preview]]
 
* [[#A_Preview|is_preview]]
 +
* [[#An_RTL_Language|is_rtl]]
 
* [[#A_Search_Result_Page|is_search]]
 
* [[#A_Search_Result_Page|is_search]]
 
* [[#A_Single_Post_Page|is_single]]
 
* [[#A_Single_Post_Page|is_single]]
686行目: 814行目:
 
* [[#Any_Page_Containing_Posts|pings_open]]
 
* [[#Any_Page_Containing_Posts|pings_open]]
 
|}
 
|}
 +
 +
== 外部リソース ==
 +
 +
* [http://www.carriedils.com/wordpress-conditional-tags/ What the Weatherman Can Teach You About WordPress Conditional Tags] by Carrie Dils
 +
* Go further with conditional tags: [https://github.com/Screenfeed/SF-Meta-Archives SF Meta Archives (github)] by Greg Viguier
  
 
== 変更履歴 ==
 
== 変更履歴 ==
705行目: 838行目:
 
** <code>is_attachment()</code> を追加。
 
** <code>is_attachment()</code> を追加。
  
{{原文|Conditional Tags|111270}}<!-- 2011-11-28T22:11:30 Jeffsebring 版 -->
+
{{原文|Conditional Tags|153565}}<!--22:24, 20 August 2015‎ Fgirardey  版 -->
  
 
==関数リファレンス==
 
==関数リファレンス==
713行目: 846行目:
  
 
{{DEFAULTSORT:しようけんふんきたく}}
 
{{DEFAULTSORT:しようけんふんきたく}}
[[Category:上級トピック]]
+
[[カテゴリ:条件分岐タグ|*]]
[[Category:デザインとレイアウト]]
+
[[カテゴリ:関数]]
[[Category:テンプレートタグ]]
+
[[カテゴリ:上級トピック]]
[[Category:wp2.1]]
+
[[カテゴリ:デザインとレイアウト]]
[[Category:wp2.3]]
+
[[Category:wp2.5]]
+
[[Category:wp2.6]]
+
[[Category:wp2.7]]
+
[[Category:wp2.8]]
+
  
 
[[en:Conditional Tags]]
 
[[en:Conditional Tags]]
 
[[fr:Marqueurs conditionnels]]
 
[[fr:Marqueurs conditionnels]]
[[pt-br:Tags condicionais]]
+
[[it:Tag condizionali]]
 +
[[ja:Conditional Tags]]
 
[[tr:Koşul Etiketleri]]
 
[[tr:Koşul Etiketleri]]
 +
[[pt-br:Tags condicionais]]
 
[[zh-hans:条件标签]]
 
[[zh-hans:条件标签]]

2016年11月14日 (月) 11:51時点における最新版

目次

はじめに

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

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

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

しかし query オブジェクトへの参照があれば (例えば parse_query または pre_get_posts フック内から )、WP_Query 条件メソッドを使用できます(例: $query->is_search())。

条件の判定

条件分岐タグは、現在のページが指定した条件に合致するかどうかをチェックし、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_network_admin()
ネットワークダッシュボードやマルチサイトのネットワーク管理パネルが表示されている時。

: wp-login.php は管理者ページではありません。このページが表示されているかを確認するには、管理グローバル変数$pagenowを使う。

管理バー

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

 : 管理バー表示をコントロールするには show_admin_bar() / en を使う。この関数は 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() 
現在のポストが指定の項目(term)を持つかどうかを確認します。最初のパラメータは空の文字列である必要があります。2番目のパラメータには、分類のスラッグ、または名前を指定します。
has_term( 'green', 'color' ) 
現在の投稿が分類 'color' の項目 'green' をもつ場合。
has_term( array( 'green', 'orange', 'blue' ), 'color' ) 
現在の投稿が配列内の任意の項目をもつ場合。

term_exists

term_exists( $term, $taxonomy, $parent ) 
任意の分類の中に $term が存在すれば true を返す。$taxonomy が指定された場合、項目はその中に存在する必要がある。3番目のパラメータ $parent もまたオプションで、指定された場合、項目はこの親の子である必要があり、分類は階層型でなければならない。

is_taxonomy_hierarchical

is_taxonomy_hierarchical( $taxonomy ) 
分類 $taxonomy が階層型なら true を返す。階層型分類を宣言するには、register_taxonomy() を使用する際に 'hierarchical' => true を使用してください。

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() / en 
年別のアーカイブページが表示されている場合。
is_month() / en 
月別のアーカイブページが表示されている場合。
is_time() / en 
毎時別、毎分別、毎秒別のアーカイブページが表示されている場合。
is_new_day() / en 
投稿の日付が新しい日の場合。ループ内で使う。

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 ) / en 
$url に渡されたリンクが、このサイトからの実際の添付ファイルであれば true を返す。

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

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() /en 
新しい日付の場合 true を返す。

フィード

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

トラックバック

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

プレビュー

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

抜粋あり

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

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

has_nav_menu() /en

 : 登録済みのナビゲーションメニューロケーションにメニューが割り当てられている場合に 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 を返す。

 : 有効化するには、この関数をウィジェットの初期化後、すなわち、アクション 'init' またはその後で実行する必要がある。アクションフック一覧参照。

ブログインストール済み

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

: 最初にキャッシュが確認される。キャッシュ値を保存するキャッシュプラグインを有効化している場合、この関数は動作する。デフォルトの WordPress キャッシュを使用していて、データベースが停止した場合、問題が発生するかもしれない。

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() /en 
現在のサイトがマルチサイトインストールの一部かどうかチェックする。

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

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

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

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

ユーザーログイン済み

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

既存メール

email_exists( $email ) 
指定されたメールアドレス $email がユーザー名として登録されているかどうかを確認する。登録されている場合はユーザーの ID を返し、存在しない場合 false を返す。

既存ユーザー名

username_exists( $username ) /en 
指定されたユーザー名 $username がユーザー名として登録されているかどうかを確認する。登録されている場合はユーザーの ID を返し、存在しない場合 false を返す。

有効化済みプラグイン

is_plugin_active( $path ) 
プラグインが有効化されているかチェックする。
is_plugin_active( 'akismet/akismet.php' ) 
Akismet が有効化されているかチェックする。
is_plugin_inactive( $path ) /en 
プラグインが無効化されているかチェックする。! is_plugin_active( $path ) と同じ。
is_plugin_active_for_network( $path ) /en 
マルチサイト環境でのネットワークで有効化と同じ
is_plugin_page() /en 
ロードされたページが管理画面のプラグインページであれば true を返す。この関数は WordPress 3.1 から非推奨です。代替はありません。

子テーマ

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

機能対応のテーマ

current_theme_supports() /en 
テーマに機能が存在するかチェックする。
current_theme_support( 'post-thumbnails' ) 
現在のテーマが アイキャッチ画像 をサポートすれば true を返す。テーマに機能を追加するには add_theme_support() を使用する。

アイキャッチ画像あり

has_post_thumbnail( $post_id ) 
ID$post_id の投稿がアイキャッチ画像を含めば true を返す。テーマはアイキャッチ画像をサポートする必要がある。機能対応のテーマ 参照。

スクリプト使用中

wp_script_is( $handle, $list ) /en 
handle$handle のスクリプトが $list で指定された 'registered'、'enqueue/queue'、'done'、'to_do' であれば true を返す。

用例

    $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' );
      }

スクリプト 'fluidVids.js' が enqueue されているかどうか確認します。もし enqueue されていなければ、ファイルは登録され、enqueue される。

カスタマイザーでプレビュー中

is_customize_preview() /en 
Customizer内でサイトのプレビュー中ならtrue、それ以外ならfalseを返す。


動作サンプル

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

個別投稿

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

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

このカスタム関数を子テーマの functions.php ファイルに追加し、必要に応じて条件分岐タグを変更してください。

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

以下のようにも使えます。

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

ループ内で条件分岐タグを使用する別の例。index.php 内で、個別の投稿を表示するか、ホームページを表示する場合にコンテンツを表示し、それ以外では抜粋を表示する。

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

ホームページでない場所では、コードまたは要素を表示する必要がある場合。

<?php if ( ! is_home() ) {?>
 ここにマークアップを挿入 ...
<?php } ?>

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

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

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

if ( is_single() || is_page() ) ) {
    // 個別の投稿または固定ページであれば、何かを行う
}

if ( is_archive() && ! is_category( 'nachos' ) ) {
    // カテゴリー「nachos」を除く任意のカテゴリーアーカイブページであれば、何かを行う
}
// 3つの条件をチェック

if ( $query->is_main_query() && is_post_type_archive( 'products' ) && ! is_admin() ) {  
    // カスタム投稿タイプ Products アーカイブのメインクエリであり、
    // かつ、WordPress admin でなければ、何かを行う
}

if ( is_post_type_archive( 'movies' ) || is_tax( 'genre' ) || is_tax( 'actor' )  ) {
    // カスタム投稿タイプ Movie アーカイブ
    // または 分類 Genre アーカイブ
    // または 分類 Actor アーカイブならば、何かを行う
}


日付別の表示

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

<?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>

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

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

<!-- サイドバー開始 -->
<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 ページ

404エラーページの作成」という記事の「サーバーが 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()