woocommerce_wp_text_input() WC 1.0

Виводить текстове поле на екран.

Використовується в метабоксах WooCommerce, тому для коректної роботи функції потрібні глобальні змінні $thepostidта $postінакше можна отримати PHP помилкуTrying to get property 'ID' of non-object in ...

Хуків немає.

Повертає

null. Виводить на екран HTML.

Використання

woocommerce_wp_text_input( $field );
$field
(масив) (обов’язковий)

Масив параметрів (конфігурація) поля. Приймає такі значення:

  • id (рядок) (обов’язковий)
    Значення атрибута idу тега input. Якщо не вказати, то отримаємо PHP помилку PHP Notice: Undefined index: id in ....
    Також використовується для отримання значень атрибутів valueі nameтега input, для атрибута forтега label, для додаткового css класу у контейнера у вигляді тега p.

  • label (рядок) (обов’язковий)
    Вміст тега label. При виведенні очищується функцією wp_kses_post() . Якщо не вказати, то отримаємо PHP помилку PHP Notice: Undefined index: label in ....

  • class (рядок)
    Значення атрибута classу тега input.
    Типово: short

  • placeholder (рядок)
    Значення атрибута placeholderу тега input. При виведенні очищується функцією esc_attr() .
    За замовчуванням: ”

  • style (Рядок)
    Значення атрибута styleу тега input. При виведенні очищується функцією esc_attr() .
    За замовчуванням: ”

  • wrapper_class (рядок)
    Значення атрибута classтега p(контейнер). При виведенні очищується функцією esc_attr() . Тег pтакож має статичний клас form-fieldі динамічний клас {параметр id}_field.
    За замовчуванням: значення id

  • value (рядок)
    Значення атрибута valueу тега input. При виведенні очищується функцією esc_attr() .
    За замовчуванням: значення id

  • name (рядок)
    Значення атрибута nameу тега input. При виведенні очищається функцією esc_attr() , і навіть іншими функціями, залежно від параметра data_type.
    За замовчуванням: get_post_meta( $thepostid, $field[‘id’], true )

  • type (рядок)
    Значення атрибута typeу тега input. Список можливих значень type . При виведенні очищується функцією esc_attr() .
    За замовчуванням: ‘text’

  • data_type (рядок)
    Тип даних для виведення. На основі цього параметра буде застосовано спеціальну функцію очищення. У будь-якому випадку, при виведенні дані будуть додатково оброблені функцією esc_attr() . Може бути:

    • price – значення обробиться функцією wc_format_localized_price() , а до параметра classдодається значення wc_input_price.
    • decimal – значення обробляється функцією wc_format_localized_decimal() , а до параметра classдодається значення wc_input_decimal.
    • stock – значення обробиться функцією wc_stock_amount() , а параметр classдодається значення wc_input_stock.
    • url – значення обробиться функцією esc_url() , а до параметра classдодається значення wc_input_url.

    За замовчуванням: ”

  • description (рядок)
    Опис поля. Виводиться під полем введення як

    <span class="description">значення</span>

    При виведенні очищується функцією wp_kses_post() . Опис буде показано (його буде видно), якщо не вказано параметр desc_tip.

  • desc_tip (логічний)
    Якщо вказати щось відмінне від false, то опис поле буде виведено у вигляді тултипа (значка питання, при наведенні на який буде з’являтися опис). Виводиться як

    <span class="woocommerce-help-tip" data-tip="значення description"></span>

    Типово: false

  • custom_attributes (масив)
    Довільні HTML атрибути як масиву з парами [ атрибут => значение ].

Приклади

0

#1 Виведення поля для ціни WooCommerce

Цей приклад взято для поля “Базова ціна” з коду самого плагіна WooCommerce.

woocommerce_wp_text_input(
	array(
		'id' => '_regular_price',
		'value' => $product_object->get_regular_price( 'edit' ),
		'label' => __( 'Regular price', 'woocommerce' ) . ' (' . get_woocommerce_currency_symbol() . ')',
		'data_type' => 'price',
	)
);

Отримаємо HTML:

<p class="form-field _regular_price_field ">

	<label for="_regular_price">
		Базова ціна (£)
	</label>

	<input type="text"
			class="short wc_input_price"
			style=""
			name="_regular_price"
			id="_regular_price"
			value=""
			placeholder=""
	/>

</p>

Код woocommerce_wp_text_input() WC 6.8.2

function woocommerce_wp_text_input( $field ) {
	global $thepostid, $post;

	$thepostid = empty( $thepostid )? $post->ID : $thepostid;
	$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'] = isset( $field['value'] ) ? $field['value'] : get_post_meta( $thepostid, $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 attribute handling
	$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 '<p class="form-field ' . esc_attr( $field['id'] ) . '_field ' . esc_attr( $field['wrapper_class'] ) . '">
		<label for="' . esc_attr( $field['id'] ) . '">' . wp_kses_post($field['label']). '</label>';

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

	echo '<input type="' . esc_attr( $field['type'] ) . '" class="' . esc_attr( $field['class'] ) . '" style="' . esc_attr( $field[ 'style'] ) . '" name="' . esc_attr( $field['name'] ) . '" id="' . esc_attr( $field['id'] ) . '" value="' . ( $field['value'] ) . '" placeholder="' . esc_attr( $field['placeholder'] ) . '" ' . implode('', $custom_attributes). '/>';

	if ( ! empty( $field['description'] ) && false === $field['desc_tip'] ) {
		echo '<span class="description">' . wp_kses_post($field['description']). '</span>';
	}

	echo '</p>';
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *