- 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細)
「条件分岐タグ」の版間の差分
(→サイドバーの内容をページによって変更する: wp_list_cats 非推奨の注釈を追加(ryouji98さんさんありがとう!)) |
細 |
||
(9人の利用者による、間の46版が非表示) | |||
1行目: | 1行目: | ||
− | |||
{{テーマ・テンプレートガイド}} | {{テーマ・テンプレートガイド}} | ||
== はじめに == | == はじめに == | ||
6行目: | 5行目: | ||
これらのタグは[[テンプレート階層]]と深い関わりがあります。 | これらのタグは[[テンプレート階層]]と深い関わりがあります。 | ||
+ | |||
+ | '''注:''' 条件分岐タグが使えるのは 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_..."> | ||
11行目: | 14行目: | ||
</div> | </div> | ||
− | + | 条件分岐タグは、現在のページが指定した条件に合致するかどうかをチェックし、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()</tt> : | + | ; <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"> | ||
+ | |||
=== フロントページ === | === フロントページ === | ||
</div> | </div> | ||
− | ; <tt>is_front_page()</tt> : | + | ; <tt>[[関数リファレンス/is_front_page|is_front_page()]]</tt> : 投稿・[[Pages|固定ページ]]にかかわらず、サイトのフロントページが表示されている場合。 |
: true を返すのは、[[Settings Reading SubPanel|表示設定]]の「トップページの表示」として | : true を返すのは、[[Settings Reading SubPanel|表示設定]]の「トップページの表示」として | ||
:* 「最新の投稿」を設定している場合には、メインブログページが表示されるとき | :* 「最新の投稿」を設定している場合には、メインブログページが表示されるとき | ||
− | :* 「固定ページ (以下を選択)」を設定している場合には、「フロントページ」として選択した[[Pages| | + | :* 「固定ページ (以下を選択)」を設定している場合には、「フロントページ」として選択した[[Pages|固定ページ]]が表示されるとき |
− | + | ||
<!-- | <!-- | ||
[[管理パネル]] > [[管理パネル#Settings|設定]] > [[Settings Reading SubPanel|表示設定]]画面: | [[管理パネル]] > [[管理パネル#Settings|設定]] > [[Settings Reading SubPanel|表示設定]]画面: | ||
39行目: | 65行目: | ||
<div id="The_Administration_Panels"> | <div id="The_Administration_Panels"> | ||
− | === | + | === 管理画面 === |
</div> | </div> | ||
− | ; <tt>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> | ||
− | ; <tt>is_single()</tt> : | + | ; <tt>[[関数リファレンス/is_single|is_single()]]</tt> : 個別投稿のページ(または添付ファイルページ・カスタム投稿タイプの個別ページ)が表示されている場合。固定ページには適用されない。 |
− | ; <tt>is_single('17')</tt> : ID | + | ; <tt>is_single( '17' )</tt> : ID 17の投稿が表示されている場合。 |
− | ; <tt>is_single('Irish Stew')</tt> : "Irish Stew" | + | ; <tt>is_single( 'Irish Stew' )</tt> : "Irish Stew" というタイトルの投稿が表示されている場合。 |
− | ; <tt>is_single('beef-stew')</tt> : "beef-stew" | + | ; <tt>is_single( 'beef-stew' )</tt> : "beef-stew" という投稿スラッグの投稿が表示されている場合。 |
− | ; <tt>is_single(array(17,'beef-stew','Irish Stew'))</tt> : ID が 17、投稿スラッグが "beef-stew"、またはタイトルが "Irish Stew" | + | ; <tt>is_single( array( 17, 'beef-stew', 'Irish Stew' ) )</tt> : ID が 17、投稿スラッグが "beef-stew"、またはタイトルが "Irish Stew" のいずれかにあてはまる投稿が表示されている場合。 |
− | ; <tt>is_single(array(17, 19, 1, 11)) </tt> : | + | ; <tt>is_single( array( 17, 19, 1, 11 ) )</tt> : シングルポストの''post IDが17か19か1か11かのどちらかの場合。 |
− | ; <tt>is_single(array('beef-stew', 'pea-soup', 'chili')) </tt> : | + | ; <tt>is_single( array( 'beef-stew', 'pea-soup', 'chili' ) )</tt> : シングルポストのpost_nameが"beef-stew"、"pea-soup" または"chili"のいずれかの場合 |
− | ; <tt>is_single(array('Beef Stew', 'Pea Soup', 'Chili')) </tt> : | + | ; <tt>is_single( array( 'Beef Stew', 'Pea Soup', 'Chili' ) )</tt> : シングルポストはpost_titleが "Beef Stew"、"Pea Soup"または"Chili"のいずれかの場合 |
− | 注: | + | 注: この関数は投稿 ID、投稿タイトル、または投稿名を区別しません。投稿 ID が「17」の投稿をリクエストした場合、タイトルや投稿スラッグが「17」の投稿が表示されることがあります。 |
<div id="A_Sticky_Post"> | <div id="A_Sticky_Post"> | ||
+ | |||
=== 先頭固定表示の投稿 === | === 先頭固定表示の投稿 === | ||
</div> | </div> | ||
− | ; <tt>is_sticky()</tt> : 投稿編集ページで「この投稿を先頭に固定表示」のチェックボックスがついている投稿が表示されている場合。もし ID 変数が指定されていない場合、投稿 ID は [[The Loop|WordPress ループ]]の投稿のものになる。 | + | ; <tt>[[関数リファレンス/is_sticky|is_sticky()]]</tt> : 投稿編集ページで「この投稿を先頭に固定表示」のチェックボックスがついている投稿が表示されている場合。もし ID 変数が指定されていない場合、投稿 ID は [[The Loop|WordPress ループ]]の投稿のものになる。 |
− | + | ; <tt>is_sticky( '17' )</tt> : ID 17 の投稿が先頭固定表示の場合、真を返す。 | |
− | ; <tt>is_sticky('17')</tt> : ID 17 の投稿が先頭固定表示の場合、真を返す。 | + | |
+ | <!-- | ||
<div id="A_Post_Type"> | <div id="A_Post_Type"> | ||
=== 投稿タイプ === | === 投稿タイプ === | ||
</div> | </div> | ||
− | ; <tt>get_post_type()</tt> : | + | ; <tt>[[関数リファレンス/get_post_type|get_post_type()]]</tt> : 正確には条件分岐タグではありませんが、[[関数リファレンス/register_post_type|現在の投稿がどの投稿タイプに属しているか]]を(PHPの値として)返してくれます。 |
− | ; <tt> if( | + | ; <tt> if( 'book' == get_post_type() ) ...</tt> : 現在の投稿が「book」という投稿タイプに属しているかを判定します。 |
− | ; <tt>post_type_exists()</tt> : | + | ; <tt>[[関数リファレンス/is_singular|is_singular()]]</tt>: <tt>is_single、is_page、is_attachment</tt>のいずれかの条件を満たすときにtrueを返します。投稿タイプの判定にも使えます。 |
− | + | ; <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($post_type)</tt> : | + | |
− | ; <tt> | + | ; <tt>[[関数リファレンス/is_post_type_hierarchical|is_post_type_hierarchical($post_type)]]</tt> : この[[Conditional_Tags|条件分岐タグ]]は、その投稿タイプが階層型かどうかチェックします。これはブール関数であり、TRUEかFALSEを返します(FALSEは、その投稿タイプが存在しないことを意味するかもしれません)。 |
+ | |||
+ | 最初にその投稿タイプが存在することをチェックします。そして投稿タイプのオブジェクトを取得し、最終的にそのオブジェクト内の階層型かどうかの値を返します。 | ||
+ | |||
+ | <div id="A_Post_Type_Archive"> | ||
+ | === 投稿タイプアーカイブ === | ||
+ | </div> | ||
+ | |||
+ | ;<tt>[[関数リファレンス/is_post_type_archive|is_post_type_archive()]]</tt> : 現在のクエリが、引数に与えられた投稿タイプのアーカイブページのものかどうかチェックする。 | ||
+ | ;<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 を返す。 | ||
+ | |||
+ | 投稿タイプアーカイブを有効にするには、[[関数リファレンス/register_post_type|その投稿タイプを登録する]]際に 'has_archive' => true を使う。 | ||
<div id="A_Comments_Popup"> | <div id="A_Comments_Popup"> | ||
=== コメントポップアップ === | === コメントポップアップ === | ||
</div> | </div> | ||
− | ; <tt>is_comments_popup()</tt> : コメントポップアップウィンドウが表示されている場合。 | + | ; <tt>[[関数リファレンス/is_comments_popup|is_comments_popup()]]</tt> : コメントポップアップウィンドウが表示されている場合。 |
<div id="Any_Page_Containing_Posts"> | <div id="Any_Page_Containing_Posts"> | ||
− | === | + | === 投稿を含むページ === |
</div> | </div> | ||
− | ; <tt>comments_open()</tt>: [[The Loop|WordPress ループ]] | + | ; <tt>[[関数リファレンス/comments_open|comments_open()]]</tt>: [[The Loop|WordPress ループ]]内で処理中の投稿がコメント受信を受け付けている場合。 |
− | ; <tt>pings_open()</tt>: [[The Loop|WordPress ループ]] | + | ; <tt>[[関数リファレンス/pings_open|pings_open()]]</tt>: [[The Loop|WordPress ループ]]内で処理中の投稿がピン(ピンバックおよびトラックバック)を受け付けている場合。 |
<div id="A_PAGE_Page"> | <div id="A_PAGE_Page"> | ||
− | === | + | === WordPress ページ === |
</div> | </div> | ||
− | ここでいう「ページ」とは、WordPressにおける[[Pages|固定ページ]]のことで、いわゆる「Web | + | ここでいう「ページ」とは、WordPressにおける[[Pages|固定ページ]]のことで、いわゆる「Web ページ」とは異なります。つまり、''post_type'' が 'page' となっているもののことです。詳しくは、「[[Pages#用語について|用語について]]」をご覧ください。 |
− | ; <tt>is_page()</tt> : [[Pages| | + | ; <tt>[[関数リファレンス/is_page|is_page()]]</tt> : [[Pages|固定ページ]]が表示されている場合。 |
− | ; <tt>is_page('42')</tt> : ID 42の[[Pages| | + | ; <tt>is_page( '42' )</tt> : ID 42の[[Pages|固定ページ]]が表示されている場合。 |
− | ; <tt>is_page('About Me And Joe')</tt> : "About Me And Joe"というタイトルの[[Pages| | + | ; <tt>is_page( 'About Me And Joe' )</tt> : "About Me And Joe"というタイトルの[[Pages|固定ページ]]が表示されている場合。 |
− | ; <tt>is_page('about-me')</tt> : "about-me"という投稿スラッグの[[Pages| | + | ; <tt>is_page( 'about-me' )</tt> : "about-me"という投稿スラッグの[[Pages|固定ページ]]が表示されている場合。 |
− | ; <tt>is_page(array(42,'about-me','About Me And Joe'))</tt> : ID が 42、投稿スラッグが "about-me"、またはタイトルが "About Me And Joe" のいずれかにあてはまる[[Pages| | + | ; <tt>is_page( array( 42, 'about-me', 'About Me And Joe' ) )</tt> : ID が 42、投稿スラッグが "about-me"、またはタイトルが "About Me And Joe" のいずれかにあてはまる[[Pages|固定ページ]]が表示されている場合。 |
− | : | + | ; <tt>is_page( array( 42, 54, 6 ) )</tt> : ID が 42、54、または6のいずれかの[[Pages|固定ページ]]が表示されている場合。 |
− | + | 他のスニペットについては [[関数リファレンス/is_page|is_page()]] を参照。 | |
− | + | ||
− | + | ||
− | + | ''注'': 固定ページがサブページかどうかをチェックする関数はありません。この問題を解決するには以下を参考にしてください。 | |
− | + | <pre>if ( is_page() && $post->post_parent > 0 ) { | |
− | <pre> | + | echo "これは子ページです"; |
− | + | }</pre> | |
− | + | <div id="Is_a_Page_Template"> | |
− | + | ==== ページテンプレート ==== | |
− | + | </div> | |
− | + | この条件分岐タグを使うと、特定の[[Pages#ページテンプレート|ページテンプレート]]を使っているかどうかをチェックできます。 | |
− | + | ||
− | + | ||
− | + | ; <tt>[[関数リファレンス/is_page_template|is_page_template()]]</tt> | |
+ | : [[Pages#ページテンプレート|ページテンプレート]]が使われている場合。 | ||
+ | ; <tt>is_page_template('about.php')</tt> : "about" という[[Pages#ページテンプレート|ページテンプレート]]が使われている場合。 | ||
− | ''' | + | ''注'': ファイルがサブディレクトリにある場合はファイル名のみだけではなくパスも含める必要があります。例: <tt>page-templates/about.php</tt> |
− | < | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | </ | + | |
− | + | <div id="A_Category_Page"> | |
− | + | === カテゴリーページ === | |
+ | </div> | ||
− | ''' | + | ; <tt>[[関数リファレンス/is_category|is_category()]]</tt> : ページが <tt>$category</tt> カテゴリーと関連付けられている場合。 |
− | < | + | ; <tt>is_category( '9' )</tt> : カテゴリーID 9のアーカイブページが表示されている場合。 |
− | < | + | ; <tt>is_category( 'Stinky Cheeses' )</tt> : "Stinky Cheeses"というカテゴリーのアーカイブページが表示されている場合。 |
+ | ; <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>'''in'''_category( '5' )</tt> : (注: '''in'''_category です。) 現在の投稿がカテゴリーID 5に'''属する'''場合に true を返します。 [[テンプレートタグ/in_category|詳細]] | ||
+ | ; <tt>in_category( array( 1,2,3 ) )</tt> : 現在の記事が、カテゴリID 1、2、3の'''いずれか'''に属している場合は true を返します。 | ||
+ | ; <tt>! in_category( array( 4,5,6 ) )</tt> : 現在の記事が、カテゴリID 4、5、6の'''いずれにも属していない'''場合は true を返します。先頭に「!」が付くことに注目してください。 | ||
− | + | '''注意:''' テストの際にはスペリングをしっかりチェックしましょう。"is" と "in" では意味が大きく異なります。 | |
− | + | ||
− | + | ||
− | + | <tt>[[#Any Archive Page|is_archive()]]</tt> と[[Category Templates|カテゴリーテンプレート]]も参照してください。 | |
− | + | ||
− | + | <div id="A_Tag_Page"> | |
− | + | ||
− | + | === タグページ === | |
− | + | </div> | |
− | + | ||
− | + | ; <tt>[[関数リファレンス/is_tag|is_tag()]]</tt> : タグのアーカイブページが表示されている場合。 | |
− | </ | + | ; <tt>is_tag( 'mild' )</tt> : 'mild' というスラッグのついたタグのアーカイブページが表示されている場合。 |
+ | ; <tt>is_tag( array( 'sharp', 'mild', 'extreme' ) )</tt> : 'sharp' または 'mild' または 'extreme' というスラッグのついたタグのアーカイブページが表示されている場合。 | ||
+ | ; <tt>[[関数リファレンス/has_tag|has_tag()]]</tt> : タグのある投稿がループ内で表示されている場合。バージョン2.7以前ではループ内で使う必要がある。 | ||
+ | ; <tt>has_tag( 'mild' )</tt> : 'mild' というタグのある投稿が表示されている場合。 | ||
+ | ; <tt>has_tag( array( 'sharp', 'mild', 'extreme' ) )</tt> : 配列内のいずれかのタグのある投稿が表示されている場合。 | ||
− | + | <tt>[[#Any Archive Page|is_archive()]]</tt> と [[Tag Templates|タグテンプレート]]/[[:en:Tag Templates|en]] もあわせてお読みください。 | |
− | + | <div id="A_Taxonomy_Page"> | |
− | + | === タクソノミーページ (その他関連するもの) === | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | <div id=" | + | |
− | === | + | |
</div> | </div> | ||
− | |||
− | ; <tt> | + | ==== is_tax ==== |
− | ; <tt> | + | ; <tt>[[関数リファレンス/is_tax|is_tax()]]</tt> : タクソノミーのアーカイブページが表示されている場合。 |
+ | ; <tt>is_tax( 'flavor' )</tt> : 'flavor' というスラッグのついたタクソノミーのアーカイブページが表示されている場合。 | ||
+ | ; <tt>is_tax( 'flavor', array( 'sharp', 'mild', 'extreme' ) )</tt> : 'sharp' または 'mild' または 'extreme' というスラッグのついた flavor タクソノミーのアーカイブページが表示されている場合。 | ||
− | < | + | <tt>[[#Any Archive Page|is_archive()]]</tt> もあわせてお読みください。 |
− | + | ||
− | </ | + | |
− | + | ==== has_term ==== | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | <tt>[[ | + | ; <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> | + | ; <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>[[ | + | ;<tt>[[関数リファレンス/taxonomy_exists|taxonomy_exists( $taxonomy )]]</tt> : あるタクソノミーが [[関数リファレンス/register_taxonomy|register_taxonomy()]] を使って登録されている場合 true を返す。 |
− | <div id=" | + | <tt>[[#Any Archive Page|is_archive()]]</tt> もあわせてお読みください。 |
− | === | + | |
+ | <div id="An_Author_Page"> | ||
+ | === 作成者ページ === | ||
</div> | </div> | ||
− | ; <tt> | + | ; <tt>[[関数リファレンス/is_author|is_author()]]</tt> : 作成者のアーカイブページが表示されている場合。 |
+ | ; <tt>is_author( '4' )</tt> : ID 4 の作成者のアーカイブページを表示している場合。 | ||
+ | ; <tt>is_author( 'Vivian' )</tt> : ニックネームが"Vivian"のアーカイブページを表示している場合。 | ||
+ | ; <tt>is_author( 'john-jones' )</tt> : "john-jones" という「ナイスネーム」を持つ作成者のアーカイブページを表示している場合。 | ||
+ | ; <tt>is_author( array( 4, 'john-jones' , 'Vivian' ) )</tt> : ID が4、ナイスネームが "john-jones"、またはニックネームが "Vivian" という作成者のアーカイブページを表示している場合。 | ||
− | <div id=" | + | <tt>[[#Any Archive Page|is_archive()]]</tt> や[[Author Templates|作成者テンプレート]]/[[:en:Author Templates|en]] もあわせてお読みください。 |
+ | |||
+ | <div id="A_Multi-author_Site"> | ||
=== 作成者ページ === | === 作成者ページ === | ||
</div> | </div> | ||
− | ; <tt> | + | ; <tt>[[関数リファレンス/is_multi_author|is_multi_author()]]</tt> : サイト上に一人以上投稿を公開しているユーザーがいる場合。[[Version 3.2|バージョン 3.2]] から導入された。 |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | <tt>[[#Any Archive Page|is_archive()]]</tt> や[[Author Templates|作成者テンプレート]]/[[:en:Author Templates|en]] | + | <tt>[[#Any Archive Page|is_archive()]]</tt> や[[Author Templates|作成者テンプレート]]/[[:en:Author Templates|en]] もあわせてお読みください。 |
<div id="A_Date_Page"> | <div id="A_Date_Page"> | ||
255行目: | 265行目: | ||
</div> | </div> | ||
− | ; <tt>is_date()</tt> : 日付別のアーカイブページのいずれかが表示されている場合。(例:月別、年別、日別、時間別) | + | ; <tt>[[関数リファレンス/is_date|is_date()]] </tt> : 日付別のアーカイブページのいずれかが表示されている場合。(例:月別、年別、日別、時間別) |
− | ; <tt>is_year()</tt> : 年別のアーカイブページが表示されている場合。 | + | ; <tt>[[関数リファレンス/is_year|is_year()]] / [[:en:Function_Reference/is_year|en]]</tt> : 年別のアーカイブページが表示されている場合。 |
− | ; <tt>is_month()</tt> : 月別のアーカイブページが表示されている場合。 | + | ; <tt>[[関数リファレンス/is_month|is_month()]] / [[:en:Function_Reference/is_month|en]]</tt> : 月別のアーカイブページが表示されている場合。 |
− | ; <tt> | + | ; <tt>[[関数リファレンス/is_time|is_time()]] / [[:en:Function_Reference/is_time|en]]</tt> : 毎時別、毎分別、毎秒別のアーカイブページが表示されている場合。 |
− | ; <tt> | + | ; <tt>[[関数リファレンス/is_new_day|is_new_day()]] / [[:en:Function_Reference/is_new_day|en]]</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()</tt> : | + | ; <tt>[[関数リファレンス/is_archive|is_archive()]]</tt> : 各アーカイブページが表示されている場合。アーカイブページには、カテゴリー、タグ、その他のタクソノミー項目、カスタム投稿タイプアーカイブ、作成者、日付別のものがあります。 |
<div id="A_Search_Result_Page"> | <div id="A_Search_Result_Page"> | ||
273行目: | 284行目: | ||
</div> | </div> | ||
− | ; <tt>is_search()</tt> : 検索結果のページが表示されている場合。 | + | ; <tt>[[関数リファレンス/is_search|is_search()]]</tt> : 検索結果のページが表示されている場合。 |
<div id="A_404_Not_Found_Page"> | <div id="A_404_Not_Found_Page"> | ||
279行目: | 290行目: | ||
</div> | </div> | ||
− | ; <tt>is_404()</tt> : "HTTP 404: Not Found"エラーページが表示されている場合。 | + | ; <tt>[[関数リファレンス/is_404|is_404()]]</tt> : "HTTP 404: Not Found"エラーページが表示されている場合。 |
<div id="A_Paged_Page"> | <div id="A_Paged_Page"> | ||
285行目: | 296行目: | ||
</div> | </div> | ||
− | ; <tt>is_paged()</tt> : | + | ; <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"> | ||
291行目: | 302行目: | ||
</div> | </div> | ||
− | ; <tt>is_attachment()</tt> : | + | ; <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()</tt> : <tt>is_single()</tt>、<tt>is_page()</tt> 、<tt>is_attachment()</tt> | + | |
− | ; <tt>is_singular(' | + | ; <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( ' | + | ; <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()</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()</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()</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()</tt> : 投稿に (手動で書かれた) 抜粋がある場合。 | + | ; <tt>[[関数リファレンス/has_excerpt|has_excerpt()]]</tt> : 投稿に (手動で書かれた) 抜粋がある場合。 |
− | ; <tt>has_excerpt('42')</tt> : 投稿 ID 42 の投稿に抜粋がある場合。 | + | ; <tt>has_excerpt( '42' )</tt> : 投稿 ID 42 の投稿に抜粋がある場合。 |
− | < | + | <div id="Has_A_Nav_Menu_Assigned"> |
− | // | + | === ナビゲーションメニュー割り当てあり === |
− | + | </div> | |
+ | ; <tt>[[関数リファレンス/has_nav_menu|has_nav_menu()]] /[[:en:Function_Reference/has_nav_menu|en]] | ||
+ | </tt> : 登録済みのナビゲーションメニューロケーションにメニューが割り当てられている場合に <tt>true</tt> を返す。 | ||
− | + | [[関数リファレンス/register_nav_menu|register_nav_menu()]] も参照。 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | = | + | <div id="Inside_The_Loop"> |
− | + | === ループ内 === | |
+ | </div> | ||
+ | ; <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> | ||
+ | ; <tt>[[関数リファレンス/is_active_sidebar|is_active_sidebar()]]</tt> : 指定したサイドバーが使用中の場合、''true'' を返す。サイドバー名、ID を指定できる。 | ||
+ | |||
+ | ''注'': サイドバーのコンテンツを表示するには [[関数リファレンス/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> | <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> | </pre> | ||
− | + | <div id="Part_of_a_network"> | |
+ | === ネットワークの一部(マルチサイト) === | ||
+ | </div> | ||
+ | ; <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> | ||
+ | ; <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> | ||
+ | ; <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> | ||
+ | ; <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> | <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> | </pre> | ||
+ | スクリプト 'fluidVids.js' が enqueue されているかどうか確認します。もし enqueue されていなければ、ファイルは登録され、enqueue される。 | ||
− | <div id=" | + | <div id="Is Previewed in the Customizer"> |
− | === | + | === カスタマイザーでプレビュー中=== |
</div> | </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>を返す。 | |
− | + | ||
− | + | ||
− | ; <tt> | + | |
− | + | ||
<div id="Working_Examples"> | <div id="Working_Examples"> | ||
374行目: | 549行目: | ||
<div id="Single_Post"> | <div id="Single_Post"> | ||
− | === | + | === 個別投稿 === |
</div> | </div> | ||
− | 以下は<tt>is_single()</tt> | + | 以下は<tt>is_single()</tt>によって特定の情報を個別投稿のページでのみ表示させるための例文です。 |
<pre> | <pre> | ||
if ( is_single() ) { | if ( is_single() ) { | ||
− | echo ' | + | echo 'この投稿は' . get_the_title() . 'カテゴリーに属しています'; |
} | } | ||
</pre> | </pre> | ||
− | + | このカスタム関数を子テーマの functions.php ファイルに追加し、必要に応じて条件分岐タグを変更してください。 | |
<pre> | <pre> | ||
− | if (is_home() || is_single()) { | + | 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> | ||
+ | if ( is_home() || is_single() ) { | ||
the_content(); | the_content(); | ||
} | } | ||
395行目: | 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"> | ||
407行目: | 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 | + | <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> | ||
413行目: | 652行目: | ||
<?php | <?php | ||
// 日付別アーカイブページかどうかをチェック | // 日付別アーカイブページかどうかをチェック | ||
− | if (is_date()) | + | if ( is_date() ) { |
− | { | + | if ( date( 'Y' ) != get_the_date( 'Y' ) ) { |
− | if (date('Y') != get_the_date('Y')) | + | // 今年の投稿ではない場合、"oldentry" クラスを追加してスタイルを変える |
− | + | ||
− | // | + | |
echo '<div class="oldentry">'; | echo '<div class="oldentry">'; | ||
} else { | } else { | ||
425行目: | 662行目: | ||
echo '<div class="entry">'; | echo '<div class="entry">'; | ||
} | } | ||
− | the_content('続きを読む »'); | + | the_content( '続きを読む »' ); |
?> | ?> | ||
</div> | </div> | ||
436行目: | 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> | ||
<!-- サイドバー開始 --> | <!-- サイドバー開始 --> | ||
443行目: | 679行目: | ||
<?php | <?php | ||
// 表示中のページに合わせたサイドバーコンテンツを生成 | // 表示中のページに合わせたサイドバーコンテンツを生成 | ||
− | if (is_home()) { | + | if ( is_home() ) { |
− | + | // ホームページを表示している際、トップレベルカテゴリーの一覧を表示 | |
− | + | echo "<ul>"; | |
− | + | wp_list_categories('optionall=0&sort_column=name&list=1&children=0'); | |
− | + | echo "</ul>"; | |
− | } elseif (is_category()) { | + | } 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()) { | + | } elseif ( is_page() ) { |
− | + | // 固定ページを表示しています。どのページ? | |
− | + | if ( is_page( '管理人について' ) ) { | |
− | + | // 「管理人について」ページ | |
− | + | echo "<p>当ブログの管理人についての説明ページ。</p>"; | |
− | + | } elseif ( is_page( 'ブログについて' ) ) { | |
− | + | echo "<p>当ブログについての説明ページ。</p>"; | |
− | + | } else { | |
− | + | // その他の固定ページで表示させたいものがあればここに記入 | |
− | + | } | |
} else { | } else { | ||
− | + | // その他のページ(アーカイブページ、検索、404など)で表示させたいものがあればここに記入 | |
} // 以上で終わりです! | } // 以上で終わりです! | ||
?> | ?> | ||
− | <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" /> | ||
− | <input type="submit" value="<?php _e('Search'); ?>" /> | + | <input type="submit" value="<?php _e( 'Search' ); ?>" /> |
</div> | </div> | ||
</form> | </form> | ||
484行目: | 720行目: | ||
=== 分かりやすい 404 ページ === | === 分かりやすい 404 ページ === | ||
</div> | </div> | ||
− | [[Creating an Error 404 Page]] | + | 「[[Creating an Error 404 Page|404エラーページの作成]]」という記事の「[[Creating an Error 404 Page#サーバーが 404 ページを見つけるのを助ける|サーバーが 404 ページを見つけるのを助ける]]」というセクションに、PHP の条件分岐関数 <code>isset()</code> を使う例が書かれています。 |
− | |||
− | |||
− | < | + | <div id="Dynamic_Menu_Highlighting"> |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=== ダイナミックメニューハイライト === | === ダイナミックメニューハイライト === | ||
</div> | </div> | ||
529行目: | 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'' を実行します: | ||
536行目: | 738行目: | ||
<?php | <?php | ||
wp_reset_query(); | wp_reset_query(); | ||
− | if (is_page('2') ) { | + | if ( is_page( '2' ) ) { |
− | echo ' | + | echo 'ページ 2 です。'; |
} | } | ||
?> | ?> | ||
547行目: | 749行目: | ||
<?php | <?php | ||
query_posts('posts_per_page=5&cat=123'); | query_posts('posts_per_page=5&cat=123'); | ||
− | if(have_posts()) : | + | if( have_posts() ) : |
− | while(have_posts()) : | + | while( have_posts() ) : |
the_posts(); | the_posts(); | ||
/* 投稿を出力するなどの処理... */ | /* 投稿を出力するなどの処理... */ | ||
575行目: | 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]] | ||
581行目: | 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]] | ||
588行目: | 793行目: | ||
* [[#The_Main_Page|is_home]] | * [[#The_Main_Page|is_home]] | ||
* [[#A_Date_Page|is_month]] | * [[#A_Date_Page|is_month]] | ||
+ | * [[#A Multi-author Site|is_multi_author]] | ||
+ | * [[#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]] | ||
* [[#A_Single_Page,_Single_Post_or_Attachment|is_singular]] | * [[#A_Single_Page,_Single_Post_or_Attachment|is_singular]] | ||
* [[#A_Sticky_Post|is_sticky]] | * [[#A_Sticky_Post|is_sticky]] | ||
+ | * [[#Admin_of_a_network|is_super_admin]] | ||
* [[#A_Tag_Page|is_tag]] | * [[#A_Tag_Page|is_tag]] | ||
+ | * [[#A_Taxonomy_Page|is_tax]] | ||
* [[#A Taxonomy Page|is_tax]] | * [[#A Taxonomy Page|is_tax]] | ||
* [[#A_Date_Page|is_time]] | * [[#A_Date_Page|is_time]] | ||
603行目: | 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 | ||
== 変更履歴 == | == 変更履歴 == | ||
622行目: | 838行目: | ||
** <code>is_attachment()</code> を追加。 | ** <code>is_attachment()</code> を追加。 | ||
− | {{原文|Conditional Tags| | + | {{原文|Conditional Tags|153565}}<!--22:24, 20 August 2015 Fgirardey 版 --> |
==関数リファレンス== | ==関数リファレンス== | ||
630行目: | 846行目: | ||
{{DEFAULTSORT:しようけんふんきたく}} | {{DEFAULTSORT:しようけんふんきたく}} | ||
− | [[ | + | [[カテゴリ:条件分岐タグ|*]] |
− | [[ | + | [[カテゴリ:関数]] |
− | [[ | + | [[カテゴリ:上級トピック]] |
− | [[ | + | [[カテゴリ:デザインとレイアウト]] |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
[[en:Conditional Tags]] | [[en:Conditional Tags]] | ||
[[fr:Marqueurs conditionnels]] | [[fr:Marqueurs conditionnels]] | ||
+ | [[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時点における最新版
目次
- 1 はじめに
- 2 条件の判定
- 2.1 ブログページ
- 2.2 メインページ
- 2.3 フロントページ
- 2.4 管理画面
- 2.5 管理バー
- 2.6 個別投稿ページ
- 2.7 先頭固定表示の投稿
- 2.8 階層を持つ投稿タイプ
- 2.9 投稿タイプアーカイブ
- 2.10 コメントポップアップ
- 2.11 投稿を含むページ
- 2.12 WordPress ページ
- 2.13 カテゴリーページ
- 2.14 タグページ
- 2.15 タクソノミーページ (その他関連するもの)
- 2.16 作成者ページ
- 2.17 作成者ページ
- 2.18 日付別ページ
- 2.19 アーカイブページ
- 2.20 検索結果ページ
- 2.21 404 Not Found ページ
- 2.22 複数にわたるページ
- 2.23 添付ファイルページ
- 2.24 画像の添付ファイル
- 2.25 ローカル添付ファイル
- 2.26 シングルページ (固定ページ、個別投稿ページ、添付ファイルページ)
- 2.27 登録済み投稿タイプ
- 2.28 メインクエリ
- 2.29 新しい日付
- 2.30 フィード
- 2.31 トラックバック
- 2.32 プレビュー
- 2.33 抜粋あり
- 2.34 ナビゲーションメニュー割り当てあり
- 2.35 ループ内
- 2.36 ダイナミックサイドバー対応
- 2.37 サイドバー使用中
- 2.38 ウィジェット使用中
- 2.39 ブログインストール済み
- 2.40 RTL 読み
- 2.41 ネットワークの一部(マルチサイト)
- 2.42 メインサイト(マルチサイト)
- 2.43 ネットワークの管理者(マルチサイト)
- 2.44 ユーザーログイン済み
- 2.45 既存メール
- 2.46 既存ユーザー名
- 2.47 有効化済みプラグイン
- 2.48 子テーマ
- 2.49 機能対応のテーマ
- 2.50 アイキャッチ画像あり
- 2.51 スクリプト使用中
- 2.52 カスタマイザーでプレビュー中
- 3 動作サンプル
- 4 条件分岐タグ インデックス
- 5 外部リソース
- 6 変更履歴
- 7 関数リファレンス
はじめに
条件分岐タグ (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_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('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_type が register_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 の投稿に抜粋がある場合。
: 登録済みのナビゲーションメニューロケーションにメニューが割り当てられている場合に 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()
を使う例が書かれています。
ダイナミックメニューハイライト
ダイナミックハイライトとは、条件分岐タグを使用して、メニュー内の現在アクセスしているページを際立たせる方法です。
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(); ?>