首页 > 解决方案 > 在 WooCommerce 注册上需要 AutomateWoo 复选框

问题描述

AutomateWoo 插件在注册部分(用户未登录时位于“我的帐户”页面上)添加了一个复选框字段,我正在尝试将其设为必需。

我不希望人们在不勾选此框的情况下进行注册。

该框是一个选项,显示如下:

<p class="automatewoo-optin form-row">
    <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="automatewoo_optin" id="automatewoo_optin">
        <span class="automatewoo-optin__checkbox-text">I want to receive updates about products and promotions.</span>
    </label>
</p>

这是我的代码尝试使此复选框“必需”:

add_filter( 'woocommerce_register_form_start', 'bd_require_automatewoo_optin');
function bd_require_automatewoo_optin( $fields ) {
$fields['automatewoo_optin']['required'] = true;
return $fields;
}

我也尝试过使用woocommerce_register_formwoocommerce_forms_field钩子。

“注册”表单的图像预览,复选框位于底部。

添加到注册表底部的复选框,必须是必需的。

如何在 WooCommerce 注册部分设置 Make AutomateWoo 复选框?


编辑:

在某些情况下,您可能需要将第二个 'required' 替换为 'true'...</p>

<script>
jQuery(document).ready(function($){
   $('input[name="automatewoo_optin"]').prop('required', 'required');
});
</script>

标签: phpjquerywordpresswoocommerceregistration

解决方案


要使位于 WooCommerce 注册表单上的复选框字段成为必需,请使用以下命令:

// Validate WooCommerce registration form custom fields.
add_action( 'woocommerce_register_post', 'wc_validate_automatewoo_optin_fields', 10, 3 );
function wc_validate_automatewoo_optin_fields( $username, $email, $validation_errors ) {
    if ( ! isset($_POST['automatewoo_optin']) || empty($_POST['automatewoo_optin']) ) {
        $validation_errors->add('optin_error', __('The Checkbox is a required field', 'woocommerce') );
    }
        
    return $validation_errors;
}

然后可以选择使用以下内容来使您的复选框字段在视觉上是必需的:

// Mark the checkbox field as required
add_filter( 'woocommerce_register_form_end', 'add_automatewoo_optin_jquery');
function add_automatewoo_optin_jquery() {
    ?>
    <script>
    (function($){
       $('p.automatewoo-optin').addClass('validate-required');
       $('p.automatewoo-optin > label > span').append('<abbr class="required" title="required">*</abbr>');
    })(jQuery);
    </script>
    <?php
}

代码位于活动子主题(或活动主题)的 functions.php 文件中。测试和工作。


推荐阅读