Сегодня рассмотрим сравнительно редкую ситуацию: на сайте установлен WooCommerce, страница магазина не совпадает с главной страницей сайта, а в хлебных крошках (breadcrumbs) отсутствует ссылка на страницу магазина. Как ее добавить?

Чтобы было понятнее, приведем примеры ссылок.

Главная страница сайта: site.com
Страница магазина: site.com/shop/
Хлебные крошки: Главная > Магазин
Страница категории: site.com/category/
Хлебные крошки: Главная > Категория
Страница товара: site.com/category/product/
Хлебные крошки: Главная > Категория > Товар

Как видите, в хлебных крошках на страницах таксономий и товаров отсутствует пункт «Магазин» (страница магазина может называться иначе), хотя в некоторых случаях он принципиален для владельца сайта. Таким образом, наша задача сделать такую структуру:

Страница категории: site.com/category/
Хлебные крошки: Главная > Магазин > Категория
Страница товара: site.com/category/product/
Хлебные крошки: Главная > Магазин > Категория > Товар

Неправильный подход в решении этой проблемы — это добавить промежуточную категорию товаров «Магазин». В таком случае пункт «Магазин» действительно появится в хлебных крошках, но:

  • он ведет не на страницу магазина, а на страницу категории
  • на странице магазина возникнут сложности в отображении правильных категорий и товаров

Правильное решение: добавить следующий код в конец файла functions.php вашей активной темы:

// Добавление в хлебные крошки ссылки на страницу магазина WooCommerce
add_filter( 'woocommerce_get_breadcrumb', function($crumbs, $breadcrumb){
	$shop_page_id = wc_get_page_id('shop'); // Запрашиваем ID страницы магазина
	if($shop_page_id > 0 && !is_shop() && (is_product_taxonomy() || is_product())) { // Проверяем корректность полученного ID и чтобы текущая страница не была страницей магазина и то, что страница является страницей товара или категорией товаров
		$new_breadcrumb = [
			//_x( 'Магазин', 'breadcrumb', 'woocommerce' ), // Строка для добавления собственного названия "Магазина". Для использования раскомментируйте ее, но закомментируйте следующую
			get_the_title(wc_get_page_id('shop')), // Запрашиваем название страницы магазина
			get_permalink(wc_get_page_id('shop')) // Запрашиваем URL страницы магазина
		];
		array_splice($crumbs, 1, 0, [$new_breadcrumb]); // Добавляем новый пункт в хлебные крошки  после пункта "Главная"
	}
	return $crumbs;
}, 10, 2 );

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *