WooCommerce: Thêm phí thanh toán dựa trên nút Custom Radio

Nếu bạn muốn thêm phí thanh toán trong woocommerce. Đây là một đoạn mã WooCommerce tuyệt vời (hoặc plugin, nếu bạn muốn gọi nó như vậy) cho những người muốn cung cấp phí thanh toán có điều kiện. Ví dụ: bạn có thể cần hiển thị các nút “custom checkout radio” để chọn loại bao bì cao cấp, tùy chọn gói quà, dịch vụ cụ thể hoặc bất cứ điều gì có thể làm tăng AOV (Giá trị đơn hàng trung bình) của bạn.

Lựa chọn nút radio phải hoạt động với “Ajax” – có nghĩa là ngay sau khi chọn nút radio, thanh toán phải làm mới để hiển thị tổng số và phí cập nhật.

Một cái gì đó tương tự (và cũng phức tạp hơn, chẳng hạn như cung cấp các sản phẩm bổ sung) đạt được bởi WooCommerce Checkout Add-Ons Plugin  được bán trên thị trường WooCommerce.com chính thức. Nhưng trong trường hợp này, chúng tôi muốn xem xét mã tùy chỉnh để bạn có thứ gì đó để làm! Thưởng thức.

WooCommerce: Thêm phí thanh toán dựa trên nút Custom Radio

Đoạn mã PHP: Thêm phí thanh toán động dựa trên các nút custom radio trong WooCommerce Checkout.

Phần 1: Hiển thị các nút radio

[code]

add_action( ‘woocommerce_review_order_before_payment’, ‘bbloomer_checkout_radio_choice’ );

function bbloomer_checkout_radio_choice() {

$chosen = WC()->session->get( ‘radio_chosen’ );
$chosen = empty( $chosen ) ? WC()->checkout->get_value( ‘radio_choice’ ) : $chosen;
$chosen = empty( $chosen ) ? ‘0’ : $chosen;

$args = array(
‘type’ => ‘radio’,
‘class’ => array( ‘form-row-wide’, ‘update_totals_on_change’ ),
‘options’ => array(
‘0’ => ‘No Option’,
’10’ => ‘Option 1 ($10)’,
’30’ => ‘Option 2 ($30)’,
),
‘default’ => $chosen
);

echo ‘<div id=”checkout-radio”>’;
echo ‘<h3>Customize Your Order!</h3>’;
woocommerce_form_field( ‘radio_choice’, $args, $chosen );
echo ‘</div>’;

}

[/code]
Phần 2: Thêm phí và tính tổng.

[code]

add_action( ‘woocommerce_cart_calculate_fees’, ‘bbloomer_checkout_radio_choice_fee’, 20, 1 );

function bbloomer_checkout_radio_choice_fee( $cart ) {

if ( is_admin() && ! defined( ‘DOING_AJAX’ ) ) return;

$radio = WC()->session->get( ‘radio_chosen’ );

if ( $radio ) {
$cart->add_fee( ‘Option Fee’, $radio );
}

}

[/code]
Phần 3: Add Radio Choice to Session
[code]

add_action( ‘woocommerce_checkout_update_order_review’, ‘bbloomer_checkout_radio_choice_set_session’ );

function bbloomer_checkout_radio_choice_set_session( $posted_data ) {
parse_str( $posted_data, $output );
if ( isset( $output[‘radio_choice’] ) ){
WC()->session->set( ‘radio_chosen’, $output[‘radio_choice’] );
}
}

[/code]

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

WooCommerce: Hiển thị các lỗi Required Field (bắt buộc nhập) trong Checkout

Mời bạn xem nhiều bài hấp dẫn khác

Phương pháp SEO tăng thứ hạng của website trên Google

Tìm hiểu phương pháp chọn từ khóa chuẩn SEO

Plugin giúp bảo mật website WordPress

Tăng trust website hiệu quả bằng 100 backlink chất lượng đến từ Google

Cách chăm sóc website hiệu quả

Cách tạo nút gọi trên website WordPress

Mời bạn đọc thêm

Phương pháp SEO tăng thứ hạng của website trên Google

Tìm hiểu phương pháp chọn từ khóa chuẩn SEO

Plugin giúp bảo mật website WordPress

Tăng trust website hiệu quả bằng 100 backlink chất lượng đến từ Google

Cách chăm sóc website hiệu quả

Cách tạo nút gọi trên website WordPress