php - 在 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_form
和woocommerce_forms_field
钩子。
“注册”表单的图像预览,复选框位于底部。
如何在 WooCommerce 注册部分设置 Make AutomateWoo 复选框?
编辑:
在某些情况下,您可能需要将第二个 'required' 替换为 'true'...</p>
<script>
jQuery(document).ready(function($){
$('input[name="automatewoo_optin"]').prop('required', 'required');
});
</script>
解决方案
要使位于 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 文件中。测试和工作。
推荐阅读
- c++ - 如何渲染到屏幕外缓冲区
- elasticsearch - 考虑 ES 用于以下用例
- html - 添加边框后无法向我的 h1 添加边距
- excel - 如果范围在任何单元格中显示“失败”,我如何转移到工作表?
- oracle - 如何使Oracle不是由SYS而是由过程的所有者执行回调过程
- android - 如何将背景图像设置为形状?
- sql - 即使一个查询参数总是计算为假,是否也会处理行
- php - 如何在 codeigniter 中 update_batch 和 insert_batch 新条目?
- azure - Azure Functions 2 的 Azure 服务总线触发器输入/输出的共享访问签名支持
- python - 为什么此代码的 Python (NumPy) 比 MATLAB 慢 100 倍以上?