Как вывести все категории (рубрики) товаров 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) { $categories_list = ‘<ul class=»main_categories_list»>’; 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>’; } $categories_list .= ‘</ul>’; } return $categories_list; }

Использование (вывод):

<?php echo get_categories_product(); ?>

Этот код вы вставляете в нужное вам место темы сайта. Важные моменты я пометил в функции.

Основные типы сортировок:

  1. id или term_id – по ID.
  2. name – по названию.
  3. slug – по альтернативному названию.
  4. description – по описанию.
  5. meta_value – по значению произвольного поля.
  6. none – не сортировать.

По умолчанию – name.

Допустимые порядки сортировки:

  1. ASC – от меньшего к большему (по порядку – 1, 2, 3 или a, b, c и т.д.);
  2. DESC – от большего к меньшему (в обратном порядке – 3, 2, 1 или c, b, a и т.д.).

По умолчанию – ASC.

Многоуровневый (древовидный) вывод всех категорий (рубрик) товаров WooCommerce в любом месте сайта в WordPress

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

Функция:

function get_categories_product($categories_list = «», $parent_id = 0, $i = 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) { if($parent_id == 0) { $categories_list .= ‘<ul class=»main_categories_list»>’; $i = 0; } else { $i++; $categories_list .= ‘<ul class=»sub_categories_list sub_categories_list_’.$i.‘»>’; } 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>’; $categories_list .= get_categories_product(«», $categories_item->term_id, $i); $categories_list .= ‘</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 – уровень вложения. Цепляетесь за них и настраиваете вид так, как вам нужно.

Обновлено: 29.11.2020 — 06:30