Как автоматически заполнить поле "Электронная почта для выставления счета" на странице оформления заказа WooCommerce с помощью фильтра woocommerce_checkout_get_value
Фильтр woocommerce_checkout_get_value предоставляется плагином WooCommerce для WordPress. Этот фильтр позволяет изменять значение поля оформления заказа перед его отображением пользователю в процессе оформления заказа.
Фильтр woocommerce_checkout_get_value принимает два параметра:
- $value (mixed): Текущее значение поля оформления заказа.
- $input (string): Название поля оформления заказа.
/**
* Фильтр для изменения значений полей оформления заказа.
* @param $value
* @param $input
* @return mixed|string
*/
function filter_woocommerce_checkout_get_value( $value, $input ) {
// если поле — это поле электронной почты для выставления счета
if ( 'billing_email' === $input ) {
$current_user = wp_get_current_user();
// если текущий пользователь вошел в систему, принудительно установить электронную почту как электронную почту текущего пользователя
if ( $current_user->ID ) {
// получить электронную почту пользователя
$value = $current_user->user_email;
}
}
return $value;
}
add_filter( 'woocommerce_checkout_get_value', 'filter_woocommerce_checkout_get_value', 10, 2 );
В приведенном выше фрагменте кода мы проверяем, является ли текущее поле оформления заказа полем «billing_email». Если это так, функция получает адрес электронной почты текущего вошедшего в систему пользователя и устанавливает его в качестве значения поля «billing_email». Для гостевых пользователей процесс остается прежним, позволяя им вводить поле электронной почты для выставления счета.
Это делается для того, чтобы адрес электронной почты пользователя был правильно связан с заказом. Если вы хотите скрыть поле выставления счета и/или сделать его доступным только для чтения, вы можете ознакомиться с этим постом, где я объясняю, как это сделать с помощью фильтра woocommerce_checkout_fields.