Функция woocommerce_form_field() │ WC 1.0
Функция woocommerce_form_field() создает поля форм для оформления заказа или адреса на сайте, использующем WooCommerce.
Хуки, используемые в функции
woocommerce_form_field_argswoocommerce_form_field_(type)woocommerce_form_field
Возвращаемое значение
Функция возвращает строку, которая содержит HTML-код созданного поля формы.
Использование
woocommerce_form_field( $key, $args, $value );
$key(строка) — ключ поля (обязательный параметр).$args(разные) — параметры поля (обязательный параметр).$value(строка) — значение поля. По умолчанию:null.
Примеры использования
Пример 1: Добавление поля подписки на странице оформления заказа
Этот код добавляет чекбокс для подписки на рассылку после поля заметок на странице оформления заказа.
add_action( 'woocommerce_after_order_notes', 'add_subscribe_checkbox' );
add_action( 'woocommerce_checkout_update_order_meta', 'save_subscribe_field' );
// Функция для добавления нового поля
function add_subscribe_checkbox( $checkout ) {
woocommerce_form_field( 'subscribed', [
'type' => 'checkbox',
'class' => ['subscribe-field'],
'label' => __( 'Подписаться на нашу рассылку.' ),
], $checkout->get_value( 'subscribed' ) );
}
// Функция для сохранения поля
function save_subscribe_field( $order_id ) {
if( ! empty( $_POST['subscribed'] ) && $_POST['subscribed'] == 1 ) {
update_post_meta( $order_id, 'subscribed', 1 );
}
}
Пример 2: Отображение количества продаж на странице редактирования товара
Этот код добавляет поле, где отображается количество продаж товара на главной вкладке редактирования.
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_sale_fields_to_general' );
add_action( 'woocommerce_process_product_meta', 'woo_sale_fields_save' );
// Функция для отображения количества продаж
function woo_add_sale_fields_to_general() {
global $woocommerce, $post;
echo '';
}
// Функция для сохранения значения поля
function woo_sale_fields_save( $post_id ) {
if( ! empty( $_POST['total_sales'] ) ) {
update_post_meta( $post_id, 'total_sales', sanitize_text_field( $_POST['total_sales'] ) );
}
}
Код функции woocommerce_form_field()
Для удобства, вот как выглядит основная часть функции woocommerce_form_field():
function woocommerce_form_field( $key, $args, $value = null ) {
$defaults = array(
// Определяем стандартные параметры поля
'type' => 'text',
'label' => '',
'description' => '',
'placeholder' => '',
'maxlength' => false,
'minlength' => false,
'required' => false,
'autocomplete' => false,
'id' => $key,
'class' => array(),
'label_class' => array(),
'input_class' => array(),
'return' => false,
'options' => array(),
'custom_attributes' => array(),
'validate' => array(),
'default' => '',
'autofocus' => '',
'priority' => '',
'unchecked_value' => null,
'checked_value' => '1',
);
$args = wp_parse_args( $args, $defaults );
// Дальнейшая обработка и создание HTML-кода поля формы
}
Функция woocommerce_form_field() принимает параметры и создает на их основе разные типы полей форм, такие как текстовые поля, чекбоксы, селекты и т.д. Каждый тип поля имеет свои особенности, которые учитываются при создании.
Заключение
Функция woocommerce_form_field() предоставляет разработчикам мощный инструмент для создания пользовательских полей форм в WooCommerce, что помогает улучшить пользовательский опыт и настраивать оформление заказов по своему усмотрению.