我在wordpress中遇到了多个循环和粘性帖子的问题。
第一个循环我只想要所有的粘性帖子。
<?php query_posts(array(\'post__in\'=>get_option(\'sticky_posts\'), \'cat\' => \'-15,-17, -5, -2\')) ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php $do_not_duplicate = $post->ID; ?>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php endwhile; endif; ?>
在第二个循环中,我想得到所有不粘性的帖子(因此粘性帖子不会显示)。目前,除了最新的贴子外,所有贴子仍显示在下面的循环中。
此外,posts\\u per\\u页面在第一个循环中包含了我不想要的帖子。无论我添加多少粘性帖子,我都希望不粘性帖子的数量保持一致。
<?php query_posts($query_string . \'&cat=-15,-17, -5, -2&post_type=post&posts_per_page=9\'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php if( $post->ID == $do_not_duplicate ) continue; update_post_caches($posts); ?>
<?php the_first_category(); ?>
<a" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php the_excerpt(); ?>
<?php endwhile; ?>
<?php next_posts_link(\'Older →\') ?>
<?php endif; ?>
有人能帮我或给我指出正确的方向吗?
最合适的回答,由SO网友:Bainternet 整理而成
您的问题是在第一个循环中覆盖$do_not_duplicate
对于循环中的每个帖子,因此在最后,您只有最后一篇帖子的id。如果将$do\\u not\\u duplicate更改为数组,则可以将每篇文章添加到数组中:
//before the loop
$do_not_duplicate = array();
//in the loop
$do_not_duplicate[] = $post->ID;
然后,您可以在第二个查询中使用in:
<?php query_posts($query_string . \'&cat=-15,-17, -5, -2&post_type=post&posts_per_page=9&post__not_in=\'.$do_not_duplicate); ?>