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

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

「関数リファレンス/is page」の版間の差分

提供: WordPress Codex 日本語版
移動先: 案内検索
(英語版をコピペ)
 
(関連資料: {{Page Tags}})
 
(2人の利用者による、間の2版が非表示)
1行目: 1行目:
==Description==
+
<div id="Description">
This [[Conditional Tags|Conditional Tag]] checks if [[Pages]] are being displayed. This is a boolean function, meaning it returns either TRUE or FALSE. This tag must be used BEFORE [[The Loop]] and does not work inside The Loop (see [[#Notes|Notes]] below).
+
== 説明 ==
 +
</div>
  
==Usage==
+
この[[条件分岐タグ|条件分岐タグ]]は、個別の[[Pages|固定ページ]]を表示しているかどうかをチェックします。これは真偽値を返す関数であり、''TRUE'' または ''FALSE'' を返します。このタグは[[The Loop|ループ]]の前に使われる必要があり、ループ内では機能しません(以下の[[#Notes|注釈]]を参照してください)。
%%%<?php is_page($page); ?>%%%
+
  
==Parameters==
+
<div id="Usage">
{{Parameter|$page|mixed|Page ID, Page Title or Page Slug|optional}}
+
== 使い方 ==
 +
</div>
  
==Return Values==
+
<?php is_page( $page ); ?>
; <tt>(boolean)</tt> : <tt>true</tt> on success, <tt>false</tt> on failure.
+
 
 +
<div id="Parameters">
 +
== パラメータ ==
 +
</div>
 +
 
 +
{{Parameter|$page|mixed|固定ページの ID、タイトル、スラッグ、またはそれらの配列。|オプション}}
 +
:'''参考:'''省略すると「任意の固定ページ」という意味になります。
 +
 
 +
<div id="Return_values">
 +
== 戻り値 ==
 +
</div>
 +
 
 +
; <tt>(真偽値)</tt> : 指定された条件の固定ページを表示している場合は <tt>true</tt>、それ以外は <tt>false</tt>
 +
 
 +
<div id="Examples">
 +
== 用例 ==
 +
</div>
  
==Examples==
 
 
  is_page();
 
  is_page();
  // When any single Page is being displayed.
+
  // 何れかの個別の固定ページが表示されている場合。
 
   
 
   
  is_page(42);
+
  is_page( 42 );
  // When Page 42 (ID) is being displayed.
+
  // ID が 42 の固定ページが表示されている場合。
 
   
 
   
  is_page('Contact');
+
  is_page( 'Contact' );
  // When the Page with a ''post_title'' of "Contact" is being displayed.
+
  // ''post_title'' "Contact" である固定ページが表示されている場合。
 
   
 
   
  is_page('about-me');
+
  is_page( 'about-me' );
  // When the Page with a ''post_name'' (slug) of "about-me" is being displayed.
+
  // ''post_name''(スラッグ)が "about-me" である固定ページが表示されている場合。
 
   
 
   
  is_page(array(42,'about-me','Contact'));
+
  is_page( array( 42, 'about-me', 'Contact' ) );
  // Returns true when the Pages displayed is either post ID 42, or ''post_name'' "about-me", or ''post_title'' "Contact".  Note: the array ability was added at [[Version 2.5]].
+
  // ID 42 か、''post_name'' "about-me" か、''post_title'' "Contact" である固定ページが表示されている場合に ''true'' を返します。
 +
'''参考''':[[Version 2.5|バージョン 2.5]] から配列機能が追加されました。
  
==Notes==
+
<div id="Testing_for_paginated_Pages">
 +
==== ページ分けされている固定ページであるか ====
 +
</div>
  
===Passing Empty Value Returns TRUE===
+
次のコードを使えば、<tt><!<nowiki></nowiki>--nextpage--></tt> クイックタグによって固定ページ(または投稿)をページ分けしてある場合に何ページ目を表示中かをチェックできます。これは例えば、複数ページに分けられた固定ページの先頭ページのみにカスタムフィールドの値を表示したいときに便利です。
Be very careful if there's a possibility of passing an empty value as a parameter to check for a specific page, since the following lines will return <tt>true</tt>:
+
 
 +
'''例 1'''
 +
<pre>
 +
<?php       
 +
$paged = $wp_query->get( 'paged' );
 +
 
 +
if ( ! $paged || $paged < 2 )
 +
{
 +
    // ページ分けされていない(またはページ分けされている固定ページや投稿の先頭ページ)
 +
}
 +
else
 +
{
 +
    // 2 ページ目以降。
 +
}
 +
?>
 +
</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( 'paged' ) ? get_query_var( 'paged' ) : false;
 +
if ( $paged === false )
 +
{
 +
    // ページ分けされていない(またはページ分けされている固定ページや投稿の先頭ページ)
 +
}
 +
else
 +
{
 +
    // 2 ページ目以降。
 +
}
 +
?>
 +
</pre>
 +
 
 +
'''例 3'''
 +
<pre>
 +
<?php
 +
if ( 0 === get_query_var( 'page' ) ) {
 +
    // ページ分けされていない(またはページ分けされている固定ページや投稿の先頭ページ)
 +
}
 +
else {
 +
    // 2 ページ目以降。
 +
}
 +
</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>
 +
 
 +
下記の例 2 のコードを使えば、自分で <tt>is_subpage()</tt> 関数を作ることができます。これをテーマの [[テーマの作成#Theme_Functions_File|<tt>functions.php</tt>]] ファイルへ追加します。上記の例 1 と同じ方法で親ページをテストしますが、子ページなら親の固定ページの ID を、そうでなければ <tt>false</tt> を返す点が違います。
 +
 
 +
'''例 2'''
 +
<pre>
 +
function is_subpage() {
 +
    global $post;                              // 現在の固定ページの詳細を読み込む
 +
 
 +
    if ( is_page() && $post->post_parent ) {  // 親を持つ固定ページであるかテスト
 +
        return $post->post_parent;            // 親ページの ID を返す
 +
    } else {                                  // 親がなければ…
 +
        return false;                          // false を返す
 +
    }
 +
}
 +
</pre>
 +
 
 +
子ページのテストを何度も行う予定があるなら、例 1 のようなテストを毎回行うよりも、この例 2 のような関数を使うことを推奨します。
 +
 
 +
親が特定の固定ページ、例えばタイトルやスラッグが "About"(ID が 2)である固定ページであるかテストするには、次の例 3 のコードが使えます。このテストは、特定の固定ページか、その任意の固定ページを表示中かどうかチェックします。これは web サイトの各セクションに応じた値(異なるバナー画像や、異なるヘッダー文字列)を変数にセットするのに便利です。
 +
 
 +
'''例 3'''
 +
<pre>
 +
<?php
 +
if ( is_page( 'about' ) || '2' == $post->post_parent ) {   
 +
    // 現在の固定ページが "About" か、または親ページが "About"
 +
    $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 のテストをもっと簡単に行えるようにした関数です。この関数は、ある固定ページ(つまり "About")か、その子ページ(つまり親ページの ID が "2")を表示中なら <tt>true</tt> を返します。
 +
 
 +
'''例 4'''
 +
<pre>
 +
function is_tree( $pid ) {      // $pid = この ID を持つ固定ページの子ページを表示中であるか
 +
    global $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>
 +
 
 +
これをテーマの [[テーマの作成#Theme_Functions_File|<tt>functions.php</tt>]] ファイルへ追加した後、<tt>is_tree( 'id' )</tt> のように呼び出せば、現在の固定ページがそれ(<tt>'id'</tt>)またはその子ページであるかチェックできます。例 3 の最初の <tt>if</tt> タグに書いてある "<tt>is_page( 'about' ) || '2' == $post->post_parent</tt>" を、<tt>is_tree( '2' )</tt> と書くことができます。
 +
 
 +
'''注意:''' 2 階層以上の固定ページがある場合、親ページはすぐ上(1 階層だけ上)であり、階層の最上位の固定ページではありません。
 +
 
 +
<div id="Is_a_Page_Template">
 +
==== 固定ページテンプレートを使用中であるか ====
 +
</div>
 +
 
 +
下記の関数を使えば、固定ページテンプレート(任意の、または特定の)を使って表示中かどうかをチェックできます。
 +
 
 +
; [[関数リファレンス/is_page_template|<tt>is_page_template()</tt>]]/[[:en:Function_Reference/is_page_template|en]] : [[Pages#Page_Templates|固定ページテンプレート]]/[[:en:Page_Templates|en]] を使用中であるか?
 +
 
 +
例えば <tt>is_page_template( 'about.php' )</tt> のように呼び出すと、'about' 固定ページテンプレートを使用中かどうかが判ります。特定の固定ページテンプレートを指定するには <tt>about.php</tt> や <tt>my_page_template.php</tt> のようなファイル名を指定する必要があります。'''注意:'''ファイルがサブディレクトリにあるならディレクトリ名も含めなければなりません。つまりテーマディレクトリを起点とする相対パス、例えば <tt>'page-templates/about.php'</tt> にします。
 +
 
 +
<div id="Notes">
 +
==注釈==
 +
</div>
 +
 
 +
=== 空の値を入力すると TRUE が戻る ===
 +
特定の固定ページをチェックするために、空の値をパラメータとして渡す可能性がある場合は注意してください。以下の場合 <tt>true</tt> が返されます:
 
<pre>is_page( '' )
 
<pre>is_page( '' )
 
is_page( 0 )
 
is_page( 0 )
38行目: 198行目:
 
is_page( array() )</pre>
 
is_page( array() )</pre>
  
* See also: [[Function Reference/is singular|is_singular()]]
+
* [[関数リファレンス/is singular|is_singular()]] も参照してください。
  
===Cannot Be Used Inside The Loop===
+
=== ループの中では使えません ===
Due to certain global variables being overwritten during The Loop <code>is_page()</code> will not work. In order to use it after The Loop you must call [[Function_Reference/wp_reset_query| wp_reset_query()]] after The Loop.
+
[[ループ]]の中では、いくつかのグローバル変数が置き換えられるため <code>is_page()</code> は機能しません。ループの後で使う場合は、その前に [[関数リファレンス/wp_reset_query| wp_reset_query()]] を呼び出す必要があります。
  
* See also [[Function_Reference/is_page_template|is_page_template()]]
+
* [[関数リファレンス/is_page_template|is_page_template()]]/[[:en:Function_Reference/is_page_template|en]] も参照してください。
  
==Change Log==
+
== 変更履歴 ==
Since: 1.5.0
+
* バージョン 1.5.0 : 新規導入
  
==Source File==
+
== ソースファイル ==
<!-- Need links to current source code files -->
+
<tt>is_page()</tt> {{Trac|wp-includes/query.php}} に含まれています。
<tt>is_page()</tt> is located in {{Trac|wp-includes/query.php}}.
+
  
==Related==
+
<div id="Related">
 +
== 関連資料 ==
 +
</div>
 +
 
 +
{{Page Tags}}
  
 
{{Conditional Tags}}
 
{{Conditional Tags}}
58行目: 221行目:
 
{{Tag Footer}}
 
{{Tag Footer}}
  
[[Category:Conditional Tags]]
+
{{原文|Function Reference/is page|146072}} <!-- 01:06, 24 August 2014 Srikat 版 -->
[[Category:Functions]]
+
 
 +
{{DEFAULTSORT:Is_page}}
 +
[[Category:条件分岐タグ]]
 +
[[Category:関数]]
 +
 
 +
[[en:Function Reference/is_page]]

2015年5月17日 (日) 11:37時点における最新版

この条件分岐タグは、個別の固定ページを表示しているかどうかをチェックします。これは真偽値を返す関数であり、TRUE または FALSE を返します。このタグはループの前に使われる必要があり、ループ内では機能しません(以下の注釈を参照してください)。

使い方

<?php is_page( $page ); ?>

パラメータ

$page
mixed) (オプション) 固定ページの ID、タイトル、スラッグ、またはそれらの配列。
初期値: なし
参考:省略すると「任意の固定ページ」という意味になります。

戻り値

(真偽値) 
指定された条件の固定ページを表示している場合は true、それ以外は false

用例

is_page();
// 何れかの個別の固定ページが表示されている場合。

is_page( 42 );
// ID が 42 の固定ページが表示されている場合。

is_page( 'Contact' );
// post_title が "Contact" である固定ページが表示されている場合。

is_page( 'about-me' );
// post_name(スラッグ)が "about-me" である固定ページが表示されている場合。

is_page( array( 42, 'about-me', 'Contact' ) );
// ID が 42 か、post_name が "about-me" か、post_title が "Contact" である固定ページが表示されている場合に true を返します。

参考バージョン 2.5 から配列機能が追加されました。

ページ分けされている固定ページであるか

次のコードを使えば、<!--nextpage--> クイックタグによって固定ページ(または投稿)をページ分けしてある場合に何ページ目を表示中かをチェックできます。これは例えば、複数ページに分けられた固定ページの先頭ページのみにカスタムフィールドの値を表示したいときに便利です。

例 1

<?php         
$paged = $wp_query->get( 'paged' );

if ( ! $paged || $paged < 2 ) 
{
    // ページ分けされていない(またはページ分けされている固定ページや投稿の先頭ページ)
} 
else 
{
    // 2 ページ目以降。
}
?>

例 2

<?php
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : false;
if ( $paged === false ) 
{
    // ページ分けされていない(またはページ分けされている固定ページや投稿の先頭ページ)
} 
else 
{
    // 2 ページ目以降。
}
?>

例 3

<?php
if ( 0 === get_query_var( 'page' ) ) {
    // ページ分けされていない(またはページ分けされている固定ページや投稿の先頭ページ)
}
else {
    // 2 ページ目以降。
}

子ページであるか

まだ is_subpage() 関数はありませんが、次のような小さなコードでテストできます:

例 1

<?php
global $post;     // ループの外であるとき

if ( is_page() && $post->post_parent ) {
    // 子ページ
} else {
    // 子ページではない
}
?>

下記の例 2 のコードを使えば、自分で is_subpage() 関数を作ることができます。これをテーマの functions.php ファイルへ追加します。上記の例 1 と同じ方法で親ページをテストしますが、子ページなら親の固定ページの ID を、そうでなければ false を返す点が違います。

例 2

function is_subpage() {
    global $post;                              // 現在の固定ページの詳細を読み込む

    if ( is_page() && $post->post_parent ) {   // 親を持つ固定ページであるかテスト
        return $post->post_parent;             // 親ページの ID を返す
    } else {                                   // 親がなければ…
        return false;                          // false を返す
    }
}

子ページのテストを何度も行う予定があるなら、例 1 のようなテストを毎回行うよりも、この例 2 のような関数を使うことを推奨します。

親が特定の固定ページ、例えばタイトルやスラッグが "About"(ID が 2)である固定ページであるかテストするには、次の例 3 のコードが使えます。このテストは、特定の固定ページか、その任意の固定ページを表示中かどうかチェックします。これは web サイトの各セクションに応じた値(異なるバナー画像や、異なるヘッダー文字列)を変数にセットするのに便利です。

例 3

<?php
if ( is_page( 'about' ) || '2' == $post->post_parent ) {    
    // 現在の固定ページが "About" か、または親ページが "About"
    $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'; // ホームページなど、条件を決めていない固定ページや投稿の場合
}	
?>

次の例 4 は、例 3 のテストをもっと簡単に行えるようにした関数です。この関数は、ある固定ページ(つまり "About")か、その子ページ(つまり親ページの ID が "2")を表示中なら true を返します。

例 4

function is_tree( $pid ) {      // $pid = この ID を持つ固定ページの子ページを表示中であるか
    global $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;  // その固定ページもでなく、子ページでもない
}

これをテーマの functions.php ファイルへ追加した後、is_tree( 'id' ) のように呼び出せば、現在の固定ページがそれ('id')またはその子ページであるかチェックできます。例 3 の最初の if タグに書いてある "is_page( 'about' ) || '2' == $post->post_parent" を、is_tree( '2' ) と書くことができます。

注意: 2 階層以上の固定ページがある場合、親ページはすぐ上(1 階層だけ上)であり、階層の最上位の固定ページではありません。

固定ページテンプレートを使用中であるか

下記の関数を使えば、固定ページテンプレート(任意の、または特定の)を使って表示中かどうかをチェックできます。

is_page_template()/en 
固定ページテンプレート/en を使用中であるか?

例えば is_page_template( 'about.php' ) のように呼び出すと、'about' 固定ページテンプレートを使用中かどうかが判ります。特定の固定ページテンプレートを指定するには about.phpmy_page_template.php のようなファイル名を指定する必要があります。注意:ファイルがサブディレクトリにあるならディレクトリ名も含めなければなりません。つまりテーマディレクトリを起点とする相対パス、例えば 'page-templates/about.php' にします。

注釈

空の値を入力すると TRUE が戻る

特定の固定ページをチェックするために、空の値をパラメータとして渡す可能性がある場合は注意してください。以下の場合 true が返されます:

is_page( '' )
is_page( 0 )
is_page( '0' )
is_page( null )
is_page( false )
is_page( array() )

ループの中では使えません

ループの中では、いくつかのグローバル変数が置き換えられるため is_page() は機能しません。ループの後で使う場合は、その前に wp_reset_query() を呼び出す必要があります。

変更履歴

  • バージョン 1.5.0 : 新規導入

ソースファイル

is_page()wp-includes/query.php に含まれています。

固定ページ: get_all_page_ids(), get_ancestors(), get_page_link(), get_page_by_path(), get_page_by_title(), get_page_children(), get_page_hierarchy(), get_page_uri() /en, get_pages(), is_page(), page_uri_index() /en, wp_list_pages(), wp_page_menu()


条件分岐タグ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()



関数リファレンステンプレートタグ目次もご覧ください。


最新英語版: WordPress Codex » Function Reference/is page最新版との差分