복붙노트

[WORDPRESS] 단지 Woocommerce에서 특정 제품에 대한 설정 카트 항목 제품 생성 판매 가격

WORDPRESS

단지 Woocommerce에서 특정 제품에 대한 설정 카트 항목 제품 생성 판매 가격

해결법


  1. 1.특정 제품 ID에 대한 장바구니 항목의 오른쪽 생성 된 판매 가격을 얻으려면 다음을 수행하십시오 :

    특정 제품 ID에 대한 장바구니 항목의 오른쪽 생성 된 판매 가격을 얻으려면 다음을 수행하십시오 :

    // HERE below in the array set your specific product IDs
    function specific_product_ids(){
        return array(37, 41); //  <===  <===  <===  <===  Your Product IDs
    }
    
    // Generating dynamically the product "regular price"
    add_filter( 'woocommerce_product_get_regular_price', 'custom_dynamic_regular_price', 10, 2 );
    add_filter( 'woocommerce_product_variation_get_regular_price', 'custom_dynamic_regular_price', 10, 2 );
    function custom_dynamic_regular_price( $regular_price, $product ) {
        if( ( empty($regular_price) || $regular_price == 0 ) && in_array($product->get_id(), specific_product_ids() ) )
            return $product->get_price();
        else
            return $regular_price;
    }
    
    
    // Generating dynamically the product "sale price"
    add_filter( 'woocommerce_product_get_sale_price', 'custom_dynamic_sale_price', 10, 2 );
    add_filter( 'woocommerce_product_variation_get_sale_price', 'custom_dynamic_sale_price', 10, 2 );
    function custom_dynamic_sale_price( $sale_price, $product ) {
        $rate = 0.8;
        if( ( empty($regular_price) || $regular_price == 0 ) && in_array($product->get_id(), specific_product_ids() ) )
            return $product->get_regular_price() * $rate;
        else
            return $sale_price;
    };
    
    // Displayed formatted regular price + sale price
    add_filter( 'woocommerce_get_price_html', 'custom_dynamic_sale_price_html', 20, 2 );
    function custom_dynamic_sale_price_html( $price_html, $product ) {
        if( $product->is_type('variable') ) return $price_html;
    
        if( in_array($product->get_id(), specific_product_ids() ) ) {
            $price_html = wc_format_sale_price( wc_get_price_to_display( $product, array( 'price' => $product->get_regular_price() ) ), wc_get_price_to_display(  $product, array( 'price' => $product->get_sale_price() ) ) ) . $product->get_price_suffix();
        }
        return $price_html;
    }
    
    // Set cart item generated "sale price" for specific product IDs
    add_action( 'woocommerce_before_calculate_totals', 'set_cart_item_sale_price', 10, 1 );
    function set_cart_item_sale_price( $cart ) {
        if ( is_admin() && ! defined( 'DOING_AJAX' ) )
            return;
    
        // Iterate through each cart item
        foreach( $cart->get_cart() as $cart_item ) {
            if( in_array($cart_item['data']->get_id(), specific_product_ids() ) ) {
                $price = $cart_item['data']->get_sale_price(); // get sale price
                $cart_item['data']->set_price( $price ); // Set the sale price
            }
        }
    }
    

    코드 활성 자식 테마 (활성 테마)의 function.php 파일에 간다. 테스트 및 작동합니다.

  2. from https://stackoverflow.com/questions/52563301/set-cart-item-product-generated-sale-price-only-for-specific-products-in-woocomm by cc-by-sa and MIT license