2014-12-03 19 views
11

Mi occupo della gestione di questo sito F9 Properties che è integrato in WordPress. Nella home page c'è una sezione delle proprietà in primo piano. Ho notato che se hai elencato una proprietà con due diversi "Status" come "In vendita o Per locazione, la proprietà è apparsa due volte nel carosello." Di seguito è riportato il codice per elencare le proprietà in primo piano. con lo stato "Leased". qualcuno può aiutarmi a aggiungere un po 'di codice per elencare una sola proprietà per ogni post indipendentemente dal numero di stato di proprietà diversa ha?Prevenire la duplicazione postale

<?php 
/* Featured Properties Query Arguments */ 
$featured_properties_args = array(
'post_type' => 'property', 
'posts_per_page' => 100, 
'meta_query' => array(
    array(
     'key' => 'REAL_HOMES_featured', 
     'value' => 1, 
     'compare' => '=', 
     'type' => 'NUMERIC' 
    ) 
) 
); 

$featured_properties_query = new WP_Query($featured_properties_args); 

if ($featured_properties_query->have_posts()) : 
?> 
<section class="featured-properties-carousel clearfix"> 
    <?php 
    $featured_prop_title = get_option('theme_featured_prop_title'); 
    $featured_prop_text = get_option('theme_featured_prop_text'); 

    if(!empty($featured_prop_title)){ 
     ?> 
     <div class="narrative"> 
      <h3><?php echo $featured_prop_title; ?></h3> 
      <?php 
      if(!empty($featured_prop_text)){ 
       ?><p><?php echo $featured_prop_text; ?></p><?php 
      } 
      ?> 

     </div> 
     <?php 
    } 

    ?> 

     <div class="carousel es-carousel-wrapper"> 
     <div class="es-carousel"> 
      <ul class="clearfix"> 
       <?php 
       while ($featured_properties_query->have_posts()) : 
        $featured_properties_query->the_post(); 
        ?> 

        <?php 
       $status_terms = get_the_terms($post->ID,"property-status"); 
       if(!empty($status_terms)){ 
        foreach($status_terms as $status_term){ 

         if($status_term->name=="Leased"){}else{ 

          ?> 
          <li> 
         <figure> 
          <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"> 
           <?php 
           the_post_thumbnail('property-thumb-image',array(
            'alt' => get_the_title($post->ID), 
            'title' => get_the_title($post->ID) 
           )); 
           ?> 
          </a> 
         </figure> 
         <h4><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h4> 
         <p><?php framework_excerpt(8); ?> <a href="<?php the_permalink() ?>"> <?php _e('Know More','framework'); ?> </a> </p> 
         <span class="price"><?php property_price(); ?></span> 

        </li> 
          <? 
         } 


        } 
       } 
       ?> 

        <?php 
       endwhile; 
       wp_reset_query(); 
       ?> 
      </ul> 
     </div> 
    </div> 
+0

Puoi condividere la parte 'WP_Query' per il' $ featured_properties_query'? – birgire

risposta

4

Potrei essere fraintendere la configurazione, ma mi chiedo perché stai seguendo i termini.

penso che si dovrebbe invece considerare escludendo il termine leased all'interno del WP_Query() parte (si spera puoi condividerle).

Allora la vostra giostra verrebbe semplificata a:

<div class="carousel es-carousel-wrapper"> 
    <div class="es-carousel"> 
     <ul class="clearfix"> 
     <?php while ($featured_properties_query->have_posts()) : $featured_properties_query->the_post(); ?> 
      <li><!-- YOUR POST ITEM HERE --></li> 
     <?php endwhile; ?> 
     </ul> 
    </div> 
</div> 
0

è possibile aggiungere l'ID post per una matrice ogni ora si verifica un'iterazione e controlla la matrice se il post è già stato sottoposto a rendering:

$shown = array(); // new array 
while ($featured_properties_query->have_posts()) : 
    $featured_properties_query->the_post(); 
    $status_terms = get_the_terms($post->ID, 'property-status'); 
    if(! empty($status_terms)){ 
     foreach($status_terms as $status_term){ 
      if($status_term->name == "Leased" || in_array($post->ID, $shown){ 
       continue; // post has term "Leased" or already rendered, skip 
      } 
      $shown[] = $post->ID; // add post ID to array 
     ?> 
      <!-- HTML here --> 
     <?php 
     } 
    } 
endwhile;