Active License Elementor Pro chỉ với 300k/năm/domain Shop Now
Mới Dịch vụ thiết kế website, xử lý mã độc & tối ưu tốc độ chuyên sâu

Code hiển thị Block khác nhau theo tổng giỏ hàng trong Flatsome

Trang chủ shop WooCommerce với banner khuyến mãi màu cam lớn ở đầu trang và lưới sản phẩm có giá tiền Việt bên dưới

Bài viết này mình sẽ hướng dẫn bạn cách hiển thị Block khác nhau theo tổng giỏ hàng trong Flatsome nhé.

Shop muốn khách giỏ hàng còn nhỏ thấy banner “Mua thêm 200.000đ để được miễn phí vận chuyển”, còn khách giỏ đã lớn thì thấy banner “Bạn được tặng quà khi thanh toán” — mỗi nhóm khách thấy đúng thông điệp thúc họ chốt đơn. Flatsome có sẵn Block (UX Block) chèn được ở mọi nơi bằng shortcode [block id=”…”], nhưng mặc định không có cách nào tự đổi Block theo tổng giỏ hàng, muốn banner tự đổi theo giỏ thì bạn phải code thêm một shortcode bọc ngoài nhé.

Thêm code hiển thị Block theo tổng giỏ hàng

Bạn chỉ cần thêm code dưới vào cuối file functions.php của child theme Flatsome nhé. Nhớ sao lưu file trước khi sửa, và đừng chèn vào theme cha vì khi theme cập nhật sẽ mất code.

<?php
// Hiển thị Block (UX Block) khác nhau theo tổng giỏ hàng trong Flatsome
// Cách dùng: tạo 2 Block ở Blocks -> Add New (ví dụ "uu-dai-nho" và "uu-dai-lon"),
// rồi chèn shortcode vào Text element của UX Builder: [nn_block_theo_gio_hang nho="uu-dai-nho" lon="uu-dai-lon" nguong="500000"]
// Giỏ dưới 500.000đ hiện Block "nho", giỏ từ 500.000đ trở lên hiện Block "lon"
add_shortcode('nn_block_theo_gio_hang', 'nn_block_theo_gio_hang_shortcode');
function nn_block_theo_gio_hang_shortcode($atts) {
    $atts = shortcode_atts(array(
        'nho' => '',
        'lon' => '',
        'nguong' => 500000,
    ), $atts, 'nn_block_theo_gio_hang');
    if (!function_exists('WC') || !WC()->cart) {
        return '';
    }
    $tong_gio = (float) WC()->cart->get_subtotal();
    $nguong = (int) $atts['nguong'];
    if ($tong_gio >= $nguong && '' !== $atts['lon']) {
        $block_id = sanitize_text_field($atts['lon']);
    } elseif ('' !== $atts['nho']) {
        $block_id = sanitize_text_field($atts['nho']);
    } else {
        return '';
    }
    return do_shortcode('[block id="' . $block_id . '"]');
}

Code trên đăng ký shortcode [nn_block_theo_gio_hang] với ba thuộc tính: nho là ID hoặc slug của Block hiện khi giỏ còn nhỏ, lon là Block hiện khi giỏ đã lớn, nguong là mốc tổng tiền để đổi Block, mặc định 500.000đ. Khi shortcode chạy, code lấy tổng tiền giỏ bằng WC()->cart->get_subtotal(), nếu từ ngưỡng trở lên thì gọi do_shortcode với Block “lon”, còn không thì gọi Block “nho”. Code kiểm tra WooCommerce có đang chạy không và giỏ có tồn tại không trước khi đọc tổng tiền, nên trang nào không có giỏ hàng thì shortcode không in gì cả.

Tạo 2 Block và chèn shortcode vào trang

Bạn vào Blocks → Add New trong admin để tạo 2 Block bằng UX Builder, ví dụ Block “uu-dai-nho” với banner nhắc mua thêm để được miễn phí vận chuyển và Block “uu-dai-lon” với banner tặng quà, rồi ghi lại slug của từng Block. Sau đó mở trang muốn hiện banner (trang chủ, trang giỏ hàng hay bất kỳ trang nào), thêm element Text của UX Builder rồi dán shortcode [nn_block_theo_gio_hang nho=”uu-dai-nho” lon=”uu-dai-lon” nguong=”500000″]. Thử thêm hàng vào giỏ dưới 500.000đ rồi tải lại trang sẽ thấy banner nhỏ, thêm tiếp cho vượt 500.000đ thì banner tự đổi thành banner lớn.

Trang chủ shop WooCommerce với banner khuyến mãi màu cam lớn ở đầu trang và lưới sản phẩm có giá tiền Việt bên dưới
Kết quả: banner Block ở đầu trang tự đổi theo tổng giỏ hàng — giỏ nhỏ thấy banner nhắc mua thêm để được miễn phí vận chuyển, giỏ lớn thấy banner tặng quà.

Lưu ý khi dùng

Hàm get_subtotal() lấy tổng tiền hàng chưa gồm phí vận chuyển và thuế, nên mốc ngưỡng bạn đặt là mốc tiền hàng trong giỏ. Bạn đổi con số 500000 trong shortcode thành mốc của shop mình là được, và có thể dùng shortcode này nhiều lần với nhiều cặp Block khác nhau trên cùng một trang. Thuộc tính id của shortcode [block] nhận cả slug lẫn ID số của Block, theo đúng tài liệu Blocks của Flatsome. Tính năng này đi chung với bài code thêm thanh tiến trình miễn phí vận chuyển trong Flatsome là thành combo thúc khách tăng giỏ hàng khá tốt.

Kết luận

Vậy là chỉ với 1 shortcode bạn đã hiển thị Block khác nhau theo tổng giỏ hàng trong Flatsome rồi nhé. Tính năng này đi chung với bài code thêm thanh tiến trình miễn phí vận chuyển trong Flatsome và bài code thêm thông báo miễn phí vận chuyển ở đầu trang trong Flatsome là thành bộ công cụ tăng giá trị giỏ hàng cho shop dùng Flatsome.

Nếu cần mình kèm 1-1 về Flatsome thì cứ liên hệ mình nhé.

Nhân Viên

Nhân Viên

Web Developer & WordPress Expert

Ngọc Nguyễn - Chuyên gia thiết kế Website WordPress, tối ưu tốc độ 90+ và xử lý dứt điểm mã độc. Đam mê chia sẻ kiến thức hữu ích đến cộng đồng lập trình & webmaster.

Để lại bình luận hoặc thắc mắc

Email của bạn sẽ không được hiển thị công khai.

Ngọc Nguyễn
Ngọc Nguyễn
| Thiết kế Website | Hosting tốc độ cao | Giải pháp hạ tầng | Fix lỗi WordPress, mã độc | Tối ưu tốc độ | Thiết kế Website | Hosting tốc độ cao | Giải pháp hạ tầng | Fix lỗi WordPress, mã độc | Tối ưu tốc độ
Tư vấn miễn phí