Назад к блогу

Как автоматически заполнить поле "Электронная почта для выставления счета" на странице оформления заказа WooCommerce с помощью фильтра woocommerce_checkout_get_value

2023-03-122 минуты чтения

Фильтр woocommerce_checkout_get_value предоставляется плагином WooCommerce для WordPress. Этот фильтр позволяет изменять значение поля оформления заказа перед его отображением пользователю в процессе оформления заказа.

Фильтр woocommerce_checkout_get_value принимает два параметра:

  1. $value (mixed): Текущее значение поля оформления заказа.
  2. $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.