- shares
- Facebook Messenger
- Gmail
- Viber
- Skype
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.
Hãy cho mình biết suy nghĩ của bạn trong phần bình luận bên dưới bài viết này. Hãy theo dõi kênh chia sẻ kiến thức WordPress của Hoangweb trên Twitter và Facebook
- shares
- Facebook Messenger
- Gmail
- Viber
- Skype