2012-06-08 13 views
5

Come posso verificare se un oggetto WP_Query non restituisce alcun partite? Mi piacerebbe essere in grado di fare qualcosa del genere è un modello:test Se WP_Query oggetto è vuoto

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

esempio migliore, voglio visualizzare solo il h2 se la query trova nulla:

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

risposta

6

Il Wordpress Loop standard lo fa per te usando l'opzione 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

destro, ma cerco di visualizzare le informazioni non-query nella pagina a seconda se la query ha qualsiasi contenuto Questa informazione viene visualizzata in una parte diversa della pagina accanto alla query effettiva. Quindi voglio creare un singolo oggetto WP_Query nella parte superiore della pagina e quindi restituire le informazioni in più parti della pagina. È il modo migliore per fare questo solo per rendere l'oggetto WP_Query in alto, quindi avere più cicli sulla stessa? – Combobreaker

+0

Aggiunto un nuovo esempio di ciò che sto effettivamente cercando di fare. – Combobreaker

5

Immagino si potrebbe usare:!

($ my_query-> have_posts())

così:

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

Nel vostro primo esempio, dove si ha il commento :

//if $my_query does not find anything 

Jus t impostare un parametro come questo:

$my_query_found_something = 'not'; 

quindi utilizzarlo ovunque ne abbiate bisogno in questo modo:

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