Функция WC_DROPDOWN_VARIATION_ATTRIBUTE_OPTIONS() в WooCommerce: Руководство по использованию

Функция WC_DROPDOWN_VARIATION_ATTRIBUTE_OPTIONS() в WooCommerce

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

Хуки функции

Эта функция использует несколько хуков, которые могут быть полезны для вашей разработки:

  • woocommerce_dropdown_variation_attribute_options_args
  • woocommerce_variation_option_name
  • woocommerce_dropdown_variation_attribute_options_html

Возврат

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

Шаблон использования

Вот пример HTML-кода формы, в которую можно вставить вызов этой функции:

$options, 'attribute' => $attribute_name, 'product' => $product, 'selected' => $selected ]); ?>

Использование функции

Функция вызывается следующим образом:

wc_dropdown_variation_attribute_options($args);

Параметры функции

Эта функция принимает массив параметров. Возможные ключи массива:

  • options (массив): Массив с произвольными вариантами. Значение по умолчанию: false
  • attribute (строка): Название атрибута, для которого вы хотите сгенерировать варианты. Значение по умолчанию: false
  • product (объект): Объект продукта WooCommerce. Значение по умолчанию: false
  • selected (строка): Выбранный вариант. Значение по умолчанию: false
  • name (строка): Название атрибута таксономии. Значение по умолчанию: ''
  • id (строка): Значение для атрибута id тега select. Значение по умолчанию: ''
  • class (строка): Значение для атрибута class тега select. Значение по умолчанию: ''
  • show_option_none (строка): Текст для отображения, если нет выбранного варианта. Значение по умолчанию: __('Выберите вариант', 'woocommerce')

Пример

$args = array(
    'options'   => $options,
    'attribute' => $attribute_name,
    'product'   => $product,
    'selected'  => $selected,
);
wc_dropdown_variation_attribute_options($args);

Упрощенная версия шаблона

Вот упрощенный вариант кода формы, который показывает, как можно использовать данную функцию в вашем шаблоне:

$options) : ?>
get_variation_default_attribute($attribute_name); wc_dropdown_variation_attribute_options(array( 'options' => $options, 'attribute' => $attribute_name, 'product' => $product, 'selected' => $selected, )); ?>

Изменения

  • С версии 2.4.0: Функция была добавлена.

Код функции

Вот код самой функции wc_dropdown_variation_attribute_options, которая находится в файле woocommerce/includes/wc-template-functions.php:

function wc_dropdown_variation_attribute_options($args = array()) {
    $args = wp_parse_args(
        apply_filters('woocommerce_dropdown_variation_attribute_options_args', $args),
        array(
            'options'          => false,
            'attribute'        => false,
            'product'          => false,
            'selected'         => false,
            'required'         => false,
            'name'             => '',
            'id'               => '',
            'class'            => '',
            'show_option_none' => __('Выберите вариант', 'woocommerce'),
        )
    );

    // Получаем выбранное значение.
    if (false === $args['selected'] && $args['attribute'] && $args['product'] instanceof WC_Product) {
        $selected_key = 'attribute_' . sanitize_title($args['attribute']);
        $args['selected'] = isset($_REQUEST[$selected_key]) ? wc_clean(wp_unslash($_REQUEST[$selected_key])) : $args['product']->get_variation_default_attribute($args['attribute']);
    }

    // Обработка вариантов и атрибутов.
    $options    = $args['options'];
    $product    = $args['product'];
    $attribute  = $args['attribute'];
    $name       = $args['name'] ? $args['name'] : 'attribute_' . sanitize_title($attribute);
    $id         = $args['id'] ? $args['id'] : sanitize_title($attribute);
    $class      = $args['class'];
    $required   = (bool)$args['required'];
    $show_option_none = (bool)$args['show_option_none'];
    $show_option_none_text = $args['show_option_none'] ? $args['show_option_none'] : __('Выберите вариант', 'woocommerce');

    if (empty($options) && !empty($product) && !empty($attribute)) {
        $attributes = $product->get_variation_attributes();
        $options    = $attributes[$attribute];
    }

    $html = '';

    echo apply_filters('woocommerce_dropdown_variation_attribute_options_html', $html, $args);
}

Теперь у вас есть полное представление о том, как использовать функцию WC_DROPDOWN_VARIATION_ATTRIBUTE_OPTIONS() в WooCommerce. Это поможет вам создавать более удобные формы для выбора вариантов продуктов на вашем сайте.

Leave a Reply

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