0

我正在使用循环在导航区域中显示自定义字段值。示例:我在页面上有 100 个帖子。每个帖子都有一个与之相关的品牌(Fender、Gibson 等),总共可能有大约 15 个品牌。导航循环将输出帖子的品牌自定义字段值。我希望它只显示一个品牌一次,这样循环不会输出 100 个品牌值,而是只输出 15 个唯一值,没有重复。谷歌向我展示的关于防止重复的所有内容都与希望第二个循环不复制第一个循环中的任何内容有关。这不是我的问题 - 我只是想防止在单个循环中重复输出。有什么建议吗?谢谢你。

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

1 回答 1

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;
于 2013-07-08T13:49:36.580 回答