Я добавил поле 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;
}