Задача. Необходимо на странице каталога Woocommerce вывести под названием товаров первые несколько их атрибутов.
Решение 1. Можно использовать Код №1 в functions.php
, но он выводит атрибуты таблицей. Такой вариант больше подходит для вывода на странице товара.
1 2 3 4 5 6 7 8 9 10 11 |
// Функция вывода атрибутов function atrb_productShoes() { global $product; $product->list_attributes(); } // Хук для вывода после заголовка товаров в категории add_action( 'woocommerce_after_shop_loop_item_title', 'atrb_productShoes' ); |
Решение 2. Код №2 в functions.php
выведет названия атрибутов с значениями просто обернув в div
с class="attributes"
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
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' ); |
Решение 3. Код №3 в functions.php
аналогичен Коду №2, но здесь мы выводим не все атрибуты, а только первые два:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
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' ); |
Благодарю за помощь!
Помогло)