用于返回客户隐藏或获取电子邮件,以在WooCommerce结帐页面上添加“重复电子邮件地址”

时间:2019-03-08 09:37:31

标签: php wordpress 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;
}

1 个答案:

答案 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的方法 有人知道该怎么做吗?