我在WooCommerce结帐页面上添加了具有以下添加功能的“重复电子邮件地址”字段:
// EMAIL Confirmation on CHECKOUT PAGE
add_filter( 'woocommerce_checkout_fields' , 'email_verification_field_checkout' );
function email_verification_field_checkout( $fields ) {
$fields['billing']['billing_email']['class'] = array('form-row-first');
$fields['billing']['billing_email_verification'] = array(
'label' => __('Repeat Email Adress', 'woocommerce'),
'required' => true,
'class' => array('form-row-last'),
'clear' => true,
'priority' => 999,
);
return $fields;
}
// CHECK IF THE TWO EMAILS MATCH !!!
add_action('woocommerce_checkout_process', 'mycheck_email_addresses');
function mycheck_email_addresses() {
$email1 = $_POST['billing_email'];
$email2 = $_POST['billing_email_verification'];
if ( $email2 !== $email1 ) {
wc_add_notice( __( 'Your email addresses don't match!', 'woocommerce' ), 'error' );
}
}
回头客可以在页面顶部登录。 然后,WooCommerce获取已提交的“ billing_email”地址的电子邮件地址。
1)有没有一种方法可以对添加的“ billing_email_verification”字段执行相同的功能?
2)对于退货客户在结帐页面顶部登录的情况,我尝试使用添加功能:在这种情况下,我希望隐藏“重复电子邮件地址”字段,以获得更好的客户体验。但是不幸的是那没有用。我刚开始了解过滤器和挂钩,希望能有帮助:)
add_filter( 'woocommerce_checkout_fields' , 'my_override_checkout_fields' );
function my_override_checkout_fields( $fields ) {
if( is_user_logged_in() ){
unset($fields['billing']);
$fields['billing_email_verification'] = array();
}
return $fields;
}
答案 0 :(得分:0)
我在情况2的解决方案中发现了错误) 这是案例2)的正确过滤器
add_filter( 'woocommerce_checkout_fields' , 'my_override_checkout_fields' );
function my_override_checkout_fields( $fields ) {
if( is_user_logged_in() ){
unset($fields['billing']['billing_email_verification']);
}
return $fields;
}
无论如何,我很想学习如何处理案例1)使用get_value的方法 有人知道该怎么做吗?