我使用的是默认循环代码。
我已将“设置”>“阅读”中的“博客页面最多显示”选项设置为11
.
在我的主页(设置为显示最新帖子)中,每当我将帖子标记为“粘性”时,就会将其添加到原始的“博客页面最多显示”计数中,因此主页现在显示12
发布而不是11
.
我想避免这样!
我想保持11
帖子总数,在上面的例子中,是1个粘性帖子加上10个普通帖子。这可能吗?
我已经用默认主题和关闭的所有插件对此进行了测试。
EDIT
到目前为止,我发现可以使用
pre_get_posts
.
然后,我打算只查询粘性帖子,然后将该查询与主查询合并。
我找到了这个片段,但在将其转换为pre_get_posts
工作功能。
$newsposts = array();
$sticky = get_option(\'sticky_posts\');
$args = array(
\'post__in\' => $sticky,
\'posts_per_page\' => $num
);
$sticky_posts = get_posts($args);
if( count($sticky_posts) < $num ) {
$extras = $num - count($sticky_posts);
$args= array(
\'post__not_in\' => $sticky,
\'posts_per_page\' => $extras
);
$extra_posts = get_posts($args);
$newsposts = array_merge($sticky_posts, $extra_posts);
}
else $newsposts = $sticky_posts;
最合适的回答,由SO网友:Ashok Kumar Nath 整理而成
您可以使用以下代码:
add_action( \'pre_get_posts\', \'exclude_sticky\' );
function exclude_sticky( $query ) {
if ($query->get(\'paged\') == 0) {
$sticky = get_option(\'sticky_posts\');
$num = get_option(\'posts_per_page\');
$extras = $num - count($sticky);
$query->set( \'posts_per_page\', $extras );
}
}