我有一个循环,按类别显示Wordpress中的帖子,但有些帖子分为两个类别,所以在主页上显示所有帖子,这些帖子出现两次。
示例:
有谁知道如何“隐藏”这些重复的帖子?
这是循环:
<?php
$loop = new WP_Query( array( 'post_type' => 'products', 'posts_per_page' => -1 ) );
if ( $loop->have_posts() ) :
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<?php
$my_post_child_cats = array();
foreach((get_the_category()) as $childcat) {
if (cat_is_ancestor_of(3, $childcat)) { ?>
<div class="item" data-groups='["all", "<?php echo $childcat->cat_name; ?>"]'>
<div class="pindex">
<?php if ( has_post_thumbnail() ) { ?>
<a href="<?php the_permalink(); ?>">
<div class="pimage">
<?php the_post_thumbnail(); ?>
<div class="pro-title">
<h4><?php echo get_the_title(); ?></h4>
<p>Read more</p></a>
</div>
</div>
<?php } ?>
</div>
</div>
<?php } } ?>
<?php endwhile; ?>
<?php endif;
wp_reset_postdata();
?>
此代码将获取所有帖子,并使用此片段添加类别名称:<?php echo $childcat->cat_name; ?>
然后在主页中我按类别创建了一个过滤器,该过滤器将按$childcat->cat_name;
列出帖子,但是当您点击“所有帖子”时,它会获得两次的帖子,因为它有两个类别
答案 0 :(得分:0)
您可以将每个帖子名称存储在一个数组中,然后只有在它尚未显示时才输出。像这样:
<?php
$array[];
$loop = new WP_Query( array( 'post_type' => 'products', 'posts_per_page' => -1 ) );
if ( $loop->have_posts() ) :
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<?php
$my_post_child_cats = array();
foreach((get_the_category()) as $childcat) {
if (cat_is_ancestor_of(3, $childcat)) { ?>
<div class="item" data-groups='["all", "<?php echo $childcat->cat_name; ?>"]'>
<div class="pindex">
<?php if ( has_post_thumbnail() && !in_array(get_the_title(), $array) ) { ?>
<a href="<?php the_permalink(); ?>">
<div class="pimage">
<?php the_post_thumbnail(); ?>
<div class="pro-title">
<h4><?php echo get_the_title();
$array[] = get_the_title();
?></h4>
<p>Read more</p></a>
</div>
</div>
<?php } ?>
</div>
</div>
<?php } } ?>
<?php endwhile; ?>
<?php endif;
wp_reset_postdata();
?>
您可能需要调整代码以满足您的需要,但此代码的作用主要是抓取帖子的名称/标题并将其存储在数组中:
$array[] = get_the_title();
然后在后续循环检查以查看当前循环帖子的标题是否在数组中:
if ( has_post_thumbnail() && !in_array(get_the_title(), $array) )
如果是,则不应输出任何内容。如果不是,那么我们输出相关内容并将帖子的标题存储到数组中。
答案 1 :(得分:0)
如果有人仍在寻找如何删除重复帖子的答案。首先你需要创建空数组,而不是在第一个循环中添加post的所有id。在第二个循环中检查post id是否在数组中,并且它的真实性是从数组中删除当前的post id。有代码
<($i | sed 's/fastq.gz/sai/g')