【发布时间】:2021-08-31 07:51:32
【问题描述】:
假设我有 3 个产品。
Woocommerce 有默认的 meta_key: _price 显示正常价格。
产品A:meta_key:_price,价值:80
产品 B:meta_key:_price,value:90,meta_key:_custom_price,value:70
产品C:meta_key:_price,价值:100
在进行 ASC 排序时,我的期望是:B、A、C
但它按 _price 排序:A、B、C
有什么办法解决这个问题吗?
$loop = new WP_Query(array(
'post_type'=>'product',
'meta_query' => array(
'relation' => 'OR',
'custom_price' => array(
'key' => '_custom_price',
'compare' => 'EXISTS'
),
'price' => array(
'key' => '_price',
'compare' => 'EXISTS'
),
),
'orderby' => array(
'custom_price' => 'ASC',
'price' => 'ASC'
),
));
while ( $loop->have_posts() ) : $loop->the_post();
wc_get_template_part( 'content', 'product' );
endwhile;
wp_reset_query();
【问题讨论】:
-
您需要添加自定义钩子来修改排序子句。 asarosenberg.se/code/…
-
@VickyP 感谢您的回复!我试过了,但它不工作......任何想法为什么? function customorderby($orderby) { return '_price.meta_value DESC, _meta_price.meta_value+0 DESC'; } $args = 数组('post_type' => '产品','meta_key' => '_price','meta_query' => 数组(数组('key' => '_price'),数组('key' => '_meta_price', ), ) ); add_filter('posts_orderby','customorderby'); $query = new WP_Query($args); remove_filter('posts_orderby','customorderby');
标签: php wordpress sorting woocommerce