如何在自定义的wooccommerce快捷代码中显示新产品



我想编辑wooccommerce产品快捷代码,只显示没有价格的产品;创建新产品时,它没有价格值(不为空,不为空(。如何在没有价格的情况下筛选新产品?

我使用'value'=>''但我的短代码不显示新产品。当我为新产品设定价格,然后将其删除时,这个产品会显示在我的快捷代码中。我的短代码是:[产品类别="bp noprice"]

add_filter( 'woocommerce_shortcode_products_query', 'biapin_filter_woocommerce_shortcode_products_query', 10, 3 );
function biapin_filter_woocommerce_shortcode_products_query( $query_args, $atts, $loop_name ) {
if ( $atts['class'] == 'bp-noprice' ) {
$query_args['meta_query'] = array (
array(
'key'     => '_price',
'value'   => '',
'compare' => 'IN',
),
);
}
return $query_args;
}

这将更新快捷代码,使其仅显示没有价格的简单产品。0.00的价格是指某个东西有价格,但它被删除了。NOT EXISTS是在new中输入的产品,但价格字段为空。如果只需要后者,则可以调整查询并删除0条件。

请注意,此查询将是包含tax_query选项的slow query

add_filter( 'woocommerce_shortcode_products_query', 'biapin_filter_woocommerce_shortcode_products_query', 10, 3 );
function biapin_filter_woocommerce_shortcode_products_query( $query_args, $atts, $loop_name ) {
if ( 'bp-noprice' === $atts['class'] ) {
$query_args['meta_query'] = array(
'relation' => 'OR',
array(
'key'     => '_price',
'value'   => '0',
'compare' => '=',
'type'    => 'NUMERIC',
),
array(
'key'     => '_price',
'compare' => 'NOT EXISTS',
),
);
$query_args['tax_query']  = array(
array(
'taxonomy' => 'product_type',
'field'    => 'slug',
'terms'    => array( 'simple' ),
),
);
}
return $query_args;
}

最新更新