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

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

Ollti

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

searchingman

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

searchingman

Гуру
Местный
Имею ввиду карточку товара в самом каталоге, не открытую
При вставке кода в 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

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

Arni

Новичок
При вставке кода в 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

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

Mixon14

Форумчанин
При вставке кода в 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

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

Distemper27

Форумчанин
При вставке кода в 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>';
    }
}
выглядит так. (см. скриншот)

Доброго времени суток. Хотел спросить. Как можно отельный атрибутов товара хуком вывести в произвольную вкладку ? например каталожный номер товара ?

Просто добавить вкладку и вписывать вручную неудобно ибо товаров много , а просто менять массово значения атрибутов удобно + отдельный атрибут на отдельной вкладе
 

Distemper27

Форумчанин
Куда вывести-то? В карточку или в архивы? (вы зачем-то ссылаетесь на хук woocommerce_after_shop_loop_item)
В произвольной таб ниже .
Муфта гумотросова 788557 Claas – 39х101мм, к-сть о.jpg

Просто я создал эго но каждый раз вручную прописывать наименование неудобно и в случае с импортом будут проблемы , а будь это атрибутом просто в отдельной произвольной вкладке было бы неплохою (просто при добавлении товара или импорте меняешь его значения и всё)
 

marr

Специалист
Местный
каталожный номер товара
будь это атрибутом
Атрибуты [глобальные] - это наборы значений, общие для разных товаров. Каталожный номер наверное что-то другое, уникальное поле (типа артикула?)
Могу написать функционал
 

Distemper27

Форумчанин
Атрибуты [глобальные] - это наборы значений, общие для разных товаров. Каталожный номер наверное что-то другое, уникальное поле (типа артикула?)
Могу написать функционал
да типа артикула. Посто запчасти имеют 3-4 наборы кодов. Артикул само собой , номера в СНГ и международние номера. И ОЕМ номера это некий свод кодов СНГ/остальной мир чтобы найтии/заказать/посмотреть товар. Еще можно вставить через кастом филдз в теории.
 
Сверху Снизу