繁体   English   中英

如何在自定义 woocommerce 短代码中显示新产品

[英]How to show New Products in custom woocommerce shortcode

我想编辑 woocommerce 产品简码以仅显示没有价格的产品 创建新产品时,它没有价格值(不为空,不为空)。 如何过滤没有价格的新产品?

我使用'value' => ''但我的简码不显示新产品。 当我为新产品设置价格然后将其删除时,该产品会显示在我的简码中。 我的简码是: [products class="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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM