[WP覚書]条件分岐で、トップページ(メインページ)に最新記事アーカイブ記述があるとアーカイブページとして認識されてしまうトラップの回避法

2013年5月16日

2012年11月5日の事例

function.phpに以下のような指定をして、トップページにスライダー表示させる仕様にしました。しかしなかなかタグが出力されない><。。。

if ( is_home()) {
wp_enqueue_script('basic-jquery-slider.js','/js/basic-jquery-slider.js', array(), '1.0' ,true);
     }

で表示されない。
フロントページ仕様にしてないのだが試しに・・・

if ( is_front_page() ) {
wp_enqueue_script('basic-jquery-slider.js','/js/basic-jquery-slider.js', array(), '1.0' ,true);
     }

・・・ダメ。

wp_enqueue_script('basic-jquery-slider.js','/js/basic-jquery-slider.js', array()

だけだと、表示されるが他の固定ページにも出力されてる。

if (!is_paged()) {
wp_enqueue_script('basic-jquery-slider.js','/js/basic-jquery-slider.js', array(), '1.0' ,true);
     }

これでやっとトップページのみ表示されて、他の固定ページは出力しない仕様に(Aーー;

試しに以下も試してみたがダメだった
(参照:WordPressをカスタマイズするなら絶対覚えておきたい条件分岐やカスタム投稿タイプなどいろいろ
http://webdesignrecipes.com/wordpress-conditional-tags-and-custom-post-type/)

if(is_home() && !is_paged())
wp_enqueue_script('basic-jquery-slider.js','/js/basic-jquery-slider.js', array(), '1.0' ,true);
     }

これらの条件で考えると、どうやらトップページでもhomeと認識されてない!!という結論に達したのですが、探したら似たような事例がありました。

トップページに最新記事一覧を出力していると、そこから以降はアーカイブページと認識されてしまうようなのです。( ゚Д゚)どひゃー。
[WordPress] トップページなのにif(is_home())が効かないと思いきや | imasashi.net

しかし、自分のは普通にトップページの仕様で、「query_posts()」を使ってるわけではないので、ちょっと微妙です。なにか他に条件があるのかもしれない(ーー;モヤモヤしますね。

2013年4月15日の事例

今回トップページにだけ表示したい記述を以下のように設置したのですが、やっぱり表示されない。

<?php if ( is_home() || is_front_page() ) : ?>
ここにトップページにだけ表示したいほにゃららを記載
<?php endif; ?>

今回は例の参考ページと同じで最新記事のリストを出力してたので、
回避方法としては、最新記事表示箇所の以降に

<?php wp_reset_query(); ?>

を入れればよいようです。これで見事に表示されました。

WordPress

Posted by ponnao