Как вывести все категории (рубрики) товаров WooCommerce в WordPress?
Я думаю, что многие согласятся со мной, что WooCommerce – это отличное решение для CMS WordPress, с помощью которого можно организовать свой собственный интернет-магазин.
Мы уже затрагивали тему этого дополнения и CMS в общем. Так что сегодня я покажу вам, как просто и без всяких плагинов вывести два вида меню (кликабельный список всех категорий товаров) на вашем сайте.
Одноуровневый вывод всех категорий (рубрик) товаров WooCommerce в любом месте сайта в WordPress
Начнем с самого простого примера – одноуровневого меню со всеми категориями, где есть хотя бы 1 товар.
Вид функции (вставляется в файл functions.php, который находится в папке темы сайта):
function get_categories_product($categories_list = '') {
$get_categories_product = get_terms('product_cat', [
'orderby' => 'name', // Поле для сортировки
'order' => 'ASC', // Направление сортировки
'hide_empty' => 1, // Скрывать пустые (1 - да, 0 - нет)
]);
if(count($get_categories_product) > 0) {
foreach($get_categories_product as $categories_item) {
$categories_list .= '
<li>
<a href="'.esc_url(get_term_link((int)$categories_item->term_id)).'">'.esc_html($categories_item->name).'</a>
</li>
';
}
}
return ($categories_list == '' ? '' : '<ul class="main_categories_list">'.$categories_list.'</ul>');
}
Использование (вывод):
<?php
echo get_categories_product();
?>
Этот код вы вставляете в нужное вам место темы сайта. Важные моменты я пометил в функции.
Основные типы сортировок:
- id или term_id – по ID.
- name – по названию.
- slug – по альтернативному названию.
- description – по описанию.
- meta_value – по значению произвольного поля.
- none – не сортировать.
По умолчанию – name.
Допустимые порядки сортировки:
- ASC – от меньшего к большему (по порядку – 1, 2, 3 или a, b, c и т.д.);
- DESC – от большего к меньшему (в обратном порядке – 3, 2, 1 или c, b, a и т.д.).
По умолчанию – ASC.
Многоуровневый (древовидный) вывод всех категорий (рубрик) товаров WooCommerce в любом месте сайта в WordPress
Поскольку в WooCommerce (как, собственно, и в WordPress) есть возможность вложения категорий, будет не лишним показать вам, как же правильно вывести их все с учетом их структуры (вложенности).
Функция:
function get_categories_product($categories_list = '', $parent_id = 0) {
$get_categories_product = get_terms('product_cat', [
'orderby' => 'name', // Поле для сортировки
'order' => 'ASC', // Направление сортировки
'hide_empty' => 1, // Скрывать пустые. 1 - да, 0 - нет.
'hierarchical' => 1,
'parent' => $parent_id
]);
if(count($get_categories_product) > 0) {
$categories_list .= ($parent_id == 0 ? '<ul class="main_categories_list">' : '<ul class="sub_categories_list sub_categories_list_'.$parent_id.'">');
foreach($get_categories_product as $categories_item) {
$categories_list .= '
<li>
<a href="'.esc_url(get_term_link((int)$categories_item->term_id)).'">'.esc_html($categories_item->name).'</a>
'.get_categories_product('', $categories_item->term_id).'
</li>
';
}
$categories_list .= '</ul>';
}
return $categories_list;
}
Вставляете так же в файл functions.php, и использование (вывод):
<?php
echo get_categories_product();
?>
Вставляете в нужное место в тему вашего сайта. Допустимые настройки вывода – как и в первом варианте.
Стилизацию меню в этой статье я не рассматриваю, думаю, ее вы можете сделать и сами.
Общий класс меню первого уровня – «main_categories_list», второго и последующего – «sub_categories_list» + «sub_categories_list_N», где N – ID ближайшего родительского пункта. Цепляетесь за них и настраиваете вид так, как вам нужно.
До новых встреч!