Функция WOOCOMMERCE_WP_TEXT_INPUT: Примеры использования и особенности

Функция WOOCOMMERCE_WP_TEXT_INPUT

Функция woocommerce_wp_text_input() используется для отображения текстового поля ввода на странице. Эта простая функция позволяет вам добавлять текстовые поля в админку WooCommerce, например, для ввода цен, описаний и других данных.

Возвращаемое значение

Функция ничего не возвращает (null).

Использование

woocommerce_wp_text_input( $field, ?WC_Data $data );

Параметры

  • $field (массив) (обязательный) — Данные поля.
  • $data (WC_Data) (необязательный) — Данные, связанные с полем. По умолчанию равен null.

Примеры

Пример 1: Отображение поля для ввода цены

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

woocommerce_wp_text_input(
    array(
        'id'        => '_regular_price',
        'value'     => $product_object->get_regular_price('edit'),
        'label'     => __( 'Обычная цена', 'woocommerce' ) . ' (' . get_woocommerce_currency_symbol() . ')',
        'data_type' => 'price',
    )
);

HTML-код, который сгенерируется:

Как это работает

Функция woocommerce_wp_text_input создает поле ввода текста, принимая массив параметров, который вы передаете в функцию. В качестве примера, ниже чуть подробнее о переданных параметрах:

  • id — Уникальный идентификатор для поля. В примере это _regular_price.
  • value — Значение поля. Здесь мы получаем обычную цену продукта.
  • label — Текст метки для поля, который будет отображаться перед полем ввода.
  • data_type — Тип данных, который мы передаем. В нашем примере это цена.

Код функции

Вот как выглядит реализация функции woocommerce_wp_text_input в коде:


function woocommerce_wp_text_input( $field, ?WC_Data $data = null ) {
global $post;

$field['placeholder']   = isset( $field['placeholder'] ) ? $field['placeholder'] : '';
$field['class']         = isset( $field['class'] ) ? $field['class'] : 'short';
$field['style']         = isset( $field['style'] ) ? $field['style'] : '';
$field['wrapper_class'] = isset( $field['wrapper_class'] ) ? $field['wrapper_class'] : '';
$field['value']         = $field['value'] ?? OrderUtil::get_post_or_object_meta( $post, $data, $field['id'], true );
$field['name']          = isset( $field['name'] ) ? $field['name'] : $field['id'];
$field['type']          = isset( $field['type'] ) ? $field['type'] : 'text';
$field['desc_tip']      = isset( $field['desc_tip'] ) ? $field['desc_tip'] : false;
$data_type              = empty( $field['data_type'] ) ? '' : $field['data_type'];

switch ( $data_type ) {
    case 'price':
        $field['class'] .= ' wc_input_price';
        $field['value']  = wc_format_localized_price( $field['value'] );
        break;
    case 'decimal':
        $field['class'] .= ' wc_input_decimal';
        $field['value']  = wc_format_localized_decimal( $field['value'] );
        break;
    case 'stock':
        $field['class'] .= ' wc_input_stock';
        $field['value']  = wc_stock_amount( $field['value'] );
        break;
    case 'url':
        $field['class'] .= ' wc_input_url';
        $field['value']  = esc_url( $field['value'] );
        break;
    default:
        break;
}

// Обработка пользовательских атрибутов
$custom_attributes = array();

if ( ! empty( $field['custom_attributes'] ) && is_array( $field['custom_attributes'] ) ) {
    foreach ( $field['custom_attributes'] as $attribute => $value ) {
        $custom_attributes[] = esc_attr( $attribute ) . '="' . esc_attr( $value ) . '"';
    }
}

echo '

'; if ( ! empty( $field['description'] ) && false !== $field['desc_tip'] ) { echo wc_help_tip( $field['description'] ); } echo ' '; if ( ! empty( $field['description'] ) && false === $field['desc_tip'] ) { echo '' . wp_kses_post( $field['description'] ) . ''; } echo '

';

}

Заключение

Функция woocommerce_wp_text_input помогает добавить текстовые поля в администрирование WooCommerce, что удобно для настройки различных значений товара. Теперь вы знаете, как использовать и настраивать эту функцию для ваших нужд!

Leave a Reply

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