Задать вопрос
@meekoka

Как из стандартных хлебных крошек woocommerce убрать ненужные категории?

Требовалось реализовать метод вывода некоторых товаров в магазине woocommerce на гланую страницу. Рассматривал три варианта - создать метку или теги и выводить товары у которых есть подобная метка - но подобного решения не нашел. Также рассматривал вариант выводить товары, у которых стоит отметка "рекомендуемые", но этот вариант посчитал не совсем подходящим для моего случая, т.к. эта функция может потребоваться для других задач и не хотелось ее использовать только для вывода некоторых товаров на главной странице.
В итоге решил остановиться на таком варианте: я создал отдельную категорию для товаров, которые должны размещаться на главной странице и нужные товары добавил в две категории: подходящую для товара и категорию, которая выводится на главной странице. Все работает отлично, но есть заминка, теперь в хлебных крошках отображается не та категория товара, которая подходит к нему, а запасная для главной. И собственно вопрос, как можно исключить ненужные категории из вывода в хлебных крошках?

p.s.
Сопутствующий вопрос, хлебные крошки на страницах отображаются так: "главная / название страницы".
На главной же странице не выводится ничего, почему не выводится "главная" и как ее вывести?
  • Вопрос задан
  • 4321 просмотр
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
По второму вопросу - потому что по умолчанию хлебные крошки выводятся для вложенности от 1 уровня. Для главной, где вложенность 0 - не выводятся вообще. Изучите класс woocommerce/includes/class-wc-breadcrumb.php чтобы понимать как они вообще работают. Смотрите код тут.

Обратите внимание на хук woocommerce_get_breadcrumb - в нем вам доступны элементы хлебных крошек в виде массива, который вы можете модифицировать - добавить/удалить/заменить определенный элемент (или элементы).

Также, у вас есть темплейт для вывода хлебных крошек woocommerce/templates/global/breadcrumb.php, который вы можете скопировать себе в папку темы (сохраняя вложенность пути, смотрите заголовок-комментарий шаблона и документацию Woo) и сделать свой вывод. Смотрите код файла тут.

Что касается двух категорий товаров - в хлебных крошках выводится первый термин, полученный функцией
wc_get_product_terms( $post->ID, 'product_cat', array( 'orderby' => 'parent', 'order' => 'DESC' ) );
. Есть небольшой хак - переименовать вашу "служебную" категорию так, чтобы она прилетала второй в списке. При необходимости - изменить параметр сортировки через хук. Либо вообще в этом хуке отфильтровать "служебную" категорию совсем (но надо поковырять conditionals чтобы убрать ее только в нужных местах):
function change_breadcrumb( $main_term ) {

    // Проверьте что пришло
    var_dump( $main_term );

    return $main_term;

}
add_filter( 'woocommerce_breadcrumb_main_term', 'change_breadcrumb' );
Ответ написан
@ilyapokrov
Подскажите, а что нужно прописать и изменить, чтобы придать хлебным крошкам другой вид на страницах атрибуты и метки?
В данный момент:
Метка: Главная / Товары с меткой “Название метки”
Атрибут: Главная / Товар Наименование атрибута / Имя атрибута
Нужно:
Метка: Главная / Название метки
Атрибут: Главная / Наименование атрибута / Имя атрибута

Ну и в идеале, в URL убрать product-tag:
Название сайта/Название метки
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы