/ Сайтостроение / Плагины / Атрибуты товара WC

Атрибуты товара WC

HIT

19.10.2016

4282

10

В интернет-магазине Woocommerce есть функционал атрибутов. Атрибуты товара — это дополнительные поля для различных значений. Атрибуты бывают 2-х типов: текстовый (text) и с выбором значения (select).

Архив значения атрибута

Для значений атрибутов можно задать архив, в котором будут выводится все товары с таким значением данного атрибута.
Вставляем функцию в functions.php

add_action( 'woocommerce_product_meta_end', 'cj_show_attribute_links' );

function cj_show_attribute_links() {
global $post;
$attribute_names = array( 'pa_atributtovara', 'pa_svojstvo-tovara' );

foreach ( $attribute_names as $attribute_name ) {

$taxonomy = get_taxonomy( $attribute_name );

if ( $taxonomy && ! is_wp_error( $taxonomy ) ) {
$terms = wp_get_post_terms( $post->ID, $attribute_name );
$terms_array = array();
if ( ! empty( $terms ) ) {
foreach ( $terms as $term ) {
$archive_link = get_term_link( $term->slug, $attribute_name );
$full_line = '<a href="' . $archive_link . '">'. $term->name . '</a>';
array_push( $terms_array, $full_line );
}
echo '<span class="attribute">' . $taxonomy->labels->name . ' ' . implode( $terms_array, ', ' ). '</span>';
}
}
}
}

Необходимые к выводу атрибуты прописываем с префиксом pa_ (в функции выделено жирным)

Данная функция делает так, что атрибут с значением появляется в карточке товара под кнопкой «Добавить в корзину» на манер категорий и меток. Значение является ссылкой на архив.

При желании можно сделать, чтоб все атрибуты выводились автоматически: надо внедрить в функцию $product->get_attributes();

Если мы хотим вывести миниатюру (термина) атрибута (если атрибут например бренд — логотип), то после строки

echo '<span class="attribute">' . $taxonomy->labels->name . ' ' . implode( $terms_array, ', ' ). '</span>';

надо добавить

echo wp_get_attachment_image( $term->term_image, 'full' );

Значения атрибута в пункте меню

Чтобы добавить возможность выводить ссылки на архивы значений атрибутов в меню — добавляем следующий код:

add_filter('woocommerce_attribute_show_in_nav_menus', 'wc_reg_for_menus', 1, 2);

function wc_reg_for_menus( $register, $name = '' ) {
     if ( $name == 'pa_atributtovara' ) $register = true;
     return $register;
}

pa_atributtovara — Атрибут, значения которого можно выводить в меню.

Отключить определенный атрибут

Если нам необходимо отключить вывод конкретного атрибута, делаем это так:

function the_remove_attributes( $attributes ) {

  unset( $attributes['pa_brend'] );
  unset( $attributes['oborudovanie'] );
  unset( $attributes['shtrihkod'] );

    return $attributes;
}
add_filter( 'woocommerce_get_product_attributes', 'the_remove_attributes' );

Атрибуты товара во вкладке Дополнительная информация

Для того чтобы атрибут и значение попадали во вкладку Дополнительная информация необходимо при выборе атрибута включать checkbox Отображение на странице товаров.

При массовом добавлении значений атрибута это также можно сделать: в меню Bulk Edit в строке после выбора значения есть падающий список (нужно выбрать and set) и поставить галку в чекбоксе Visible on p. p.

Проверка — есть ли атрибут

Сделаем простую проверку — заполнен ли у данного товара определенный атрибут или нет

<?php $protect = wp_get_object_terms($post->ID, 'pa_tolshhina'); 

if( ( $protect[0]->name ) ) {
echo 'Атрибут есть';
} else {
echo 'Атрибута нет';	
}

?>

Данный код будет работать в шаблоне товара (content-single-product.php), если необходимо вызывать в другом месте — нужно подключать глобальную переменную global $post.

И еще про выводы атрибутов от WP_Panda:

Вот так выводить один атрибут без пустых терминов

$tax = 'pa_заданный_вами_слаг_атрибута'
$pa_args = get_terms( $tax, array(
      'hide_empty' => false,
    )
 );

Вывести все атрибуты без пустых терминов

