Назад к блогу

Что такое фильтр woocommerce_checkout_fields и варианты его использования – WooCommerce

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

woocommerce_checkout_fields — это хук действий в WooCommerce, который используется для отображения и изменения полей оформления заказа на странице оформления заказа. Когда этот хук срабатывает, он генерирует массив полей оформления заказа, которые используются для построения формы оформления заказа.

Этот массив включает различные поля, такие как платежные данные, данные доставки и примечания к заказу, и каждое поле представлено массивом свойств. Эти свойства включают метку поля, тип, заполнитель, значение по умолчанию, статус обязательности и многое другое.

По умолчанию поля оформления заказа отображаются в определенном порядке на странице оформления заказа. Однако вы можете изменить порядок полей, их свойства и их внешний вид, используя различные фильтры, прикрепленные к этому хуку.

Например, вы можете использовать хук woocommerce_checkout_fields для изменения порядка полей, скрытия определенных полей, добавления новых полей или изменения свойств существующих полей. Вы также можете добавить пользовательскую проверку для полей оформления заказа с помощью этого хука.

Варианты использования хука woocommerce_checkout_fields

Изменение порядка полей оформления заказа

Свойство priority определяет порядок отображения полей. Чем выше значение приоритета, тем ниже поле появляется на странице оформления заказа.

/**
 * Изменить порядок полей оформления заказа
 */
function filter_reorder_checkout_fields( $checkout_fields ) {
    $checkout_fields['billing']['billing_phone']['priority'] = 15;
    $checkout_fields['billing']['billing_email']['priority'] = 25;

    return $checkout_fields;
}
add_filter( 'woocommerce_checkout_fields', 'filter_reorder_checkout_fields', 100 );

В приведенном выше фрагменте кода полю billing_phone присвоено значение приоритета 15, а полю billing_email — значение приоритета 25. Это означает, что поле телефона появится перед полем электронной почты на странице оформления заказа.

Изменение свойств полей оформления заказа

/**
 * Установить класс и атрибут readonly для полей оформления заказа
 */
function filter_reorder_checkout_fields( $checkout_fields ) {
    // Получить объект текущего пользователя.
    $current_user = wp_get_current_user();
    // Если текущий пользователь вошел в систему, принудительно установить для поля email email текущего пользователя
    if ( $current_user->ID ) {
        $checkout_fields['billing']['billing_email']['class'][] = 'hidden-field';
        $checkout_fields['billing']['billing_email']['custom_attributes']   = [ 'readonly' => true ];
    }

    return $checkout_fields;
}
add_filter( 'woocommerce_checkout_fields', 'filter_reorder_checkout_fields', 100 );

Приведенный выше фрагмент кода проверяет, вошел ли текущий пользователь в систему, проверяя свойство ID объекта текущего пользователя. Если пользователь вошел в систему, код добавляет CSS-класс hidden-field к полю billing_email в разделе billing массива $checkout_fields. Этот класс можно использовать для скрытия поля электронной почты на странице оформления заказа, чтобы электронная почта пользователя не могла быть изменена во время оформления заказа.

Кроме того, код добавляет свойство custom_attributes к полю billing_email со значением readonly, установленным в true. Это делает поле электронной почты только для чтения, чтобы пользователь не мог изменить свою электронную почту, даже если ему удастся отобразить поле.

Категории: