スポンサーリンク

【WordPress】wp_reset_query()でループ処理をリセットしても、is_home()など条件分岐タグが効かない時の対処法

 


ナマスカーラ!パプリ子です!
WordPressをカスタマイズしていて、少しハマってしまった箇所があったので、備忘録も兼ねて記録しておきます。

 

トップページページだけ、特定のコンテンツを表示させたい

WordPressをカスタマイズしていて、特定のページのみ何かを動かしたいor消したい時、条件分岐タグをつかうと思います。
特に、サイトの顔となるトップページには、スライダーやサイドバーを配置して、豪華なデザインにしている人も多いですよね。

その場合、

と記述したり、

自分で関数をつくってアクションフックをかけたり、すると思うのですが、これが効かないことがある。

ループ処理が原因で、条件分岐タグが効かない

検索すると、このあたりの記事が解決策としてヒットすると思うのですが、ループ処理が原因で、条件分岐タグが効かないことがあるようです。

上記の記事では、どちらも条件分岐タグの前にwp_reset_query();を記述することで解決しています。

とか

とか。
トップページ以外のページに何かをしたい時の!is_home()も、同様に条件分岐が効くはずです。

が!!!!!!

wp_reset_query()が効かない

パプリ子は、トップページのサイドバーを外すために条件分岐タグを使いたかったのですが、なぜか、これを実践してもis_home()is_front_pageも効きませんでした。



結局、サーバー変数で無理矢理解決した

原因は分かりませんが、ループ処理のリセット以外の何かでハマってしまったようなので、サーバー変数で解決しました。

悪あがきのように、こう記述してみてもいいと思います。
||は、PHPの文法では”or”の意)

特定のページ(Wordpressだと固定ページとか)にカスタマイズしたい時に、ドメイン以下のパスを指定するだけで条件分岐させることができるので、「便利だな〜」と思って使っていますが、
サーバー変数って何なのか、パプリ子もイマイチよく分かってないです。

とりあえず、Wordpress内では、$_SERVER["REQUEST_URI"]を使ってURI(ドメインの後ろの部分)を指定してあげると、条件分岐みたいなことができるモノ、くらいの認識で良いと思います。
(サーバー変数はPHPで定義された変数なので、もちろんWordPress以外の場所でも活用されています)

これがURI

でも、下の画像を見ればわかると思うのですが、サイトのトップページ(ホーム)って、純粋にドメインだけで/(スラッシュ)の記述もないんですよね…

トップページドメイン

でも、それでも動いてるから………いいのかな。

同じ場所でハマってしまった方がいらっしゃれば、参考にしてみてください!



シェアする

  • このエントリーをはてなブックマークに追加
スポンサーリンク