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

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

関数リファレンス/is page

提供: WordPress Codex 日本語版
移動先: 案内検索

この条件分岐タグは、個別の固定ページを表示しているかどうかをチェックします。これは真偽値を返す関数であり、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最新版との差分