这就是你所有问题的根源:
<?php if(is_home() && !is_paged()) { ?>
<?php query_posts(array(\'post__in\'=>get_option(\'sticky_posts\'))); ?>
这将获取当前查询,并将其放在一边,然后在其位置放置新查询。这里你是说你想显示粘性帖子的第一页。你没有提到标签或类别等,记住,计算机完全按照你告诉他们的去做,你也没有提到你所处的环境。
因此,您希望前5篇文章的标记与其他文章不同。因此,不是:
while ( have_posts() ) {
the_post();
// it\'s a post! display things!
}
执行:
$counter = 0;
while ( have_posts() ) {
the_post();
$counter += 1;
if ( $counter <= 5 ) {
// it\'s one of the first 5 posts! display the special top 5 post!
} else {
// it\'s a post! display things!
}
}
或者,当您到达第6个立柱时,退出循环并开始新的循环:
$counter = 0;
while ( have_posts() ) {
$counter += 1;
if ( $counter > 5 ) {
break; // we\'ve already shown 5 posts! Exit this loop and start the next one!
}
the_post();
// it\'s one of the first 5 posts! display the special top 5 post!
}
while( have_posts() ) {
the_post();
// it\'s a post! Display the post!
}
回到你的
post__in
, 如果只想显示粘性帖子,则应使用
pre_get_posts
筛选器以修改传入当前查询的参数,以包括
post__in
论点关于如何使用,网站上有很多很好的答案
pre_get_posts
所以我不会在这里复制它们。
作为旁注,切勿使用query_posts
在任何情况下。我知道很多雇主会考虑query_posts
在商业代码中,这是一个严重的事件,许多审查过程都会出于很好的理由彻底拒绝包含它的代码。使用pre_get_posts
如果您需要修改页面上显示的内容,并且如果您需要单独的查询来获取帖子,例如边栏小部件等,请使用WP_Query
对象query_posts
保留在WordPress中主要是因为遗留的原因。遗憾的是,许多教程错误地推荐了它的使用