如何在functions.php中为Woocommerce添加多元键的自定义排序?

时间:2017-09-30 08:00:09

标签: php wordpress sorting woocommerce

我正在开发WooCommerce,该产品附带自定义字段(字段名称:年份)。我想为我的商店做一个自定义的分类,产品应按年份排序,然后按最高价格进行分类。

例如

  • 产品A是2017年,$ 20
  • 产品B是2017年,25美元
  • 产品C是2016年,30美元

商店页面应该像这样订购 B。一个 。 ç

我从互联网上的很多来源搜索过,我找到了一些有用的文章,但我不知道如何在查询中添加多元meta_key

参考链接:http://dominykasgel.com/how-to-add-custom-product-sorting-options-in-woocommerce/

我在代码中看到了

$args['meta_key'] = '_sale_price';
$args['orderby'] = 'meta_value_num';
$args['order'] = 'DESC';

请有人告诉我如何添加更多$ args [' meta_key']以及如何将它们组合在一起运行排序工作? (在我的案例中,更多meta_key是我的自定义字段,名为' year')。

非常感谢。

1 个答案:

答案 0 :(得分:0)

要按多个元值排序,您需要使用meta_query。 来自Wordpress CODEX:

如果您希望通过两个不同的postmeta(例如,City first和State second)进行排序,则需要使用命名的元查询将元查询与您的orderby数组合并链接到#order;'。请参阅以下示例:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
    'orderby' => array( 
        'city_clause' => 'ASC',
        'state_clause' => 'DESC',
    ),
) );

所以你需要在meta_query数组中添加所有的order_clauses ...