WooCommerce_form_field(): Создание полей форм и адресов │ WC 1.0

Функция woocommerce_form_field() │ WC 1.0

Функция woocommerce_form_field() создает поля форм для оформления заказа или адреса на сайте, использующем WooCommerce.

Хуки, используемые в функции

  • woocommerce_form_field_args
  • woocommerce_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 '
'; woocommerce_form_field( 'total_sales', [ 'type' => 'number', 'id' => 'total_sales', 'label' => __( 'Продажи', 'woocommerce' ), 'description' => __( 'Все продажи товара, вы можете изменить это значение', 'woocommerce' ), 'default' => get_post_meta( $post->ID, 'total_sales', true ), 'class' => ['form-field'], 'input_class' => ['short'], ] ); 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, что помогает улучшить пользовательский опыт и настраивать оформление заказов по своему усмотрению.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *