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

WooCommerce注册表单自定义隐私复选框验证错误提示不显示问题

WooCommerce注册表单隐私复选框错误提示不显示的解决思路

问题背景

在WooCommerce中通过自定义PHP代码添加了注册表单的隐私政策复选框,验证逻辑生效(未勾选无法完成注册),但未勾选时错误提示文本无法在页面显示。

解决步骤

1. 补全验证函数的钩子参数

woocommerce_registration_errors钩子本身包含3个参数,原验证函数仅接收$errors,补全参数可确保函数在正确上下文执行,同时给错误提示添加WooCommerce标准格式标签,适配主题样式:

add_filter( 'woocommerce_registration_errors', 'privacy_checkbox_registration_validation', 10, 3 );
function privacy_checkbox_registration_validation( $errors, $username, $email ) {
    if( is_checkout() ) {
        return $errors;
    }

    if ( empty( $_POST[ 'privacy_policy' ] ) ) {
        $errors->add( 'privacy_policy_reg_error', '<strong>Ошибка</strong>: Вам нужно принять политику конфиденциальности.', 'error' );
    }

    return $errors;
}

2. 手动在表单区域输出错误提示

部分主题会修改WooCommerce默认的错误输出位置,可在注册表单钩子中添加错误打印代码,确保错误在表单区域显示:

add_action( 'woocommerce_register_form', 'add_privacy_checkbox_registration' );
function add_privacy_checkbox_registration() {
    // 优先输出错误提示
    if ( wc_get_notices( 'error' ) ) {
        wc_print_notices();
    }

    $checkbox_text = sprintf( '%s <a href="%s"><strong>%s</strong></a>', __( 'Я прочитал и согласен с' ), 
    esc_url( site_url('/politic-conf/') ), __( 'политикой конфиденциальности' ) );
    ?>
    <div class="woocommerce-privacy-policy-wrapper">
        <p class="form-row validate-required">
            <label class="woocommerce-form__label woocommerce-form__label-for-checkbox checkbox">
            <input type="checkbox" class="woocommerce-form__input woocommerce-form__input-checkbox input-checkbox" name="privacy_policy" <?php checked( false, true ); ?> id="privacy-policy" />
                <span class="woocommerce-privacy-policy-checkbox-text"><?php echo $checkbox_text; ?></span>&nbsp;<abbr class="required" title="<?php esc_attr_e( 'required', 'woocommerce' ); ?>">*</abbr>
            </label>
            <input type="hidden" name="policy-field" value="1" />
        </p>
    </div>
    <?php
}

wc_print_notices()会自动输出WooCommerce所有错误提示,确保内容能在表单区域展示。

3. 检查主题CSS样式

若以上操作后仍无显示,检查主题CSS是否对.woocommerce-error类元素设置了display: none或visibility: hidden规则,调整样式确保错误提示可见。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 20:35:08