你如何在Wordpress中按2个元值排序?

时间:2014-11-20 13:45:16

标签: php woocommerce wordpress

我正在使用Woocommerce,虽然我的问题一般与WP_Query有关。我正在为畅销产品创建一个自定义WP_Query循环,我想让用户能够按价格从高到低,从低到高对结果进行排序。问题在于Woocommerce,_price和total_sales都是元字段,据我所知,我只能在Wordpress循环中按1个元字段排序。有办法解决这个问题吗?

我的full code including some of my attempts is here,最相关的代码段如下所示:

$queryArgs = array(
            'post_type' => 'product',
            'posts_per_page' => -1,
            'post_status' => 'publish',
            'meta_query' => array(
                array(
                    'key'           => '_visibility',
                    'value'         => array('catalog', 'visible'),
                    'compare'       => 'IN'
                )
            ),
            'meta_key' => '_price',
            'orderby' => array('meta_value_num' => $sortBy['terms'])
        );

实际代码比这更复杂,因为它是为一系列过滤和排序选项而构建的,但这是它的要点,而畅销书是因为两个meta_keys而给我带来问题的唯一因素。 I've read this但它不适用于自定义元字段。

我试过了:

'meta_key' => '_price total_sales'

'meta_key => array('_price', 'total_sales')
'orderby' => array('meta_value_num' => $sortBy['terms'], 'meta_value_num' => 'DESC')

似乎没什么用。我也试过挂钩各种WP_Query过滤器,但问题是这个查询是动态生成循环的一部分所以我不能“破解”或硬编码任何东西。

1 个答案:

答案 0 :(得分:1)

对数组使用元查询:

'meta_query' => array (
            array (
                'key' => '_visibility',
                'value'  => array('catalog', 'visible'),
                'compare' => 'IN'
             ),
            array (
                'key' => '_price',
                'value' => "VALUE WHAT YOU WANT, NOT ASC/DESC",
            )
        ),