WooCommerce: Đặt / ghi đè giá sản phẩm theo lập trình
Bạn thường đặt giá thông thường và giá ưu đãi hoặc thay thế giá sản phẩm thông qua các trường giá trong “Product Data”; tuy nhiên, đôi khi bạn có thể phải ghi đè các giá đó qua mã, bởi vì bạn đang chạy một chương trình khuyến mại đặc biệt, bạn không muốn thay đổi hàng nghìn mức giá theo cách thủ công hoặc có thể bạn chỉ cần hiển thị các giá trị khác nhau cho khách hàng đã đăng nhập. Woocommerce sẽ giúp bạn thực hiện điều đó!
Dù bằng cách nào, việc “setting” giá sản phẩm theo chương trình bao gồm hai thao tác riêng biệt. Đầu tiên, bạn cần thay đổi “display” giá sản phẩm trên các trang đơn lẻ và trang lặp; thứ hai, bạn thực sự cần đặt giá “cart item”, vì mã trước đó không thực sự thay đổi giá trị giá.
Đây là ảnh chụp màn hình của trang sản phẩm đơn lẻ sau khi áp dụng chiết khấu 20% chỉ cho khách hàng đã đăng nhập. Giá gốc là $ 34
Đoạn mã PHP: Giá sản phẩm thay thế có lập trình trong giao diện người dùng WooCommerce.
Ví dụ: trong đoạn mã dưới đây, chúng tôi sẽ chỉ thay đổi giá của một ID sản phẩm nếu người dùng đã đăng nhập và là khách hàng đã đăng ký. Tất nhiên, bạn có thể áp dụng cùng một chiến lược cho các tình huống trường hợp khác nhau, ví dụ: thay đổi giá cho một danh mục sản phẩm cụ thể, áp dụng phụ phí cho tất cả các sản phẩm dưới $ 10, v.v.
Phần 1 – Sản phẩm WooCommerce
[code]
add_filter( ‘woocommerce_get_price_html’, ‘bbloomer_alter_price_display’, 9999, 2 );
function bbloomer_alter_price_display( $price_html, $product ) {
// ONLY ON FRONTEND
if ( is_admin() ) return $price_html;
// ONLY IF PRICE NOT NULL
if ( ” === $product->get_price() ) return $price_html;
// IF CUSTOMER LOGGED IN, APPLY 20% DISCOUNT
if ( wc_current_user_has_role( ‘customer’ ) ) {
$orig_price = wc_get_price_to_display( $product );
$price_html = wc_price( $orig_price * 0.80 );
}
return $price_html;
}
[/code]
Phần 2 – Giỏ hàng / Thanh toán WooCommerce
[code]
add_action( ‘woocommerce_before_calculate_totals’, ‘bbloomer_alter_price_cart’, 9999 );
function bbloomer_alter_price_cart( $cart ) {
if ( is_admin() && ! defined( ‘DOING_AJAX’ ) ) return;
if ( did_action( ‘woocommerce_before_calculate_totals’ ) >= 2 ) return;
// IF CUSTOMER NOT LOGGED IN, DONT APPLY DISCOUNT
if ( ! wc_current_user_has_role( ‘customer’ ) ) return;
// LOOP THROUGH CART ITEMS & APPLY 20% DISCOUNT
foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
$product = $cart_item[‘data’];
$price = $product->get_price();
$cart_item[‘data’]->set_price( $price * 0.80 );
}
}
[/code]
Và đây là ảnh chụp màn hình của cùng một sản phẩm, ở chế độ đăng xuất. Điều này hiển thị giá sản phẩm ban đầu ($ 34) theo cài đặt WooCommerce. Nó hiển thị cho tất cả người dùng chưa đăng nhập và cũng cho tất cả người dùng đã đăng nhập không phải là “khách hàng”:
Thêm đoạn mã này vào đâu?
Bạn có thể đặt các đoạn mã PHP ở cuối tệp functions.php chủ đề con của mình (trước “?>” Nếu bạn có). Mặt khác, CSS có trong tệp style.css chủ đề con của bạn.
Đoạn mã này (vẫn) hoạt động chứ?
Vui lòng cho tôi biết trong phần bình luận nếu mọi thứ hoạt động như mong đợi. Tôi rất sẵn lòng sửa đổi đoạn mã nếu bạn có góp ý phù hợp (vui lòng cung cấp ảnh chụp màn hình).
Dịch vụ thiết kế website chuyên nghiệp tại Web MTP
Liên hệ ngay với chúng tôi nếu bạn đang gặp khó khăn trong việc thiết kế web nhé!
Website: https://webmtp.com/
Hotline: 0931 912 379
Mời bạn xem nhiều bài hấp dẫn khác