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