我正在使用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过滤器,但问题是这个查询是动态生成循环的一部分所以我不能“破解”或硬编码任何东西。
答案 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",
)
),