如果使用PRE_GET_POSTS的orderby参数对于多个POST是相同的,则查询使用什么后备?

时间:2015-02-01 作者:Rothbert

因此,我有3种自定义帖子类型,我想按menu\\u order&;订购;将“date”作为回退参数,因为大多数帖子的默认菜单顺序为“0”。

如果pre\\u get\\u posts可以相对简单地做到这一点(而不是像这样-Multiple orderby parameters in pre_get_posts() action), 但看起来不太可能。

这适用于菜单顺序设置为特定值的帖子,如果菜单顺序为0,则顺序似乎大多是随机的:

function order_cpt( $query ) {

if ( !is_admin() && $query->is_post_type_archive( array ( \'cat1\', \'cat2\', \'cat3\' ) &&  query->is_main_query() ) {
$query->set( \'orderby\', \'menu_order\');
$query->set( \'order\', \'DESC\' );
return $query;
}
}
add_action( \'pre_get_posts\', \'order_cpt\'); 
因此,我似乎找不到答案的第一个问题是,如何使用上述函数处理具有相同菜单顺序的帖子?

pre\\u get\\u posts是最佳路线还是我应该查看自定义WP\\u查询?

谢谢

1 个回复
最合适的回答,由SO网友:Milo 整理而成

对于相同的值,它们将以数据库引擎返回的任何顺序返回,这通常是它们插入数据库的顺序。

无论如何,您链接的问题是旧的,您可以按多个列排序WP_Query:

$query->set( \'orderby\', array( \'menu_order\' => \'ASC\', \'date\' => \'ASC\' ) );
pre_get_posts 根据WP_Query 实例,并具有相同的可用参数pre_get_posts 还是一种习惯WP_Query 正确的选择取决于是否尝试修改主查询。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post