首页 > 解决方案 > 对于返回客户隐藏或获取电子邮件以在 WooCommerce 结帐页面上添加“重复电子邮件地址”

问题描述

我在 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;
}

标签: phpwordpresswoocommerce

解决方案


我在案例 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;
}

无论如何,我很想了解如何使用 get_value 处理案例 1) 有人知道该怎么做吗?


推荐阅读