Go to top Go to bottom

固定ページとは、管理画面の[固定ページ]を用いて作られるページで、テンプレートではpage.phpなどが適用されます。ブログ以外の、比較的更新頻度の低いページを作成するのにもっぱら利用されます。

固定ページかどうかを判定するには、is_page()という関数を利用します。

用例
  • 固定ページかどうかを判定して、処理を変える
  • 特定の固定ページの場合のみ、特別な処理を行う
関連
Codex

固定ページかどうかを判定する

固定ページかどうかを判定するには、is_page()関数を使います。

<?php if ( is_page() ): ?>
  <!-- 固定ページの場合の処理 -->
<?php endif; ?>

この関数は、Codexに記載されている通り、ループの中および後では正しく動作しません

<?php while ( have_posts() ) : the_post(); ?>
  <?php if ( is_page() ): ?>
    <!-- 固定ページかどうかを判定したいが、うまくいかない場合がある -->
  <?php endif; ?>
<?php endwhile; ?>

<?php if ( is_page() ): ?>
  <!-- ループの後もこの判定は保証されない -->
<?php endif; ?>

どうしてもループの中で使う必要がある場合は、結果を変数に退避させるとよいでしょう。

<!-- ループの前に判定結果を変数に退避 -->
<?php $is_page = is_page(); ?>

<?php while ( have_posts() ) : the_post(); ?>
  <?php if ( $is_page ): ?>
    <!-- この判定はうまくいく -->
  <?php endif; ?>
<?php endwhile; ?>

ループの後で判定したい場合は、wp_reset_query()を呼んでから判定するとうまくいきます

<?php while ( have_posts() ) : the_post(); ?>
  <!-- ループの処理 -->
<?php endwhile; ?>

<?php wp_reset_query(); ?>

<?php if ( is_page() ): ?>
  <!-- この判定はうまくいく -->
<?php endif; ?>

詳細な条件を指定して、特定の固定ページを判定する

is_page()は固定ページ全般でtrueを返しますが、第1引数を指定することで特定の固定ページを判別することができます。

条件分岐タグ

is_page( $page )

固定ページかどうかを判定する。あるいは条件を追加することで特定の固定ページかどうかを確認する。

 $page  固定ページのID、タイトル、スラッグ、またはそれらを含んだ配列を指定する

たとえば次のようにして使います。

IDを用いて判定

if( is_page( 126 ) ) {
  // IDが126の固定ページの場合の処理
}

スラッグを用いて判定

if( is_page( 'about' ) ) {
  // スラッグが'about'の固定ページの場合の処理
}

固定ページのタイトルを用いて判定

if( is_page( 'ブログについて' ) ) {
  // 「ブログについて」というタイトルがつけられている固定ページの場合の処理
}

配列を用いれば、複数のページをまとめて判定することができます。ID、スラッグ、タイトルいずれも受け付け、混ざっていても問題ありません。

複数のIDを指定

if( is_page( array( 126, 129, 136 ) ) ) {
  // IDが126、129または136の固定ページの場合の処理
}

IDやスラッグを複合して指定

if( is_page( array( 126, 'about', 'ブログについて' ) ) ) {
  // IDが126、スラッグが'about'またはタイトルが「ブログについて」の固定ページの場合の処理
}

固定ページのIDは、固定ページ編集画面のURLを確認するとよいでしょう。

固定ページのIDを確認
固定ページのIDを確認

上の例ではlocalhost/minimalist/wp-admin/post.php?post=99&action=editとなっていますが、このpost=99が固定ページのIDです。