Функция 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, что удобно для настройки различных значений товара. Теперь вы знаете, как использовать и настраивать эту функцию для ваших нужд!