053
固定ページかどうかを判定する
Library
固定ページとは、管理画面の[固定ページ]を用いて作られるページで、テンプレートでは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を確認するとよいでしょう。

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