我有这个wp_query $ args可以通过我用于过滤器的一些$ _GET参数从woocommerce查询产品中获得产品。实际上, 我的问题是按价格排序根本不起作用。我多次使用这种属性, 但实际上在这里行不通。我在这里粘贴我的代码。
if ($_GET['filter_pietre'] != -1 && $_GET['filter_pietre'] != NULL) {
$pietre_operator = 'IN';
} else {
$pietre_operator = 'NOT IN';
}
if ($_GET['filter_metals'] != -1 && $_GET['filter_metals'] != NULL) {
$metals_operator = 'IN';
} else {
$metals_operator = 'NOT IN';
}
if ($_GET['filter_finitura'] != -1 && $_GET['filter_finitura'] != NULL) {
$finishes_operator = 'IN';
} else {
$finishes_operator = 'NOT IN';
}
if ($_GET['filter_coloresmalto'] != -1 && $_GET['filter_coloresmalto'] != NULL) {
$pa_coloresmalto = 'IN';
} else {
$pa_coloresmalto = 'NOT IN';
}
if ($_GET['filter_ispirazione'] != -1 && $_GET['filter_ispirazione'] != NULL) {
$pa_ispirazione = 'IN';
} else {
$pa_ispirazione = 'NOT IN';
}
$params = array(
'posts_per_page' => -1, 'post_type' => 'product', 'meta_query' => array(
//filters
'relation' => 'AND', array(
'key' => '_stock_status', 'value' => 'instock'
), array(
'meta_key' => '_price', 'orderby' => 'meta_value_num', 'order' => 'ASC', 'type' => 'NUMERIC'
), ), 'tax_query' => array(
'relation' => 'AND', array(
'taxonomy' => 'product_cat', 'field' => 'id', 'terms' => $term_id
), array(
'taxonomy' => 'pa_pietre', 'terms' => $_GET['filter_pietre'], 'field' => 'slug', 'operator' => $pietre_operator
), array(
'taxonomy' => 'pa_metals', 'terms' => $_GET['filter_metals'], 'field' => 'slug', 'operator' => $metals_operator
), array(
'taxonomy' => 'pa_finishes', 'terms' => $_GET['filter_finitura'], 'field' => 'slug', 'operator' => $finishes_operator
), array(
'taxonomy' => 'pa_coloresmalto', 'terms' => $_GET['filter_coloresmalto'], 'field' => 'slug', 'operator' => $pa_coloresmalto
), array(
'taxonomy' => 'pa_ispirazione', 'terms' => $_GET['filter_ispirazione'], 'field' => 'slug', 'operator' => $pa_ispirazione
)
), );
$wc_query = new WP_Query($params);
实际上, 按其他任何属性排序都可以, 但不能正常使用价格。提前致谢。
#1
你需要对参数进行一些修改。请使用以下之一。
$params = array(
'posts_per_page' => -1, 'post_type' => 'product', 'orderby' => 'meta_value_num', 'meta_key' => '_price', 'order' => 'asc', 'meta_query' => array(
//filters
'relation' => 'AND', array(
'key' => '_stock_status', 'value' => 'instock'
)
), 'tax_query' => array(
'relation' => 'AND', array(
'taxonomy' => 'product_cat', 'field' => 'id', 'terms' => $term_id
), array(
'taxonomy' => 'pa_pietre', 'terms' => $_GET['filter_pietre'], 'field' => 'slug', 'operator' => $pietre_operator
), array(
'taxonomy' => 'pa_metals', 'terms' => $_GET['filter_metals'], 'field' => 'slug', 'operator' => $metals_operator
), array(
'taxonomy' => 'pa_finishes', 'terms' => $_GET['filter_finitura'], 'field' => 'slug', 'operator' => $finishes_operator
), array(
'taxonomy' => 'pa_coloresmalto', 'terms' => $_GET['filter_coloresmalto'], 'field' => 'slug', 'operator' => $pa_coloresmalto
), array(
'taxonomy' => 'pa_ispirazione', 'terms' => $_GET['filter_ispirazione'], 'field' => 'slug', 'operator' => $pa_ispirazione
)
), );
$wc_query = new WP_Query($params);
你已在应该位于外部的元查询中添加了排序依据。
来源:
https://www.srcmini02.com/66428.html