按日期(DESC)和标题(ASC)对帖子进行排序

时间:2017-07-02 作者:drabello

目前,我网站上的帖子按标题的字母顺序排列:

/* Order Posts Alphabetically */
function prefix_modify_query_order( $query ) {
  if ( is_main_query() ) {
    $query->set( \'orderby\', \'title\' );
    $query->set( \'order\', \'ASC\' );
  }
}
add_action( \'pre_get_posts\', \'prefix_modify_query_order\' );
现在,我想按标题(升序)和日期(降序)按字母顺序对帖子进行排序。

如以下示例:

奥迪A1野心1.4(发布于2017年1月1日)

  • 奥迪A1野心1.4(发布于2016年1月1日)
  • 奥迪A1野心1.4(发布于2015年1月1日)
  • 宝马120i Active Flex 2.0(发布于2017年1月1日)
  • 宝马120i Active Flex 2.0(发布于2016年1月1日)
  • 宝马120i Active Flex 2.0(发布于2015年1月1日)
  • 雪铁龙
  • 更改orderby 参数到$query->set( \'orderby\', \'date title\' ); 无法解决我的问题,因为我需要先显示最新的帖子。

    如果还有其他想法,我将不胜感激。

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

    可以将数组传递给query 如下例所述Codex 显示:

    $args = array(
    \'orderby\' => array( \'title\' => \'DESC\', \'menu_order\' => \'ASC\' )
    );
    
    $query = new WP_Query( $args );
    
    在您的情况下,将是这样的:

    /* Order Posts Alphabetically */
    function prefix_modify_query_order( $query ) {
      if ( is_main_query() ) {
    
        $args =  array( \'post_date\' => \'DESC\', \'title\' => \'ASC\' );
    
        $query->set( \'orderby\', $args );
      }
    }
    add_action( \'pre_get_posts\', \'prefix_modify_query_order\' );
    
    如果你想要post_date 作为主过滤器,您必须更改他在数组中的位置,现在代码将按字母顺序从最新的post\\u日期开始查询所有帖子。

    结束

    相关推荐

    即使使用元查询,Orderby查询也不适用于自定义字段

    我编写了以下查询来获取列表,并希望按升序显示名称列表。我刚才想通过meta_key 和meta_value 作为参数,但它不能正确地进行排序。尝试之后meta_query 我仍然被同样的问题困扰着。$connected = new WP_Query( array( \'connected_type\' => \'posts_to_pages\', \'connected_items\' => get_queried_ob