/ Сайтостроение / Плагины / Иерархия по бренду

Иерархия по бренду

04.06.2017

861

В woocommerce существует иерархия товаров по категории (product_cat), но не всегда этого достаточно. Создадим в woocommerce дополнительную иерархию по бренду.

Сортировка по бренду

Первым делом создаем атрибут товара Бренд и сами бренды. Для того чтобы задать брендам изображение — используем плагин taxonomy term image master.

При желании добавляем в sidebar виджет WooCommerce layered nav, который содержит функционал фильтра по выбранному атрибуту (в нашем случае бренд).

Выводим имеющиеся бренды в категориях

// Выводим бренды товаров находящихся в категории
function tutsplus_product_brends( $args = array() ) {

if ( !is_search() ) {

$poductcatid = get_queried_object_id();

$args = array(
'numberposts' => -1,
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'id',
'terms' => $poductcatid
),
),
'post_type' => 'product'
);

$posts = get_posts( $args );

foreach($posts as $post){ setup_postdata($post);


$brends_id = wp_get_object_terms($post->ID, 'pa_brend');

foreach ($brends_id as $brend_id) :

$all_brends_ids[] = $brend_id->term_id;

endforeach;

$all_brends_unique = array_unique($all_brends_ids);

}

wp_reset_postdata();

if($all_brends_unique):

echo '<div id="brends">';

foreach ($all_brends_unique as $brend_id) :

$brend = get_term_by('id', $brend_id, 'brend');

if ( $brend->term_image ):
echo '<a href="' .get_tag_link($brend->term_id). '">';
echo wp_get_attachment_image( $brend->term_image, 'full' );
echo '</a>';
endif;
endforeach;

echo '</div>';

endif;
}

}

add_action( 'woocommerce_after_shop_loop', 'tutsplus_product_brends', 50 );

Выводим бренд в карточке товара

// вывод бренда в карточке товара
function proizvoditeli_woocommerce() {

global $post;

echo '<div id="brand">';

$brends_id = wp_get_object_terms($post->ID, 'pa_brend');

foreach ($brends_id as $brend_id) :
if ( $brend_id->term_image ):
echo '<a href="' .get_tag_link($brend_id->term_id). '">';
echo wp_get_attachment_image( $brend_id->term_image, 'full' );
echo '</a>';
endif;
endforeach;

echo '</div>';
}
add_action( 'the_woocommerce_single_title', 'proizvoditeli_woocommerce', 7 );

Таким образом из категории, либо из карточки товара. либо из произвольного меню мы попадаем в раздел бренда.

Категории Бренда

Находясь в разделе бренда нам нужно получить входящие в него категории. Для этого в области виджетов создаем следующий вызов:

<?php if ( is_tax('pa_brend') ) : ?>

<div class="widget">

<?php

$termin = get_query_var( 'term' );

$args = array( 'posts_per_page' => -1,
'post_type' => 'product',
'tax_query' => array(
array(
'taxonomy' => 'pa_brend',
'field' => 'slug',
'terms' => $termin
),
),
);

$termposts = get_posts( $args );

foreach( $termposts as $termpost ){

setup_postdata($termpost);

$all_cat_objects = get_the_terms( $termpost, 'product_cat' );

if($all_cat_objects){

foreach($all_cat_objects as $cat_object) {

if($cat_object->count > 0) {

$all_cat_ids[] = $cat_object->term_id;

}

}
}
}

wp_reset_postdata();

if ( $cat_object->count > 0 ): ?>

<?php $cat_ids_unique = array_unique($all_cat_ids); ?>

<?php //print_r ($cat_ids_unique); ?>

<?php foreach($cat_ids_unique as $cat_id): ?>

<?php $category = get_term( $cat_id, 'category' ); //Получаем данные по термину таксономии ?>

<h2><a href="
<?php echo site_url().'/product-category/'.$category->slug.'/?filter_brend='.$termin; ?>
"><?php echo $category->name; ?></a></h2>

<?php endforeach; ?>

<?php endif; ?>

</div>

<?php endif; ?>

Данный код анализирует все товары в данном разделе (бренде), получает все категории к которым принадлежат товары и записывает их в уникальный массив, который в последствии мы и получаем, а также формирует специальную url-ссылку на результат фильтра по бренду.

Протестировать данное решение на подкатегориях

Возврат в категорию

Можно сделать из карточки кнопку возврата в категорию (в сайтбаре, либо в специальном месте).

<?php
$term_id = wp_get_object_terms($post->ID, 'product_cat');
$term_link = get_term_link($term_id[0], 'product_cat');

echo "<a href='". $term_link ."'>Назад к выбору</a>";
?>

Если данная кнопка будет находится в сайтбаре можно обернуть ее проверкой

<?php if ( is_product() ) : ?>
<div class="widget">



</div>
<?php endif; ?>

Список брендов

Выводим полный список брендов с ссылками на архив бренда.

<?php <?php
$terms = get_terms( array(    
'taxonomy' => 'pa_brend', 
'hide_empty' => true,  
'pad_counts'=> true,  
'orderby' => 'count',    
'exclude' => array(755, 666, 654, 667),   //если необходимо некоторые исключаем 
'order' => 'DESC',    
'number' => 10,    
'parent' => $term->term_id
) 
);  ?>

<?php if($terms) : ?>

<?php foreach($terms as $term) : ?>

<a href="<?php echo get_tag_link($term->term_id);?>">

<?php if ( $term->term_image ) { echo wp_get_attachment_image( $term->term_image, 'square' ); } ?>

</a>

<?php endforeach; ?>
<?php endif; ?>

Тэги:

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

  • Похожие записи
  • Комментарии
  • Вложения
Шаблон вывода категорий woocommerce

Шаблон вывода категорий woocommerce

Зафиксировать шаблон (код) вывода категорий Woocommerce (я его назвал product-cat-list.php). Обычно я вывожу этот шаблон на стандартной странице /shop/ Шаблон вывода категорий <div id="subcategory-archive"> <?php $terms = get_terms( array( 'taxonomy' Читать далее »

Вариативный товар

Вариативный товар

Вариативный товар — один из типов товаров плагина интернет-магазина Woocommerce. Суть вариативного товара в том, что мы создаем несколько вариантов исполнения одного товара (размер, цвет, емкость и т.д.), и в Читать далее »

Варианты сортировки woocommerce

Варианты сортировки woocommerce

Добавляем свои варианты сортировки в woocommerce, кроме стандартных: по цене, по новизне, по популярности, по рейтингам. Вариант сортировки: Случайно // Добавить вариант сортировки: Случайно add_filter( 'woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args' ); function custom_woocommerce_get_catalog_ordering_args( Читать далее »

/

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

Пока нет комментариев. Будь первым!

Иерархия по бренду
Версия сайта для печати
Рекомендации для васВерсия сайта для печатиOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.