breadcrumbs.jpg

Существует масса плгинов, которые генерируют хлебные крошки для удобной навигации. Но вообще-то, вы и сами можете создать себе навигацию хлебными крошками при помощи всего нескольких строк кода, которые будут иметь хороший потенциал для кастомицации и настройки под себя.

Мы не будем подробно останавливаться на форматировании крошек, для этого примера крошки будут выводиться неотсортированным списком. В таком формате они достаточно дружественны для поисковых систем, и вы потом сами сможете отформатировать их на свой вкус.

Чтобы начать, вот простой способ реализации хлебных крошек, который работает только со страницами и включает в себя крошку «Home» (главную страницу сайта) в начала списка. В зависимости от дизайна конкретного шаблона, вам может понадобиться вставить этот код в какой-нибудь тег. В этом примере предполагается что код будет вставлен в файл header.php, крошки будут появляться только на страницах и не будут выводиться на главной странице. К ссылкам на текущую и домашнюю страницы также можно будет применить особый CSS класс.

if (is_page() && !is_front_page()) {
echo '<ul id="breadcrumbs">';
echo '<li class="front_page"><a href="'.get_bloginfo('url').'">Home</a></li>';
$post_ancestors = get_post_ancestors($post);
if ($post_ancestors) {
$post_ancestors = array_reverse($post_ancestors);
foreach ($post_ancestors as $crumb)
echo '<li><a href="'.get_permalink($crumb).'">'.get_the_title($crumb).'</a></li>';
}
echo '<li class="current"><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
echo '</ul>';
}

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

if ((is_page() && !is_front_page()) || is_home()) {
...

Следующая модификация этого кода делает возможным включение хлебных крошек для отдельных категорий и постов. Обратите внимание, что WordPress позволяет добавлять посты в несколько категорий; чтобы не сделать из крошек нагромождения, скрипт просто выберет первую категорию из выбранных для поста. Ради простоты, исключим иерархически вложенные категории.

if ((is_page() && !is_front_page()) || is_home() || is_category() || is_single()) {
echo '<ul id="breadcrumbs">';
echo '<li class="front_page"><a href="'.get_bloginfo('url').'">Home</a></li>';
$post_ancestors = get_post_ancestors($post);
if ($post_ancestors) {
$post_ancestors = array_reverse($post_ancestors);
foreach ($post_ancestors as $crumb)
echo '<li><a href="'.get_permalink($crumb).'">'.get_the_title($crumb).'</a></li>';
}
if (is_category() || is_single()) {
$category = get_the_category();
echo '<li><a href="'.get_category_link($category[0]->cat_ID).'">'.$category[0]->cat_name.'</a></li>';
}
if (!is_category())
echo '<li class="current"><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
echo '</ul>';
}

Существует много способов как дальнейшего расширения возможностей хлебных крошек. Например, вы можете захотеть сделать хлебные крошки для различных типов архивов (тэги, месяцы, годы) или внедрить поддержку иерархии категорий. Конечно, эта статья не может покрыть все возможные варианты реализации, но предложенные примеры предоставят вам ощутимый фреймворк для дальнейшей работы.

h++p://habrahabr.ru/blogs/wordpress/65452/

Категория: WordPress

Оставьте свой комментарий