Woocommerce 结帐中的电子邮件字段比较验证
Posted
技术标签:
【中文标题】Woocommerce 结帐中的电子邮件字段比较验证【英文标题】:Email fields comparison validation in Woocommerce checkout 【发布时间】:2019-04-21 00:52:51 【问题描述】:我有一个名为 gift
的自定义字段,我现在正尝试根据 billing_email
字段验证它。也就是说,如果客户填写的赠品字段和账单邮件是同一封邮件,点击“完成订单”按钮时应该会报错。
它不起作用。任何想法为什么?这是代码。
// verify that billing email and gift email are not the same
function billing_email_and_gift_validation( $posted )
$checkout = WC()->checkout;
if ( strcmp( $posted['billing_email'] == $posted['gift'] ))
wc_add_notice( __( 'To send as gift, you cannot send it to yourself. That\'s the point of a gift, is it not?', 'woocommerce' ), 'error' );
add_action( 'woocommerce_after_checkout_validation', 'billing_email_and_gift_validation', 10, 2 );
如果有人可以提供帮助,谢谢大家。
【问题讨论】:
【参考方案1】:我已将此验证与您之前制作的此问题代码中的礼物验证合并,因此您将从您的实际代码中删除它,因为此函数同时处理它们:
add_action('woocommerce_after_checkout_validation', 'gift_custom_field_validation', 20, 2 );
function gift_custom_field_validation( $data, $errors )
// Validating that "Gift" is not empty when selected
if( isset($_POST['gift_msg']) && isset($_POST['gift']) && empty($_POST['gift']) )
$errors->add( 'gift', __( "You've chosen to send this as a gift, but did not submit a recipient email address.", "woocommerce" ) );
// Validating that "Gift" imputed email is different from billing email
if ( isset($_POST['gift']) && $data['billing_email'] === $_POST['gift'] )
$errors->add( 'gift', __( "To send as gift, you cannot send it to yourself. That's the point of a gift, isn't it?", "woocommerce" ) );
代码进入您的活动子主题(活动主题)的 function.php 文件中。经过测试并且可以工作。
【讨论】:
以上是关于Woocommerce 结帐中的电子邮件字段比较验证的主要内容,如果未能解决你的问题,请参考以下文章
WooCommerce 的 MailChimp:在结帐字段中间添加复选框
php [使用操作和过滤器自定义结帐字段]向电子邮件添加自定义WooCommerce结帐字段
自定义 WooCommerce 日期选择器结帐字段已保存并显示在订单和电子邮件中