【问题标题】:Sort wp_query by multiple meta keys (numeric) in specific order按特定顺序按多个元键(数字)对 wp_query 进行排序
【发布时间】:2020-10-01 23:14:53
【问题描述】:

我需要按特定顺序对查询进行排序,但我多次未能找到正确的解决方案,但没有任何帮助 - 所以我要求提供一些提示我做错了什么。

简短的故事:我有一个 wp_query 显示以最便宜的价格订购的自行车。到目前为止它正在工作。但现在我想在开始按价格订购之前先展示一些促销自行车。因此,促销自行车首先显示,然后是“正常”循环。

促销自行车由名为“promotional_bikes”的 ACF 字段标记。

这是我的 wp_query:

    $args = array(
        'post_type'         => 'bikes',
        'posts_per_page'    => -1,
        'facetwp'           => true,
        'post_status'       => 'publish',
        'orderby'           => 'meta_value_num',
        'order'             => 'ASC',
        'meta_key'          => 'baseprice_0_rate', // it's a repeater field in acf

        );

meta_key = baseprice_0_rate meta_value = 100 - 1000 // 由于价格不同而不同的值

meta_key = Promotion_bike meta_value = 1 // 因为acf中的true或false

这是我最后一次尝试:

    $args = array(
    'post_type'         => 'bike',
    'posts_per_page'    => -1,
    'facetwp'           => true,
    'post_status'       => 'publish',

    
    'meta_query' => array(

    'promo_bike' => array(
            'key' => 'promotional_bike',
            'compare' => 'EXISTS',
    ),
    'cheapest_bikes' => array(
            'key' => 'baseprice_0_rate',
            'compare' => 'EXISTS',
    ),
    ),

    'orderby' => array(
            'promotional_bike' => 'ASC',
            'cheapest_bikes' => 'meta_value_num',
    )

);

但我得到 0 个结果,它不起作用。

谁能给我一个提示,如何首先展示促销自行车,然后展示自行车(从低价到高价)?

非常感谢:-)

【问题讨论】:

  • 您是否真的有帖子存在promotional_bikebaseprice_0_rate 两者?因为这是您当前的元查询所要求的。

标签: php wordpress


【解决方案1】:

我在试图弄清楚如何orderby 多个数字元字段时遇到了这个问题。终于弄明白了,想贴一些小贴士,以防其他人出于同样的原因来到这里。

假设 OP 的查询已返回结果,以下是按多个数字元字段排序的方法。关键是定义meta_query子句时的type属性。

$args = [
  'post_type' => 'bike',
  'posts_per_page' => -1,
  'facetwp' => true,
  'post_status' => 'publish',
  
  'meta_query' => [
    'promo_bike' => [
      'key' => 'promotional_bike',
      'compare' => 'EXISTS',
      'type' => 'NUMERIC', // makes orderby sort numerically instead of alphabetically
    ],
    'cheapest_bikes' => [
      'key' => 'baseprice_0_rate',
      'compare' => 'EXISTS',
      'type' => 'NUMERIC',
    ],
  ],

  'orderby' => [
    'promo_bike' => 'DESC', // assuming you want promotional_bike=1 at the top
    'cheapest_bikes' => 'ASC',
  ],
]

来源:
https://ideone.com/RUoyZs
https://wordpress.stackexchange.com/questions/246355/order-by-multiple-meta-key-and-meta-value

【讨论】:

    【解决方案2】:

    您无需为此编写代码。只需您可以从 Category>Count 中缩短您的产品,然后您可以拖放...以便更好地理解 - 您可以查看我的 video 教程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多