2012-06-08 3 views
5

Как я могу проверить, не возвращает ли объект WP_Query никаких совпадений? Я хотел бы быть в состоянии сделать что-то вроде этого является шаблоном:Тест Если объект WP_Query пуст

<?php 
    $my_query = new WP_Query(array('post_type' => 'biographies')) 
    if(***HOW DO I TEST $my_query HERE***) { 
     //if $my_query finds anything loop through it here 
    } else { 
     //if $my_query does not find anything    
    } 
?> 

EDIT

Лучше пример, я хочу, чтобы отображать только h2, если запрос находит все:

<?php 
    $outside_leasing_query = new WP_Query(array('post_type' => 'resin_biographies', 'tax_query' => array(
     'relation' => 'AND', 
     array('taxonomy' => 'resin_buildings', 'field' => 'slug', 'terms' => $page_slug), 
     array('taxonomy' => 'resin_leasing_companies', 'field' => 'slug', 'terms' => 'rubenstein-partners', 'operator' => 'NOT IN') 
    ))); // resin_buildings taxonomy term slug must match page slug 
?> 

<h2>Outside Leasing Contacts</h2> 

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

    <article <?php post_class('group'); ?>> 
     <?php 
     if(get_post_meta($post->ID, '_biography_headshot', true) != '') { 
      echo '<img class="contact-thumb" src="' . get_post_meta($post->ID, '_biography_headshot', true) . '" alt="'. get_the_title() .'" />'; 
     } else { 
      echo '<img class="contact-thumb-placeholder" src="' . get_bloginfo('template_url') . '/images/default_headshot.jpg" alt="'. get_the_title() . '" />'; 
     } 
     ?> 
     <div class="contact-info"> 
      <hgroup> 
       <?php the_title('<h3>', '</h3>'); ?> 
       <h4 class="contact-title"><?php echo get_post_meta($post->ID, '_biography_title', true); ?></h4> 
      </hgroup> 
      <div class="contact-address"><?php echo wpautop(get_post_meta($post->ID, '_biography_address', true)); ?></div> 
      <div class="contact-tel"><span>T</span> <?php echo get_post_meta($post->ID, '_biography_tel', true); ?></div> 
      <?php if(get_post_meta($post->ID, '_biography_fax', true) != '') { ?> 
       <div class="contact-fax"><span>F</span> <?php echo get_post_meta($post->ID, '_biography_fax', true); ?></div> 
      <?php } ?> 
      <div class="contact-email"><a href="mailto:<?php echo get_post_meta($post->ID, '_biography_email', true); ?>"><?php echo get_post_meta($post->ID, '_biography_email', true); ?></a></div> 
     </div> 
    </article> 

<?php endwhile; ?> 
<?php wp_reset_postdata(); ?> 

ответ

6

Стандартный Wordpress Loop делает это для вас, используя has_posts().

<?php 
$my_query = new WP_Query(array('post_type' => 'biographies')); 
if($my_query->have_posts()) : while($my_query->have_posts()) : $my_query->the_post(); 
?> 
<!-- YOUR POST(S) --> 
<?php endwhile; else : ?> 
<p>No posts found</p> 
<?php endif; ?> 
+0

право, но я ищу для отображения информации без запроса на странице в зависимости от того, если в запросе имеет любой контент. Эта информация отображается в другой части страницы вдоль фактического запроса. Поэтому я хочу создать один объект WP_Query в верхней части страницы, а затем вывести информацию на нескольких частях страницы. Лучший способ сделать это только для того, чтобы сделать объект WP_Query сверху, а затем иметь несколько циклов на странице? – Combobreaker

+0

Добавлен новый пример того, что я на самом деле пытаюсь сделать. – Combobreaker

5

Я полагаю, вы могли бы использовать:

($ my_query-> have_posts())

так:

<?php 
    $my_query = new WP_Query(array('post_type' => 'biographies')) 
    if(!($my_query->have_posts())) { 
     //if $my_query finds anything loop through it here 
    } else { 
     //if $my_query does not find anything    
    } 
?> 
0

В первом примере, где у вас есть комментарий :

//if $my_query does not find anything 

Jus т задать параметр так:

$my_query_found_something = 'not'; 

Затем использовать его там, где вам нужно, как это:

if ($my_query_found_something == 'not') { 
// keep looking 
}