首先,查询参数showposts
has been replaced by posts_per_page
自WP v2起。1.
我认为您的任何查询参数都不会被忽略(嗯,可能是saveshowposts
; 我还没有检查arg是否还存在向后兼容性支持)。也就是说,我不知道你的价值$top_row_posts
变量保存或它应该表示的内容,但完全可能是数据以Wordpress无法使用的格式插入到查询中。
但是(正如米洛纠正我的)你是对的,设置ignore_sticky_posts
到0
应确保粘帖起泡至顶部。From the codex WP_Query page,
忽略\\u sticky\\u帖子:[…]注意:忽略/排除返回的帖子开头包含的粘性帖子,但是the sticky post will
still be returned in the natural order of that list of posts returned.
虽然我不能完全确定您的查询出了什么问题,但我建议使用两个单独的查询来解决问题,这两个查询将明确确保所需的效果-一个用于粘性帖子,另一个用于其他帖子:
实现双查询方法的理想方法是使用the pre_get_posts
action 在插件或主题的函数中。php文件,然后直接在主题的主页/首页模板中运行第二个“粘性”查询。类似于
functions.php:
function modify_home_query( $query ) {
/* If not displaying the home/front page or not processing the main query, bail out. */
if( is_admin() || !$query->is_main_query() || !( is_home() || is_front_page() ) )
return;
/* If this is the main query for the home/front page, tell it to ignore sticky posts entirely. */
$query->set( \'post__not_in\', get_option( \'sticky_posts\' ) );
}
add_action( \'pre_get_posts\', \'modify_home_query\' );
请注意
the WP_Query method is_main_query()
仅适用于WP v3。3.
主回路上方front-page.php 或home.php 或index.php (使用条件封装):
$stickyQuery = new WP_Query( array(
\'cat\' => $slider_cat, //Select posts from the slider category id
\'ignore_sticky_posts\' => 0,
\'post__in\' => get_option( \'sticky_posts\' ),
\'posts_per_page\' => -1 //Get ALL the stickies
);
while( $stickyQuery->have_posts() ) : $stickyQuery->the_post();
//... ( Sticky Post Template Here )
endwhile;
wp_reset_query();
//... ( Main template loop here )
正如Milo所指出的,无论您选择的重点是纠正您的查询还是创建一个变通方案,您都可能希望再次检查
$slider_cat
变量以确保它是有效的类别ID。