我在我的网站中使用自定义商店页面。在那里,我使用"产品循环" WPBakery的组件(以前的Visual Composer)。
我想改变" Recent"为了使"缺货"在这种情况下产品不显示,我试图把
在下面的代码中'stock_status' => 'instock',
,但它没有用。
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
switch ($display) {
case 'recent':
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'stock_status' => 'instock',
'ignore_sticky_posts' => 1,
'posts_per_page' => $count,
'orderby' => 'date',
'order' => 'desc',
'paged' => $paged,
'meta_query' => WC()->query->get_meta_query(),
);
break;
无论是否有线,结果都是一样的。
另一种情况:
我想改变最高等级"选择使"缺货"产品出现在产品循环的末尾。 我有以下代码:
case 'top_rated':
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'ignore_sticky_posts' => 1,
'posts_per_page' => $count,
'order' => $order,
'paged' => $paged,
'meta_key' => '_wc_average_rating',
'orderby' => 'meta_value_num',
'meta_query' => WC()->query->get_meta_query(),
'tax_query' => WC()->query->get_tax_query(),
);
break;
我需要使用带有2个参数的查询,最高评级和stock_status。如何在上面的代码中创建查询?
我的环境:
主题木星版本6.1.1
WPBakery 5.4.5.1
WooCommerce版本3.3.4
WordPress 4.9.4
抱歉,我在PHP方面的知识是新手......
答案 0 :(得分:1)
对于'最近'的案例:
//RAS
//creates a variable with the standard meta query of woocommerce
$meta_query = WC()->query->get_meta_query();
/*adds custom metakey to variable above with argument to display all that have the field
'_stock_status' with value other than outofstock
*/
$meta_query[] = array(
'relation' => 'AND',
array(
'key' => '_stock_status',
'value' => 'outofstock',
'compare' => '!='
),
);
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'ignore_sticky_posts' => 1,
'posts_per_page' => $count,
'orderby' => 'date',
'order' => 'desc',
'paged' => $paged,
'meta_query' => $meta_query,//use variable created as an argument
);
break;
答案 1 :(得分:1)
Para o segundo caso。 案例'top_rated':
//RAS
//cria uma variável com a meta query padrao do woocommerce
$meta_query = WC()->query->get_meta_query();
/*cria instancias para as 2 metakeys(array) para utilizar como argumento no orderby, e adiciona a variável acima.*/
$meta_query = array(
'relation' => 'AND',
'rating' => array('key' => '_wc_average_rating','compare' => 'EXISTS',),
'stockstatus' => array('key' => '_stock_status','compare' => 'EXISTS',),
);
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'ignore_sticky_posts' => 1,
'posts_per_page' => $count,
//'order' => $order,
'paged' => $paged,
//'meta_key' => '_wc_average_rating',
//'orderby' => 'meta_value_num',
'meta_query' => $meta_query,//usa a variavel criada como argumento
'tax_query' => WC()->query->get_tax_query(),
'orderby' => array('rating'=>'DESC','stockstatus'=>'ASC',),//usa as instancias criadas como argumento para orderby.
);
break;