Хлебные крошки WC имеют свои особенности. Их невозможно заменить стандартными хлебными крошками, т.к. в них еще не предусмотрена система для иерархических таксономий.
Выводим хлебные крошки
Первым делом надо назначить хлебные крошки для вывода (первая половина в скобке — место где их выводить)
// Добавить хлебные крошки под заголовок
add_action( 'woocommerce_before_shop_loop', 'woocommerce_breadcrumb', 4 ); //В категориях
add_action( 'the_woocommerce_single_title', 'woocommerce_breadcrumb', 6 ); //В карточке товара (кастомный хук)
add_action( 'woocommerce_before_single_product', 'woocommerce_breadcrumb', 10 ); //В карточке товара (стандарт)
Внедряем страницу каталога
Изначально в хлебных крошках WC настроено следующим образом:
Главная/Категория/Подкатегория/Товар
При этом Главная ведет на главную страницу. Но в хлебных крошках отсутствует ссылка на главную страницу каталога shop либо любую другую.
Можно сделать так: переименовать с Главная на Каталог и изменить ссылку с главной на каталог.
// Изменяем в хлебных крошках текст для главной страницы с 'Главная' на 'Каталог'
add_filter( 'woocommerce_breadcrumb_defaults', 'jk_change_breadcrumb_home_text' );
function jk_change_breadcrumb_home_text( $defaults ) {
$defaults['home'] = 'Каталог';
return $defaults;
}
// Изменяем в хлебных крошках ссылку на 'Каталог'
add_filter( 'woocommerce_breadcrumb_home_url', 'woo_custom_breadrumb_home_url' );
function woo_custom_breadrumb_home_url() {
return '/katalog-tovarov/';
}
katalog-tovarov — страница аналог стандартной страницы WC Shop
Возвращаем главную страницу
Но теперь у нас отсутствует в хлебных крошках Главная — добавляем ее вручную прямо в шаблон woocommerce/global/breadcrumb.php, после строки echo $wrap_before;
echo '<a rel="v:url" property="v:title" href="'. get_bloginfo('url') .'"><i class="fa fa-home"></i></a>';
echo $delimiter;
Вот теперь хлебные крошки WC содержат все необходимое!
Убираем наименование текущей страницы
Если необходимо убрать из пути хлебных крошек название текущей страницы, делаем следующее.
Открываем шаблон woocommerce/global/breadcrumb.php и оборачиваем пункт echo esc_html( $crumb[0] ); в span с id=»final», и задаем ему стиль display: none;
echo '<span id="final">';
echo esc_html( $crumb[0] );
echo '</span>';
[site-socialshare]
Выполнил первый пункт — добавил ХК под заголовок. В категории ХК выводятся, а в карточке товара нет. Как исправить?
the_woocommerce_single_title — это мой кастомный хук, показал как пример. В стандартной версии WP хлебные крошки в карточке надо назначать так: add_action( ‘woocommerce_before_single_product’, ‘woocommerce_breadcrumb’, 10 );
Спасибо, получилось! А как убрать последний пункт в крошках? Тот который открыт и не имеет ссылки?
Надо редактировать файл breadcrumb.php. Он находится в папке woocommerce/global (в идеале локализованной в папке темы).
В нем надо убрать вывод echo esc_html( $crumb[0] ); или закомментировать его //echo esc_html( $crumb[0] );
С окончанием крошек разобрался. А сссылку на магазин не понимаю как вставить в крошки. Вставлял код из второго пункта — не работает, выдает страница не найдена. А где надо ссылку указать?
/katalog-tovarov/ — тут должна быть указана ваша созданная страница. Либо можно указать стандартную shop (которая создается при установке WC)
Скажите, а нельзя чтобы открывалась страница в зависимости от языка? У меня сайт имеет три языка — русский , английский и испанский, а ссылка направляет на русскую страницу каталога из любого языка. Да и само название в крошках хорошо бы чтобы переводилось так же в зависимости от языка.
Языки именно в Woocomerce еще не делал.. Тут надо тестировать плагины, например: Polylang
https://opttour.ru/web/plugins/multiyazyichnost-sayta/
или поискать специальные для WC.
У меня стоит qTranslate-X. Polylang не совсем работает с Woocommerce.
Вставил код в woocommerce/global/breadcrumb.php, но Главная в крошках не появилась.
У Вас шаблон woocommerce локализован?, т.е. папка woocommerce находится в папке темы? и в ней Вы правите woocommerce/global/breadcrumb.php ???
Да, папка Wocommerce находится в папке темы. Т.е. в дочерней теме.
Я тогда не понимаю: как там может что-то не работать. Там будет выводится все что вы пропишите. Проверьте синтаксис — может где-то что-то пропустили или не закрыли.
Скажите, а ссылку на стр здесь вставлять надо?
Нет, второй пункт (Внедряем страницу каталога) надо вставлять в файл functions.php
Я понял!, Вам надо вместо написать Главная. Вставлять надо прямо в шаблон woocommerce/global/breadcrumb.php
Со вторым пунктом я разобрался. А вот главная не появляется. Пункт «Возвращаем главную страницу» у меня не работатет. Синтаксис проверил.
Подскажите, а что нужно прописать и изменить, чтобы придать хлебным крошкам другой вид на страницах атрибуты и метки?
В данный момент:
Метка: Главная / Товары с меткой “Название метки”
Атрибут: Главная / Товар Наименование атрибута / Имя атрибута
Нужно:
Метка: Главная / Название метки
Атрибут: Главная / Наименование атрибута / Имя атрибута
Хороший вопрос! Сам над этим думаю, но пока безуспешно. Я пытался из ХБ архива атрибута хотя убрать слово «товар», но тщетно.