Home WordpressWordPress cơ bản [WooCommerce] Hiển thị giá khác nhau dựa trên khu vực mua sắm

[WooCommerce] Hiển thị giá khác nhau dựa trên khu vực mua sắm

by admincp

Bạn muốn hiển thị các mức giá khác nhau tùy thuộc vào quốc gia mà khách hàng của bạn đang sống. Đây là một chức năng rất quan trọng, nếu phải bao gồm thuế suất, hoặc phí xuất khẩu.

Trong bài này, bạn sẽ học cách có thể hiển thị một mức giá khác cho sản phẩm của mình, tùy thuộc vào nơi khách hàng mua sắm. Đoạn mã sau sẽ hiển thị thêm một trường giá tùy chỉnh mới.

add_action( 'woocommerce_product_options_pricing', 'tl_add_can_price_box' );
function tl_add_can_price_box() {
    woocommerce_wp_text_input( array( 'id' => 'can_price', 'class' => 'wc_input_price_extra_info short', 'label' => __( 'Price in Canadian , 'woocommerce' ) ) );
}

Bạn cần lưu lại trường này, khi cập nhật sản phẩm.

// This one is for saving above fields
add_action('woocommerce_process_product_meta', 'tl_save_can_price', 2, 2);
function tl_save_can_price($post_id, $post) {
    update_post_meta($post_id, 'can_price', stripslashes($_POST['can_price']));
}

Tiếp đến, mình sẽ thêm chức năng kiểm tra quốc gia của khách hàng và thêm điều kiện hiển thị giá mặc định hoặc giá tùy chỉnh.

// Here is the logic for price
if(!is_admin()) {
    add_filter( 'woocommerce_get_price', 'change_price', 10, 2 );
    function change_price($price, $product) {
        global $woocommerce;
        $customer_country = $woocommerce->customer->get_country();
        if($customer_country == "CA") {
            return get_post_meta($product->id, 'can_price', true); 
        } else {
            return $price;
        }
        
    }
}

Nếu bạn có nhiều quốc gia có giá tùy chỉnh, bạn có thể thêm một quốc gia khác trong điều kiện của mình:

// Here is the logic for price
if(!is_admin()) {
    add_filter( 'woocommerce_get_price', 'change_price', 10, 2 );
    function change_price($price, $product) {
        global $woocommerce;
        $customer_country = $woocommerce->customer->get_country();
        if($customer_country == "CA") {
            return get_post_meta($product->id, 'can_price', true);
        } elseif ($customer_country == "US") {
            return get_post_meta($product->id, 'us_price', true);
        } else {
            return $price;
        }
        
    }
}

Đây là toàn bộ code bạn sẽ thêm vào tệp functions.php

add_action( 'woocommerce_product_options_pricing', 'tl_add_can_price_box' );
function tl_add_can_price_box() {
    woocommerce_wp_text_input( array( 'id' => 'can_price', 'class' => 'wc_input_price_extra_info short', 'label' => __( 'Price in Canadian , 'woocommerce' ) ) );
}
// This one is for saving above fields
add_action('woocommerce_process_product_meta', 'tl_save_can_price', 2, 2);
function tl_save_can_price($post_id, $post) {
    update_post_meta($post_id, 'can_price', stripslashes($_POST['can_price']));
}

// Here is the logic for price
if(!is_admin()) {
    add_filter( 'woocommerce_get_price', 'change_price', 10, 2 );
    function change_price($price, $product) {
        global $woocommerce;
        $customer_country = $woocommerce->customer->get_country();
        if($customer_country == "CA") {
            return get_post_meta($product->id, 'can_price', true); 
        } else {
            return $price;
        }
        
    }
}

Chúc bạn thành công.

Nếu bạn thích bài viết này, hãy ủng hộ chúng tôi bằng cách đăng ký nhận bài viết mới ở bên dưới và đừng quên chia sẻ kiến thức này với bạn bè của bạn nhé. Bạn cũng có thể theo dõi blog này trên TwitterFacebook

Liên hệ

Công ty chuyên Thiết kế website uy tín nhất Miền Bắc: http://vinastar.net

Hotline tư vấn: 0989 48 3456

Nguồn: Sưu tầm trên internet

You may also like

Leave a Comment