text
select
radio
password
datetime
datetime-local
date
month
time
week
number
email
url
tel
country – раскрывающийся список стран, поддерживаемых вашим магазином, которые задаются в настройках WooCommerce.
state
По умолчанию: text
country(строка)
Используется только для типа поля state. Имя страны из настроек WooCommerce. Если поле пропущено, функция будет пытаться получить значение страны выставления счета или доставки. По умолчанию: ''
label(строк)
Метка поля По умолчанию: ''
description(строка)
Описание поля которое будет отображаться под полем ( так же поддерживаться html) По умолчанию: ''
placeholder(строка)
Текст подсказки По умолчанию: ''
maxlength(число)
Максимальное количество разрешенных символов в тексте По умолчанию: false
required(логический)
Добавляет звездочку рядом с меткой
Пример: <abbr class="required" title="required">*</abbr> По умолчанию: ''
autocomplete(строка)
Включает или отключает автозаполнение. Возможные корректные значения on или off По умолчанию: ''
id(строка)
ID поля, по умолчанию берется из значения имени поля переданного первым аргументом функции По умолчанию: $key
class(массив)
Классы для контейнера создаваемого блока По умолчанию: array()
label_class(массив)
Класс для тега По умолчанию: array()
input_class(массив)
Класс для поля По умолчанию: array()
return(логический)
Вывести или вернуть созданное поле По умолчанию: false
options(массив)
Только для типа <select> и radio.
Пример: ['' => 'Select...', 'value_1' => 'Text'] По умолчанию: array()
custom_attributes(массив)
Ассоциативный массив атрибутов для поля <input>.
Пример: ['data-value' => 'test'] По умолчанию: array()
validate(массив)
Параметр добавляет класс для обертки поля validate-{любое значение}, который будет использоваться при проверке JS, например validate-email будет проверять адреса электронной почты.
validate-email является единственным заранее определенным классом проверки.
По умолчанию: array()
default(строка)
Значение поля по умолчанию По умолчанию: ''
autofocus(логический)
Автоматическое наведение на поле формы, если полей с автофокусом много наведение произойдет на первое поле из списка По умолчанию: ''
priority(число)
Приоритет отображения поля По умолчанию: ''
Примеры
3
#1 Выведем количество заказов товара на странице редактирования товара
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_sale_fields_to_general' );
// Выведем количество продаж товара на главной вкладке редактирования товара
function woo_add_sale_fields_to_general() {
global $woocommerce, $post;
echo '<div class="options_group">';
woocommerce_form_field( 'total_sales', [
'type' => 'number',
'id' => 'total_sales',
'label' => __( 'Sales', 'woocommerce' ),
'placeholder' => '',
'description' => __( 'All product sales, your can change it', 'woocommerce' ),
'default' => get_post_meta( $post->ID, 'total_sales', true ),
'class' => ['form-field'],
'input_class' => ['short'],
] );
echo '</div>';
}
add_action( 'woocommerce_process_product_meta', 'woo_sale_fields_save' );
// Сохраним значение поля
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'] ) );
}
}
1
#2 Добавим поле подписки после примечания на странице оформления заказа
add_action( 'woocommerce_after_order_notes', 'add_subscribe_checkbox' );
// Добавим новое поле после примечания к заказу
function add_subscribe_checkbox( $checkout ) {
woocommerce_form_field( 'subscribed', [
'type' => 'checkbox',
'class' => ['subscribe-field'],
'label' => __( 'Subscribe to our newsletter.' ),
], $checkout->get_value( 'subscribed' ) );
}
add_action( 'woocommerce_checkout_update_order_meta', 'save_subscribe_field' );
// сохраним поле
function save_subscribe_field( $order_id ) {
if( ! empty( $_POST['subscribed'] ) && $_POST['subscribed'] == 1 ) {
update_post_meta( $order_id, 'subscribed', 1 );
}
}
Код woocommerce_form_field() woocommerce form field WC 8.6.1