簡體   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