避免循环中的重复项目

时间:2013-06-20 21:37:53

标签: php arrays wordpress

我写了一个查询来显示Wordpress中的相关帖子, 简要说明: 首先,它检查当前帖子属于哪些类别, 然后将那些类别的“slug”名称放在一个数组中(“$ cats”) 然后使用foreach,我用相同的分类法查询帖子。 此代码效果很好,除非当前帖子属于多个类别且还有另一个帖子属于这些类别,在这种情况下,其他帖子会显示两次甚至更多,具体取决于他们共享的类别数,

所以问题是,如何检查帖子是否重复以及如何预防? 代码:

<?php 
$terms = get_the_terms( $currentid, 'taxonomy' );
$cats = array_map(function($a){ return $a->slug; }, $terms);

    foreach ($cats as $cat) {
        $args=array(
  'taxonomy' => $cat ,
  'post_type' => 'apps',
  'post_status' => 'publish',
  'posts_per_page' => 4,
);
global $wp_query;
$wp_query = new WP_Query($args);
  while ($wp_query->have_posts()) : $wp_query->the_post();
    if($currentid !== get_the_ID()){ 


  ?>

    <li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>">
    <?php
    if ( has_post_thumbnail() ){
    $appfetured      = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ));
    $appfeturedimage = $appfetured[0];
    }else{
    $appfeturedimage = '../img/defaultappicon.png';
    }
    ?>
    <img class="appfeatured" src="<?php echo $appfeturedimage; ?>" alt="<?php the_title_attribute(); ?>" />
    </a>
    </li>
    <?php
    }
   endwhile;

wp_reset_query();  // Restore global post data stomped by the_post().
}//end foreach
?>

1 个答案:

答案 0 :(得分:0)

如果您要做的只是获取当前帖子的所有类别中的所有帖子,请尝试以下操作:

<?php
    $args = array(
        'cat'            => wp_get_post_categories($currentid),
        'post_type'      => 'apps',
        'post_status'    => 'publish',
        'posts_per_page' => 4
    );

    new WP_Query($args);

自从我使用Wordpress以来已经有一段时间了,所以我不知道类别和分类法之间是否存在差异所以你可以试试这个:

<?php
    terms = get_the_terms( $currentid, 'taxonomy' );
    $cats = array_map(function($a){ return $a->slug; }, $terms);

    $args = array(
        'taxonomy' => $cats,
        'post_type' => 'apps',
        'post_status' => 'publish',
        'posts_per_page' => 4,
    );

    global $wp_query;
    $wp_query = new WP_Query($args);