复杂的orderby参数:如何使用meta_value_num查询多个orderby参数?

时间:2016-08-25 作者:Blackbam

这是我当前用于WP\\U查询的参数:

array(5) {
  ["posts_per_page"]=>
  int(6)
  ["orderby"]=>
  array(2) {
    ["uss_product_price"]=>
    string(3) "ASC"
    ["uss_product_weight"]=>
    string(4) "DESC"
  }
  ["meta_query"]=>
  array(3) {
    ["relation"]=>
    string(3) "AND"
    ["sortprimary_clause"]=>
    array(2) {
      ["key"]=>
      string(17) "uss_product_price"
      ["compare"]=>
      string(6) "EXISTS"
    }
    ["sortsecondary_clause"]=>
    array(2) {
      ["key"]=>
      string(18) "uss_product_weight"
      ["compare"]=>
      string(6) "EXISTS"
    }
  }
  ["paged"]=>
  string(1) "1"
  ["post_type"]=>
  string(7) "product"
}
WordPress 4.0和4.2中引入了这种新的orderby:https://make.wordpress.org/core/2014/08/29/a-more-powerful-order-by-in-wordpress-4-0/https://make.wordpress.org/core/2015/03/30/query-improvements-in-wp-4-2-orderby-and-meta_query/

查询基本上可以正常工作,但产品是按字符串值uss\\u product\\u price和uss\\u product\\u weight排序的。之前,通过在WP\\u查询中提供meta\\u value\\u num而不是meta\\u value解决了此问题:https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters

我希望结果按uss\\U product\\U price(第一)和uss\\U product\\U weight(第二)的数值排序。在仍然使用多个orderby参数的复杂性的情况下,如何告诉查询使用数值?

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

呜呜,我为什么要为此悬赏;-)答案很简单-在元查询中添加“type”=>“numeric”。

array(5) {
  ["posts_per_page"]=>
  int(6)
  ["orderby"]=>
  array(2) {
    ["uss_product_price"]=>
    string(4) "DESC"
    ["uss_product_weight"]=>
    string(4) "DESC"
  }
  ["meta_query"]=>
  array(3) {
    ["relation"]=>
    string(3) "AND"
    ["sortprimary_clause"]=>
    array(3) {
      ["key"]=>
      string(17) "uss_product_price"
      ["compare"]=>
      string(6) "EXISTS"
      ["type"]=>
      string(7) "numeric"
    }
    ["sortsecondary_clause"]=>
    array(2) {
      ["key"]=>
      string(18) "uss_product_weight"
      ["compare"]=>
      string(6) "EXISTS"
    }
  }
  ["paged"]=>
  string(1) "1"
  ["post_type"]=>
  string(7) "product"
}

相关推荐

如何在WooCommerce_Account_Orders函数中传递$CURRENT_PAGE?

woocommerce功能woocommerce_account_orders($current_page) 已调用1个参数$current_page. 该函数通过调用woocommerce_account_orders_endpoint 通过以下挂钩-add_action( \'woocommerce_account_orders_endpoint\', \'woocommerce_account_orders\' );然而,在上述挂钩中,$current_page 未在函数中作为参数传递。情况如何$c