2013-07-08 36 views
0

我正在使用循環在導航區域中顯示自定義字段值。例如:我在頁面上有100個帖子。每篇文章都有一個與之相關的品牌(Fender,Gibson等),大概有15個品牌。導航循環將輸出帖子的品牌自定義字段值。我希望它只展示一次品牌,以便不輸出100個品牌值,該循環僅輸出15個唯一值,不重複。一切谷歌顯示我關於防止重複與想要第二個循環不要從第一個循環中複製任何東西有關。這不是我的問題 - 我只是想在單個循環中防止重複輸出。有什麼建議?謝謝。如何編寫防止重複輸出的單個wordpress循環(不是多個循環)

<?php 
$args=array('posts_per_page' => -1, 'post_status' => 'publish', 'orderby'=> 'title',  'order' => 'ASC', 'cat' => get_query_var('cat')); 
$my_query = null; 
$my_query = new WP_Query($args); 
if($my_query->have_posts()) { ?> 


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

<h3 style="padding-left:10px;"><a href="<? the_permalink() ?>" title="<? the_title() ?>"><?php 
$key_1_value = get_post_meta(get_the_ID(), 'brand_value', true); 
// check if the custom field has a value 
if(! empty($key_1_value)) { 
    echo $key_1_value; 
} 
?></a></h3> 

<?php endwhile; ?> 
<?php } 
wp_reset_query(); 
?> 

回答

0

創建一個空數組

在你的循環,品牌加入到這個陣列。如果品牌已經存在於數組中,則不要添加它,也不要輸出該帖子。

僞代碼:

$args = array(
    'posts_per_page' => -1, 
    'category' => 1, 
    'order' => 'ASC', 
    'orderby' => 'title' 
); 

$brand_list = array(); 
$posts_array = get_posts($args); 

foreach($posts_array as $post) : setup_postdata($post); 
    $brand = get_post_meta($post->ID, 'brand_value', true); 
    if(!in_array($brand,$brand_list){ 
    array_push($brand_list,$brand); 

    echo 'brand: '.$brand; 
    the_content(); 
    } 
endforeach; 
+0

嗯,這看起來會工作。我不確定如何將其摺疊到我用於該導航的查詢中。我更新了帖子以添加我正在使用的查詢代碼 - 你能幫我理解我把代碼放在哪裏嗎? @Steven – WilliamAlexander

+0

當我嘗試這個工作時,我得到一個關於意外的錯誤{ - 但是我在黑暗中刺中,因爲我不是100%確定如何得到這個以適應查詢/循環我'使用。 – WilliamAlexander

+0

嘗試使用我編輯的代碼。只需使用正確的類別ID。 – Steven