You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Woocommerce结账页仅当选择BACS支付时验证自定义复选框?

解决WooCommerce结账页仅BACS支付时验证自定义复选框的问题

原代码问题分析

原代码的核心错误在于条件判断的逻辑结构错误:

  • isset( $_POST['my_checkbox'] && $chosen_payment_method == 'bacs' ) 写法违规,isset()仅能检测变量是否存在,不能直接嵌套复合条件
  • 逻辑顺序颠倒,应该先判断支付方式是否为BACS,再检查复选框是否未勾选

修正后的代码

add_action( 'woocommerce_checkout_process', 'add_checkout_checkbox_warning' );
function add_checkout_checkbox_warning() {
    // 获取选中的支付方式
    $chosen_payment_method = WC()->session->get( 'chosen_payment_method' );
    
    // 仅当选择BACS支付,且复选框未勾选时触发错误提示
    if ( $chosen_payment_method === 'bacs' && !isset( $_POST['my_checkbox'] ) ) {
        wc_add_notice( __( '请勾选该复选框。' ), 'error' );
    }
}

额外注意事项

  • 确保自定义复选框的name属性确实为my_checkbox,与代码中的字段名完全匹配
  • 若结账页面支持AJAX切换支付方式,需添加以下JS代码同步更新会话中的支付方式(适配动态切换场景):
jQuery( function( $ ) {
    $( 'form.checkout' ).on( 'change', 'input[name="payment_method"]', function() {
        $( document.body ).trigger( 'update_checkout' );
    });
});

内容的提问来源于stack exchange,提问作者user11352669

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 00:35:20