Для возврата клиенту Скрыть или получить электронное письмо за добавленный «Повторный адрес электронной почты» на странице оформления заказа WooCommerce

#php #wordpress #woocommerce

#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. Документы. woocommerce.com/document/…

Ответ №1:

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

Комментарии:

1. К сожалению, я получаю сообщение об ошибке, что два адреса электронной почты не совпадают (см. Код в верхней части страницы), поэтому я должен установить / get_value для billing_email_verification = billing_email… как мне это сделать?