How to order by post_status?

时间:2015-07-03 作者:Xaver

我正在使用get_posts() 像这样:

$posts = get_posts(array(\'orderby\' => \'post_status\'))
这是不可能的,因为它不在parse_orderby() 方法

如何绕过这个限制?

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

您可以使用\'posts_orderby\' 筛选以更改执行的SQL。

请注意:

使用get_posts() 您需要设置\'suppress_filters\' 的参数false 如果未明确设置\'post_status\' 您只会收到已发布的帖子(因此没有太多订单)代码示例:

$filter = function() {
  return \'post_status ASC\';
};

add_filter(\'posts_orderby\', $filter);

$posts = get_posts(\'post_status\' => \'any\', \'suppress_filters\' => false);

remove_filter(\'posts_orderby\', $filter);

SO网友:iB Arts Pvt Ltd

add_filter(\'posts_orderby\', \'custom_post_status\', 10,2);
function custom_post_status($args, $wp_query){
  if($wp_query->query_vars[\'orderby\'] == \'post_status\') {
    if($wp_query->query_vars[\'order\']) {
        return \'post_status \'.$wp_query->query_vars[\'order\'];
    }
    else {
        return \'post_status ASC\';
    }
  }
  return $args;
} 

添加此选项将在WP\\U查询中启用“orderby”=>“post\\U status”

结束

相关推荐

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

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