我目前正在我的 WordPress 主题中开发 WooCommerce 注册页面,并添加了一个钩子供用户接受条款和条件 -请参阅添加的 PHP 代码。
HTML5为输入字段提供了一个超级有用的功能,就是在标签中添加“必填”,新浏览器会自动提示警告。我已经设法对所有其他输入字段执行此操作,但我无法修改此特定 PHP 数组以输出<input>
标签与'required'
属性。
HTML 输出需要如下所示:
<input required type="checkbox" class="input-checkbox woocommerce-form__input woocommerce-form__input-checkbox input-checkbox" name="privacy_policy_reg" id="privacy_policy_reg" value="1">
然而,目前基于以下 PHP 代码生成的输出是:
<input type="checkbox" class="input-checkbox woocommerce-form__input woocommerce-form__input-checkbox input-checkbox" name="privacy_policy_reg" id="privacy_policy_reg" value="1">
注意:该钩子已经有 PHP 验证检查,但只有在按下注册按钮后才会进行,而 HTML5 检查会立即生效。尽管如此,我想保留 PHP 验证检查,以防浏览器无法读取 HTML5 检查。
谁能帮助我如何修改 PHP 数组代码以使标签包含“required”属性?
我非常感谢任何帮助!
最好的,
大卫
// CREATE CHECKBOX AND LABEL
add_action( 'woocommerce_register_form', 'bbloomer_add_registration_privacy_policy', 11 );
function bbloomer_add_registration_privacy_policy() {
woocommerce_form_field( 'privacy_policy_reg', array(
'type' => 'checkbox',
'class' => array('form-row privacy'),
'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' => 'I\'ve read and accept the <a href="/privacy-policy">Privacy Policy</a>',
));
}
// SHOW ERROR AFTER CLICKING SUBMIT BUTTON IF USER HAS NOT CHECKED CHECKBOX
add_filter( 'woocommerce_registration_errors', 'bbloomer_validate_privacy_registration', 10, 3 );
function bbloomer_validate_privacy_registration( $errors, $username, $email ) {
if ( ! is_checkout() ) {
if ( ! (int) isset( $_POST['privacy_policy_reg'] ) ) {
$errors->add( 'privacy_policy_reg_error', __( 'Privacy Policy consent is required!', 'woocommerce' ) );
}
}
return $errors;
}
UPDATE
- 根据这里的其他问题:添加产品时,如何在 woocommerce 产品页面中设置自定义字段值(强制) https://stackoverflow.com/questions/23821420/how-can-i-make-custom-field-value-required-compulsory-in-woocommerce-product我已经(不成功)尝试过:
'custom_attributes' => array( 'required' => 'required' ),
- 根据建议,我已经尝试过:
required => "required"
required => "required"