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

Woocommerce结账页条件必填复选框未显示时仍触发未勾选错误

WooCommerce 结账自定义复选框校验问题修复

修改逻辑

原有代码的校验逻辑未关联购物车商品判断,导致指定商品不在购物车时仍会触发复选框必填校验,仅需要在校验函数中新增商品存在判断即可。

修正后完整代码

/* 购物车内存在PDU订阅商品时在结账页添加自定义复选框 */
add_action( 'woocommerce_review_order_before_submit', 'wordimpress_custom_checkout_field', 10 );
function wordimpress_custom_checkout_field( $checkout ) {
    // 判断指定ID的商品是否在购物车,此处ID可替换为你需要的商品ID
    $book_in_cart = wordimpress_is_conditional_product_in_cart( 161042 );
    // 商品存在时渲染复选框
    if ( $book_in_cart === true ) {
        woocommerce_form_field( 'checkout_checkbox', array(
               'type'          => 'checkbox',
               'class'         => array('form-row mycheckbox'),
               'label_class'   => array('woocommerce-form__label woocommerce-form__label-for-checkbox checkbox'),
               'input_class'   => array('woocommerce-form__input woocommerce-form__input-checkbox input-checkbox'),
               'required'      => true,
               'label'         => '我已阅读并同意 <a href="#" target="_blank" rel="noopener">订阅条款</a>',
            ));    
    }
}

add_action( 'woocommerce_checkout_process', 'bt_add_subscription_checkbox_warning' ); 
// 复选框未勾选时抛出错误提示
function bt_add_subscription_checkbox_warning() {
    // 先判断指定商品是否在购物车,存在才执行校验
    $book_in_cart = wordimpress_is_conditional_product_in_cart( 161042 );
    if ( $book_in_cart && empty( $_POST['checkout_checkbox'] ) ) {
        wc_add_notice( __( '你必须阅读并同意订阅条款才能开通月度订阅。' ), 'error' );
    }
}

// 判断指定ID的商品是否在购物车
function wordimpress_is_conditional_product_in_cart( $product_id ) {
    global $woocommerce;
    $book_in_cart = false;
    foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
        $_product = $values['data'];
        if ( $_product->id === $product_id ) {
            $book_in_cart = true;
        }
    }
    return $book_in_cart;
}

核心修改点

  • 在bt_add_subscription_checkbox_warning函数中新增了购物车商品判断逻辑,仅当ID为161042的商品在购物车时,才会校验自定义复选框是否勾选
  • 优化了原有校验逻辑的判断写法,避免类型转换的冗余代码
  • 翻译了前端展示的提示文本为中文,可根据需求自行调整内容

内容的提问来源于stack exchange,提问作者J.K.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:03:01