• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!

Решено Добавить значение атрибута в карточку товара в каталоге

Image CMS

Ollti

Форумчанин
#1
Подскажите пожалуйста, как добавить добавить в карточку товара в каталоге помимо стандартных (фото, название, цена, рейтинг) произвольный атрибут товара. В моём случае тип товара (кроссовки, кеды итд).
Атрибут shoe_type, нужно вывести его значение.
В идеале ещё атрибут shoe_size - вывести все доступные для товара значения
 

searchingman

Гуру
Местный
#2
Указанные в админке атрибуты товара выводятся в карточке товара на вкладке "Дополнительная информация".
 

searchingman

Гуру
Местный
#4
Имею ввиду карточку товара в самом каталоге, не открытую
При вставке кода в functions.php на примере темы Storefront
PHP:
add_action( 'woocommerce_after_shop_loop_item', 'custom_display_post_meta', 9 );
function custom_display_post_meta() {
   global $product;
   $attr = array('pa_color', 'pa_razmer'); // указываем массив нужных атрибутов для вывода
   foreach ( $attr as $key=>$attribute ) {
   $values = wc_get_product_terms( $product->id, $attribute, array( 'fields' => 'names' ) );
   if (!empty($values))
    echo '<div><span>'.wc_attribute_label($attribute).'</span> : <span>'. implode( ', ', $values ).'</span></div>';
    }
}
выглядит так. (см. скриншот)
 

Ollti

Форумчанин
#5
searchingman, Здорово! Чуть-чуть подправил под себя, получилось супер.
Но тут же возникло 2 вопроса:
  1. Как увеличить размер карточки при наведении так, чтобы остальные не поехали? (например, при наведении добавить строчку с доступными размерами снизу)
  2. Как отключить через Functions.php стандартную кнопку "Подробнее", на скриншотах отключена через css...
 

Arni

Новичок
#6
При вставке кода в functions.php на примере темы Storefront
PHP:
add_action( 'woocommerce_after_shop_loop_item', 'custom_display_post_meta', 9 );
function custom_display_post_meta() {
   global $product;
   $attr = array('pa_color', 'pa_razmer'); // указываем массив нужных атрибутов для вывода
   foreach ( $attr as $key=>$attribute ) {
   $values = wc_get_product_terms( $product->id, $attribute, array( 'fields' => 'names' ) );
   if (!empty($values))
    echo '<div><span>'.wc_attribute_label($attribute).'</span> : <span>'. implode( ', ', $values ).'</span></div>';
    }
}
выглядит так. (см. скриншот)
Может знаете как вывести на странице (допустим страница определенного товара) одно из его свойств (атрибут)? Допустим есть товар ноутбук и нужно вывести значение свойства "Бренд" в произвольном месте.
 

Ardizan

Новичок
#7
Здравствуйте. А можно ли так вывести индивидуальный атрибут товара, например первый, который пишем произвольно и не присваиваем слаг?
 

Mixon14

Форумчанин
#8
При вставке кода в functions.php на примере темы Storefront
PHP:
add_action( 'woocommerce_after_shop_loop_item', 'custom_display_post_meta', 9 );
function custom_display_post_meta() {
   global $product;
   $attr = array('pa_color', 'pa_razmer'); // указываем массив нужных атрибутов для вывода
   foreach ( $attr as $key=>$attribute ) {
   $values = wc_get_product_terms( $product->id, $attribute, array( 'fields' => 'names' ) );
   if (!empty($values))
    echo '<div><span>'.wc_attribute_label($attribute).'</span> : <span>'. implode( ', ', $values ).'</span></div>';
    }
}
выглядит так. (см. скриншот)

Спасибо, воспользовался.

Скажите, а как сделать, чтобы атрибуты показывались над ценой, а не под ней?
 

Mixon14

Форумчанин
#12
Присваиваете в коде выше элементам <span> свой пользовательский класс, прописываете в style.css и меняете там что хотите.
Вот, эта тема мне пока не понятна. Смутно представляю себе, как это делается, но спасибо за ответ.