/ Плагины / Хлебные крошки WC

Хлебные крошки WC

HIT

02.05.2016

8915

19

Хлебные крошки 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

В данный код невозможно добавить иконки FontAwesome

Альтернативный код добавления Каталога

add_filter( 'woocommerce_get_breadcrumb', function($crumbs, $Breadcrumb){
	$shop_page_id = wc_get_page_id('shop'); //Get the shop page ID
	if($shop_page_id > 0 && !is_shop()) { //Check we got an ID (shop page is set). Added check for is_shop to prevent Home / Shop / Shop as suggested in comments
		$new_breadcrumb = [
			_x( 'Каталог', 'breadcrumb', 'woocommerce' ), //Title
			get_permalink(wc_get_page_id('shop')) // URL
		];
		array_splice($crumbs, 1, 0, [$new_breadcrumb]); //Insert a new breadcrumb after the 'Home' crumb
	}
	return $crumbs;
}, 10, 2 );

Возвращаем главную страницу

Но теперь у нас отсутствует в хлебных крошках Главная — добавляем ее вручную прямо в шаблон 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]
  • Похожие записи
  • Комментарии
  • Вложения
Переход на WC 3.0

Переход на WC 3.0

Когда видишь в панели плагинов обновление woocommerce до версии 3.0 — ощущение как будто резко наступил Новый год! Что же нового в версии 3.0: изучаем, тестим, разбираемся. Галерея изображений Теперь Читать далее »

Трекинг заказа

Трекинг заказа

Рассмотрим такой аспект работы интернет-магазина как трекинг заказа (order tracking), т.е. отслеживание статуса и местоположения заказа. YITH WooCommerce Order Tracking 8000 установок. В бесплатной версии добавляет к заказу (в админке) Читать далее »

Интересные фишки для Woocommerce

Интересные фишки для Woocommerce

Продолжаем серию интересных доработок для Woocmmerce. Выведем дату последней покупки товара У товара такого мета поля нет, нужно сопоставлять наименования (перебирая заказы). Для этого создаем запрос на перебор БД: В Читать далее »

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

19 комментариев

  1. Bадим

    Выполнил первый пункт — добавил ХК под заголовок. В категории ХК выводятся, а в карточке товара нет. Как исправить?

    1. maker1447

      the_woocommerce_single_title — это мой кастомный хук, показал как пример. В стандартной версии WP хлебные крошки в карточке надо назначать так: add_action( ‘woocommerce_before_single_product’, ‘woocommerce_breadcrumb’, 10 );

  2. Bадим

    Спасибо, получилось! А как убрать последний пункт в крошках? Тот который открыт и не имеет ссылки?

    1. maker1447

      Надо редактировать файл breadcrumb.php. Он находится в папке woocommerce/global (в идеале локализованной в папке темы).
      В нем надо убрать вывод echo esc_html( $crumb[0] ); или закомментировать его //echo esc_html( $crumb[0] );

  3. Bадим

    С окончанием крошек разобрался. А сссылку на магазин не понимаю как вставить в крошки. Вставлял код из второго пункта — не работает, выдает страница не найдена. А где надо ссылку указать?

    1. maker1447

      /katalog-tovarov/ — тут должна быть указана ваша созданная страница. Либо можно указать стандартную shop (которая создается при установке WC)

  4. Bадим

    Скажите, а нельзя чтобы открывалась страница в зависимости от языка? У меня сайт имеет три языка — русский , английский и испанский, а ссылка направляет на русскую страницу каталога из любого языка. Да и само название в крошках хорошо бы чтобы переводилось так же в зависимости от языка.

    1. maker1447

      Языки именно в Woocomerce еще не делал.. Тут надо тестировать плагины, например: Polylang
      https://opttour.ru/web/plugins/multiyazyichnost-sayta/
      или поискать специальные для WC.

  5. Bадим

    У меня стоит qTranslate-X. Polylang не совсем работает с Woocommerce.

  6. Bадим

    Вставил код в woocommerce/global/breadcrumb.php, но Главная в крошках не появилась.

    1. maker1447

      У Вас шаблон woocommerce локализован?, т.е. папка woocommerce находится в папке темы? и в ней Вы правите woocommerce/global/breadcrumb.php ???

      1. Bадим

        Да, папка Wocommerce находится в папке темы. Т.е. в дочерней теме.

        1. maker1447

          Я тогда не понимаю: как там может что-то не работать. Там будет выводится все что вы пропишите. Проверьте синтаксис — может где-то что-то пропустили или не закрыли.

          1. Bадим

            Скажите, а ссылку на стр здесь вставлять надо?

          2. maker1447

            Нет, второй пункт (Внедряем страницу каталога) надо вставлять в файл functions.php

          3. maker1447

            Я понял!, Вам надо вместо написать Главная. Вставлять надо прямо в шаблон woocommerce/global/breadcrumb.php

  7. Bадим

    Со вторым пунктом я разобрался. А вот главная не появляется. Пункт «Возвращаем главную страницу» у меня не работатет. Синтаксис проверил.

  8. Илья

    Подскажите, а что нужно прописать и изменить, чтобы придать хлебным крошкам другой вид на страницах атрибуты и метки?
    В данный момент:
    Метка: Главная / Товары с меткой “Название метки”
    Атрибут: Главная / Товар Наименование атрибута / Имя атрибута
    Нужно:
    Метка: Главная / Название метки
    Атрибут: Главная / Наименование атрибута / Имя атрибута

    1. Alexandr

      Хороший вопрос! Сам над этим думаю, но пока безуспешно. Я пытался из ХБ архива атрибута хотя убрать слово «товар», но тщетно.

Хлебные крошки WC
Локализация скрипта
Рекомендации для васЛокализация скриптаOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.