我正在使用以下过滤器,以便将类别模板上显示的帖子数量从10个增加到30个(我想为网站的其余部分保留10个)
// Modify number of results shown
function modify_query_amount_shown($query){
if ($query->is_category) {
$query->set(\'posts_per_page\', 30);
$query->set(\'orderby\', \'menu_order\');
}
return $query;
}
add_filter(\'pre_get_posts\', \'modify_query_amount_shown\');
然而,当我多次刷新页面时,我注意到我的帖子顺序每次都会改变。我可以确认它与此代码有关,因为只要我注释掉它,它就会恢复正常。
最合适的回答,由SO网友:Frank P. Walentynowicz 整理而成
pre_get_posts
不是过滤器挂钩,而是一个动作。此外,不应设置orderby
到menu_order
对于职位,因为他们没有层次结构。设置orderby
到date
相反
function modify_query_amount_shown( $query ) {
if ( $query->is_category ) {
$query->set( \'posts_per_page\', 30 );
$query->set( \'orderby\', \'date\' );
}
}
add_action( \'pre_get_posts\', \'modify_query_amount_shown\' );
现在,无论刷新次数多少,帖子的显示顺序都将保持一致。