php - 验证 WooCommerce 结帐页面中的附加复选框字段
问题描述
我在结帐页面的条款和条件字段下方添加了一个接受字段。新字段是关于年龄验证的。
在前端,我可以看到我的复选框,但如果未选中此复选框,客户应该无法订购。这是生成的html代码:
<?php if ( wc_terms_and_conditions_checkbox_enabled() ) : ?>
<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="terms" <?php checked( apply_filters( 'woocommerce_terms_is_checked_default', isset( $_POST['terms'] ) ), true ); // WPCS: input var ok, csrf ok. ?> id="terms" />
<span class="woocommerce-terms-and-conditions-checkbox-text"><?php wc_terms_and_conditions_checkbox_text(); ?></span> <span class="required">*</span>
</label>
<input type="hidden" name="terms-field" value="1" />
</p>
<?php endif; ?>
<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" required name="validationage" id="validationage" />
<span class="woocommerce-terms-and-conditions-checkbox-text"><?php _e( 'Je certifie avoir + de 18 ans', 'woocommerce'); ?></span> <span class="required">*</span>
</label>
</p>
如何启用此复选框的验证?
解决方案
以下将处理结帐页面上的自定义复选框字段验证:
add_action('woocommerce_checkout_process', 'custom_checkbox_checkout_validation');
function custom_checkbox_checkout_validation() {
$field_id = 'validationage';
if( ! isset( $_POST[$field_id] ) || empty( $_POST[$field_id] ) )
wc_add_notice( __("validation text.","woocommerce"), "error" );
}
代码在您的活动子主题(或活动主题)的functions.php 文件中。它应该有效。
推荐阅读
- sonarqube - sonarqube 中的 sonar.sources 和 sonar.tests 之间的区别
- django - 如何在字段定义之外的 Django imagekit 中指定图像规格?
- zend-framework3 - ZF3 路由语言环境参数
- angular - Ngbootstrap 不显示模态窗口
- python - 无法从字典python中提取值
- react-native - 对选项卡反应本机路由器通量身份验证流程,如在未授权的情况下显示帐户选项卡和在授权的情况下显示配置文件选项卡
- ios - Swift Core Data 多对多关系处理,codegen 为 Manual/None
- reactjs - React.JS:ReferenceError:未定义要求
- node.js - 带有用于 nodejs 的 mongodb 驱动程序的空集合
- c - C中的数组String和普通数组有什么区别?