Добавление атрибутов Woocommerce в карточку товара созданную в Oxygen
Столкнулся с такой проблемой, что созданные атрибуты в Woocommerce не выводятся в карточке товаров которая сверстана в Oxygen. Вернее если применен стандартный вывод информации товара. Так же атрибуты не выводятся в модальном окне через плагин yith-woocommerce-quick-view.
Решение нашел такое:
С помощью хуков вывел атрибуты и в большой карточке товаров и в модальном окне. Так же можно выводить в мини-карточках на странице архивов.
// Функция вывода атрибутов
function atrb_productShoes() {
global $product;
$product->list_attributes();
}
// Хук для вывода в большой карточке товара
add_action( 'woocommerce_single_product_summary', 'atrb_productShoes' );
// Хук для вывода в карточке товара в YITH окне
add_action( 'yith_wcqv_product_summary', 'atrb_productShoes', 16 );
Чтобы посмотреть порядок вывода для модального окна YITH, можно заглянуть в файл:
/wp-content/plugins/yith-woocommerce-quick-view/includes/class.yith-wcqv-frontend.php
Сам код я взял на сайте https://wpcraft.top/woocommerce-kak-vyvesti-atributy-tovarov-v-kataloge/ Там есть еще пару вариантов, я их не проверял. Но размещу тут, вдруг пригодятся.
function atrb_productShoes2() {
global $product;
global $post;
$attributes = $product->get_attributes();
if ( ! $attributes ) {
return;
}
foreach ( $attributes as $attribute ) {
// Получение таксаномии
$terms = wp_get_post_terms( $product->id, $attribute[ 'name' ], 'all' );
$taxonomy = $terms[ 0 ]->taxonomy;
// Получение объекта таксаномии
$taxonomy_object = get_taxonomy( $taxonomy );
// Получение меток атрибутов
$attribute_label = $taxonomy_object->labels->name;
$attribute_label = str_replace('Товар', '', $attribute_label);
// Отображение метки с кликабельным списком терминов
echo get_the_term_list( $post->ID, $attribute[ 'name' ] , '<div class="attributes">' . $attribute_label . ': ' , ', ', '</div>' );
}
}
// Хук для вывода после заголовка товаров в категории
add_action( 'woocommerce_after_shop_loop_item_title', 'atrb_productShoes2' );
И вывод не всех атрибутов, а только первых двух:
function atrb_productShoes2() {
global $product;
global $post;
$attributes = $product->get_attributes();
if ( ! $attributes ) {
return;
}
$counter = 0; // задаем счетчик
foreach ( $attributes as $attribute ) {
$counter++; // Считаем количество итераций и выходим из цикла при условии
if($counter > 2) {
break;
};
// Получение таксаномии
$terms = wp_get_post_terms( $product->id, $attribute[ 'name' ], 'all' );
$taxonomy = $terms[ 0 ]->taxonomy;
// Получение объекта таксаномии
$taxonomy_object = get_taxonomy( $taxonomy );
// Получение меток атрибутов
$attribute_label = $taxonomy_object->labels->name;
$attribute_label = str_replace('Товар', '', $attribute_label);
// Отображение метки с кликабельным списком терминов
echo get_the_term_list( $post->ID, $attribute[ 'name' ] , '<div class="attributes">' . $attribute_label . ': ' , ', ', '</div>' );
}
}
// Хук для вывода после заголовка товаров в категории
add_action( 'woocommerce_after_shop_loop_item_title', 'atrb_productShoes2' );