2014-12-03 7 views
11

Jestem odpowiedzialny za zarządzanie stroną F9 Properties, która jest wbudowana w WordPress. Na stronie głównej znajduje się sekcja polecanych właściwości. Zauważyłem, że jeśli wymieniono nieruchomość z dwoma różnymi "Stanami", takimi jak "Na sprzedaż lub Najem", właściwość pojawiła się dwa razy w karuzeli. Poniżej znajduje się kod do umieszczenia opisywanych właściwości. Widzę, że odfiltrowuje właściwości ze statusu „dzierżawił”. Czy ktoś może mi pomóc dodać trochę kodu do listy tylko jedną właściwość każdego postu, niezależnie od tego, ile inny stan nieruchomość ma?Zapobieganie powielaniu wiadomości

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

można udostępnić 'WP_Query' część dla' $ featured_properties_query'? – birgire

Odpowiedz

4

Być może nie rozumiem konfiguracji, ale zastanawiam się dlaczego rezygnujesz z warunków.

myślę, że należy rozważyć zamiast wyłączeniem termin leased w WP_Query() części (mam nadzieję, że można go udostępnić).

Wtedy twój karuzela będzie uproszczone do:

<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

Możesz dodać identyfikator pocztowy na tablicy każdego gdy pojawi się iteracja i sprawdź tablicę, jeśli post został już renderowany:

$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;