Pre_Get_Posts有时以随机顺序显示帖子

时间:2017-09-13 作者:Jordan Carter

我正在使用以下过滤器,以便将类别模板上显示的帖子数量从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\');
然而,当我多次刷新页面时,我注意到我的帖子顺序每次都会改变。我可以确认它与此代码有关,因为只要我注释掉它,它就会恢复正常。

1 个回复
最合适的回答,由SO网友:Frank P. Walentynowicz 整理而成

pre_get_posts 不是过滤器挂钩,而是一个动作。此外,不应设置orderbymenu_order 对于职位,因为他们没有层次结构。设置orderbydate 相反

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\' );
现在,无论刷新次数多少,帖子的显示顺序都将保持一致。

结束