2012-06-08 24 views
5

¿Cómo puedo probar para ver si un objeto WP_Query no devuelve ninguna coincidencia? Me gustaría ser capaz de hacer algo como esto es una plantilla:Prueba si el objeto WP_Query está vacío

<?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    
    } 
?> 

EDITAR

mejor ejemplo, quiero sólo para mostrar la h2 si la consulta se encuentra nada:

<?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(); ?> 

Respuesta

6

El Wordpress Loop estándar lo hace por ti usando have_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

derecho, pero estoy en busca de mostrar información no consulta en la página dependiendo de si el la consulta tiene cualquier contenido. Esta información se muestra en una parte diferente de la página junto con la consulta real. Por lo tanto, quiero crear un único objeto WP_Query en la parte superior de la página y luego generar la información en varias partes de la página. ¿Es la mejor manera de hacer esto solo para hacer que el objeto WP_Query esté en la parte superior, y luego tener varios ciclos while en la página? – Combobreaker

+0

Agregué un nuevo ejemplo de lo que estoy tratando de hacer. – Combobreaker

5

Calculo que podría utilizar:

($ my_query-> have_posts())

manera:

<?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

En el primer ejemplo, donde usted tiene la comentario :

//if $my_query does not find anything 

Jus t establecer un parámetro de la siguiente manera:

$my_query_found_something = 'not'; 

luego usarlo siempre que se necesite como esto:

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