Для возврата клиента Скрыть или получить электронную почту для добавления «Повторите адрес электронной почты» на странице оформления заказа WooCommerce - PullRequest
1 голос
/ 08 марта 2019

Я добавил поле Repeat Email Address на странице оформления заказа 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 голосов
/ 11 марта 2019

Я нашел ошибку в решении для случая 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 Кто-нибудь знает, как это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...