2012-03-24 20 views
4

私はWP_Queryを使用してWordPressのカスタムポストタイプをループしています。私のループは次のようになります:Wordpress、ループからの結果がない場合は、ヘッダーを表示しない

<div class="bigRedStrip"> 
    <h2>Available Now!</h2> 
</div> 

<ul> 
    <?php $loop = new WP_Query(array('post_type' => 'films', 'post_child' => 0, 'posts_per_page' => 8,'orderby' => 'date', 'order' => 'ASC', 'film-categories' => 'blu-ray')); ?> 

    <?php while ($loop->have_posts()) : $loop->the_post(); ?> 

      <li> 
      loop stuff here 
      </li> 

    <?php endwhile; ?> 
</ul> 

ご覧のとおり、ループの前に "Available Now!"というヘッダーがあります。投稿を返さない場合は、タイトルを含むdiv(divクラスbigRedStrip)は表示されないように、ループを再フォーマットします。私はいくつかの潜在的な解決策を試しましたが、私が継続している問題は、これらすべての "解決策"がループ内に<div class="bigRedStrip">を入れる必要があるということです。ヘッダーを1回だけ表示させることです。どのように私はこれを達成することができます任意のアイデア?

答えて

5

あなたはちょっと離れて物事を引き出す必要があります。まず、すべてのクエリを実行します。

<?php $loop = new WP_Query(array('post_type' => 'films', 'post_child' => 0, 'posts_per_page' => 8,'orderby' => 'date', 'order' => 'ASC', 'film-categories' => 'blu-ray')); ?> 

次に何かがあるかどうかを確認:

<?php if ($loop->have_posts()) { ?> 

<div class="bigRedStrip"> 
    <h2>Available Now!</h2> 
</div> 

... 

もしそうなら、単に記事を反復:

... 

<ul> 
    <?php while ($loop->have_posts()) : $loop->the_post(); ?> 

      <li> 
      loop stuff here 
      </li> 

    <?php endwhile; ?> 
</ul> 

<?php } ?> 
0
<?php $loop = new WP_Query(array('post_type' => 'films', 'post_child' => 0, 'posts_per_page' => 8,'orderby' => 'date', 'order' => 'ASC', 'film-categories' => 'blu-ray')); ?> 
<?php if ($loop->have_posts()){ 
<div class="bigRedStrip"> 
     <h2>Available Now!</h2> 
</div> 

<ul> 
    <?php while ($loop->have_posts()) : $loop->the_post(); ?> 

     <li> 
     loop stuff here 
     </li> 

    <?php endwhile; ?> 
</ul> 
<?php } ?> 
+1

'WP_Query'は、まだ[countable]インターフェース(http://php.net/countable)を実装していません。 – hakre

+0

ありがとう、ちょうどそれを変更しました。 +1も私から。 –

+1

アイデアが良かったので、機能リクエストを追加しました:http://core.trac.wordpress.org/ticket/20296 – hakre

関連する問題