【问题标题】:Complex WordPress Orderby Parameters: How to query with multiple orderby parameters using meta_value_num?复杂的 WordPress Orderby 参数:如何使用 meta_value_num 查询多个 orderby 参数?
【发布时间】:2016-08-26 18:54:26
【问题描述】:

这是我当前的 WP_Query 参数:

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"
}

这种新的 orderby 是在 WordPress 4.0 和 4.2 中引入的: 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_product_price 和 uss_product_weight 的字符串值排序的。以前这个问题是通过在 WP_Query 中给出 meta_value_num 而不是 meta_value 来解决的: https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters

我希望结果按 uss_product_price(第一)和 uss_product_weight(第二)的数值排序。如何在仍然使用多个 orderby 参数的复杂性的同时告诉查询使用数值?

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    答案很简单 - 将 '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"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-08
      • 1970-01-01
      • 2019-07-07
      • 1970-01-01
      • 2022-01-12
      • 2011-11-30
      相关资源
      最近更新 更多