---
title: "is_page() &#8211; 固定ページかどうか判断する関数/ループの中・後では工夫が必要"
canonical_url: "https://olein-design.com/blog/is_page"
language: "ja"
date_published: "2024-05-10T16:34:26+09:00"
date_modified: "2024-05-10T16:36:33+09:00"
content_type: "post"
author: "久野晃司"
taxonomies:
  category:
    - "WordPress"
  post_tag:
    - "Conditional Tag"
    - "WordPress functions"
---

# is_page() &#8211; 固定ページかどうか判断する関数/ループの中・後では工夫が必要

この記事では、WordPress テーマ開発では使わないことはないと言っても過言ではない `is_page()` 関数について紹介していきます。

目次

## is_page() 関数とは

現在表示しているページが固定ページかどうか判断することができます。また、固定ページ ID などを指定することで、任意の固定ページであるかどうかを判断することができます。

## パラメーター

| `$page` | 固定ページ ID、タイトル、スラッグまたはそれらの配列 |
| --- | --- |

## 使い方

基本的な使い方としては、固定ページであるかどうかを判断することが多いでしょう。以下のように記述することで判断できます。

```
if ( is_page() ) {
	echo "このページは固定ページです。";
} else {
	echo "このページは固定ページではありません。";
}
```

また、特定の固定ページ ID を指定し、その固定ページかどうかを判断することができます。

```
if ( is_page( 2 ) ) {
	echo "この固定ページの ID は 2 です。";
} else {
	echo "この固定ページの ID は 2 ではありません。";
}
```

他にも、タイトルやスラッグ、そしてそれらを配列で指定することで判断することができます。

```
if ( is_page( 'Sample Page' ) ) {
	echo "この固定ページのタイトルは「Sample Page」です。";
} elseif ( is_page( 'blog' ) ) {
	echo "この固定ページのタイトルは「blog」です。";
} elseif ( ! is_page( array( 'Sample Page', 'blog' ) ) ) {
	echo "この固定ページはタイトルが「Sample Page」、スラッグが blog 以外です。";
}
```

## ループの中で動作しない

以下のコードのようにループの中では、正しく動作しない可能性があります。

```
if ( have_posts() ) {
	// Load posts loop.
	while ( have_posts() ) {
		the_post();
		if ( is_page() ) {
			// 何か処理をする
		}
	}
}
```

どうしてもループの中で利用したい場合には、一度結果を変数に入れて利用すると良いでしょう。

```
// 一度 is_page() の結果を $is_page の中に入れる
$is_page = is_page();

if ( have_posts() ) {
	// Load posts loop.
	while ( have_posts() ) {
		the_post();
        // 変数 $is_page で条件分岐する
		if ( $is_page ) {
			// 何か処理をする
		}
	}
}
```

ループの後で判定する際にも注意が必要です。ループの後に `wp_reset_query()` を入れるとうまく処理できます。

```
if ( have_posts() ) {
	while ( have_posts() ) {
		the_post();
	}
	// wp_reset_query() を入れる
	wp_reset_query();

	if ( is_page() ) {
		// ここで処理
	}
}
```

## フック

ありません。

## まとめ

このように固定ページかどうかを判断する際によく利用される関数です。

しかし、ループの中で利用したい場合や、ループの後で利用したい場合には、グローバル変数が上書きされるため処理が上手く実行されません。

ですので、上記しているように一工夫すると良いでしょう。

[埋め込みコンテンツ](https://developer.wordpress.org/reference/functions/is_page)
