【WordPress】is_page()が効かない時の原因と対処法

こんにちは!CODE CLUB965のKです!

今回は、WordPressで独自の関数である「is_page()」メソッドが効かない時の原因と対処法について書こうと思います。

一応、is_page()の基本的な使い方ですが、例えば以下のようなコードがあったとします。

if ( is_page('hoge') ) {
  // 処理内容
}

上記は「hoge」というスラッグのページが開かれたときにだけ特定の処理を行います。
このように条件分岐をさせることが可能になります。

しかし、上記のように記述しても正しく動作しない場合があります。

以下に考えられる原因と対処法を書いておきます。

原因と対処法その1

考えられる原因として、is_page()を使用する以前に「have_post()」や「query_post()」を使用していて、かつリセット処理を行っていないことが考えられます。

その場合、is_page()を使用する前に、「wp_reset_query();」を実行してあげてリセット処理を行います。

wp_reset_query();
if ( is_page('hoge') ) {
  // 処理内容
}

原因と対処法その2

2つ目に考えられる原因として、同じスラッグを使用していることが考えられます。

例えば、

・固定ページの.../hoge/
・カスタム投稿タイプの.../hoge/

上記のように同じスラッグを使用している場合は正しく動作しない場合があります。
そのため重複しているスラッグのどちらかを変更して下さい。

原因と対処法その3

最後に考えられる原因として、アクションフックなどを使ってfunction()で囲っていない場合に正しく動作しないことが考えられます。

そのため、is_page()を使用する場合、以下の例のように記述してあげることで正しく動作します。

add_action( 'wp', 'hoge_hoge' ); 
function hoge_hoge( $fields ) {
  // 処理内容
}

最後に

今回は、WordPress独自の関数である「is_page()」が効かない時の原因と対処法についてまとめました。

もし上記の方法でも解決しない場合は、他に原因があるかもしれないので調べてみて下さい。
それでも分からなければ私のTwitterのDMでもお問い合わせからでもいいのでお気軽にご質問ください!

それでは、また!