$pa_args = array();
    $attribute_taxonomies = wc_get_attribute_taxonomies();
    if ( 0 !== count( $attribute_taxonomies ) ) {
        foreach ( $attribute_taxonomies as $one_tax ) {
            $pa_args[] = get_terms( $one_tax, array(
                    'hide_empty' => false,
                ) );
        }
    }

Тэги: ,

Поделится информацией с друзьями

  • Похожие записи
  • Комментарии
  • Вложения
Виртуальный и Скачиваемый товар

Виртуальный и Скачиваемый товар

В интернет-магазине Woocommerce можно создавать Виртуальный и Скачиваемый товары. Разберемся как это выглядит и работает. Виртуальный товар Данная опция не меняет структуру товара. Если при оформлении в корзине только виртуальные Читать далее »

Настройка доставки

Настройка доставки

Настройка доставки в woocommerce 2.6 кардинальным образом изменилась. Стала более гибкой, но и более сложной в настройке. Разберемся в тонкостях настройки доставки. Зоны доставки Зоны доставки — это определенная территория Читать далее »

/
Акции Woocommerce

Акции Woocommerce

В современном интернет-магазине необходимо постоянно проводить стимулирующие мероприятия — акции. Реализуем различные механизмы акций на движке Woocommerce. Акция (скидка) на категорию Если нам необходимо сделать скидку на всю категорию товаров. Читать далее »

Добавить комментарий

10 комментариев

  1. Torcedor

    Здравствуйте!Как выровнять расположение сетки миниатюр товара на странице товара вровень с главной фотографией?Чтоб не было отступов ни слева ни справа. То-есть чтоб вторичные фото под главной картинкой располагались по ширине главной.

    1. Alexandr
      Alexandr

      Самый простой и быстрый способ — задать списку миниатюр CSS свойства:
      ol.flex-control-nav.flex-control-thumbs {
      display: flex;
      justify-content: space-between;
      }

      1. Torcedor

        Скажите пожалуйста, а куда это прописать?
        В css темы попробовал — не сработало.

        1. Alexandr
          Alexandr

          Я думаю, что родные стили WC перебивают. Попробуйте проставить стилям свойство !important. И еще важно, чтобы версия WC была как минимум 3.0, т.к. с этой версии существенно переработались стили. А я предлагаю решение именно для последней версии.

          1. Torcedor

            У меня версия 2.6.14, откатился назад до этой версии после обновления, так как не понравилась новая галерея и перевод весь слетел.
            ol.flex-control-nav.flex-control-thumbs {
            display: flex !important; 
            justify-content: space-between !important;
             
            }
             
            Не помогло, к сожалению…

          2. Alexandr
            Alexandr

            Конечно в той версии другие стили. Посмотрите какие классы формируют список миниатюр и примените к нему стили которые я предложил. Или еще проще, сделайте как Вам нужно через Инструменты разработчика и перенесите стили в тему.

  2. Torcedor

     Я не знаю как это сделать, может Вы подскажете?
    Вот пример страницы https://glamface.ru/shop/brands/shik-brands/stojka-podstavka-dlya-xraneniya-i-sushki-kistej-dlya-makiyazha-shik/

    1. Alexandr
      Alexandr

      Я попробовал сделать по простому (через Инструменты разработчика Google Chrome — почитайте об этом инструменте браузера), но начинает лезть верстка.. Нужно смотреть верстку и стили более глубоко. У меня, к сожалению, нет на это времени.

  3. Дмитрий

    Можно ли вывести атрибуты для простого товара в woocommerce?
    Добрый день! Дело в том, что есть товар, у которого есть 35 разных размеров, но все по одной цене. Есть ли возможность выводить атрибут размера, не переводя товар в вариативный (где как раз для всех 35 приходится вписывать одну и туже цену).
    Спасибо.

    1. Alexandr
      Alexandr

      Вам не нужно создавать вариативный товар. Просто назначайте товару атрибуты, без галки «используется для вариаций». Атрибуты по умолчанию в woocommerce будут выводиться во вкладке «Дополнительная информация», но можно вывести где-угодно (описано в статье выше).

Атрибуты товара WC
Типовые поля форм
Рекомендации для васТиповые поля формOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.