Для тех, кто не знает, хлебные крошки — это способ навигации, который показывает ваше текущее расположение на сайте (кстати, они используются не только на сайтах) и путь, по которому к нему можно попасть, начиная с главной страницы.
Для того, чтобы добавить хлебные крошки на сайт на WordPress вам не нужен специальный плагин «хлебные крошки», не нужно самому долго и мучительно придумывать как «сделать» хлебные крошки на сайте, не нужно долго мучить поисковики различными мудрёными фразами, а достаточно скопировать и вставить эту строчку в то место в шаблоне, куда вам нужно.
<?php the_breadcrumb() ?> |
Теперь распишем саму функцию, сразу говорю, готовьтесь, что будет много кода.
Дело в том, что я выкладываю полностью законченный и 100% рабочий вариант. Здесь учтены все типы страниц, которые только могут быть на WordPress: посты, страницы, вложенные страницы (поддерживается любое количество уровней вложенности), рубрики, подрубрики (неограниченное количество вложений), теги, архивы, страницы поиска, страницы с записями какого-либо одного автора.
Также отображается номер текущей страницы, что тоже довольно полезно.
Короче засуньте весь этот код в файл functions.php:
function the_breadcrumb(){ global $post; if(!is_home()){ echo '<a href="'.site_url().'">Главная</a> &raquo; '; if(is_single()){ // записи the_category(', '); echo " &raquo; "; the_title(); } elseif (is_page()) { // страницы if ($post->post_parent ) { $parent_id = $post->post_parent; $breadcrumbs = array(); while ($parent_id) { $page = get_page($parent_id); $breadcrumbs[] = '<a href="' . get_permalink($page->ID) . '">' . get_the_title($page->ID) . '</a>'; $parent_id = $page->post_parent; } $breadcrumbs = array_reverse($breadcrumbs); foreach ($breadcrumbs as $crumb) echo $crumb . ' &raquo; '; } echo the_title(); } elseif (is_category()) { // категории global $wp_query; $obj_cat = $wp_query->get_queried_object(); $current_cat = $obj_cat->term_id; $current_cat = get_category($current_cat); $parent_cat = get_category($current_cat->parent); if ($current_cat->parent != 0) echo(get_category_parents($parent_cat, TRUE, ' &raquo; ')); single_cat_title(); } elseif (is_search()) { // страницы поиска echo 'Результаты поиска для "' . get_search_query() . '"'; } elseif (is_tag()) { // теги (метки) echo single_tag_title('', false); } elseif (is_day()) { // архивы (по дням) echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> &raquo; '; echo '<a href="' . get_month_link(get_the_time('Y'),get_the_time('m')) . '">' . get_the_time('F') . '</a> &raquo; '; echo get_the_time('d'); } elseif (is_month()) { // архивы (по месяцам) echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> &raquo; '; echo get_the_time('F'); } elseif (is_year()) { // архивы (по годам) echo get_the_time('Y'); } elseif (is_author()) { // авторы global $author; $userdata = get_userdata($author); echo 'Опубликовал(а) ' . $userdata->display_name; } elseif (is_404()) { // если страницы не существует echo 'Ошибка 404'; } if (get_query_var('paged')) // номер текущей страницы echo ' (' . get_query_var('paged').'-я страница)'; } else { // главная $pageNum=(get_query_var('paged')) ? get_query_var('paged') : 1; if($pageNum>1) echo '<a href="'.site_url().'">Главная</a> &raquo; '.$pageNum.'-я страница'; else echo 'Вы находитесь на главной странице'; } } |
Я специально оставил комменты в коде (зелёным цветом), то есть, если вы например не используете архивы на своём сайте, то можете удалить ненужные для вас с 40-й по 51-ю строчки. Вопросы оставляйте в комментариях.
Кстати, видел на других блогах функцию хлебных крошек длиной в 5-10 строк 🙂 Люди копипастят даже не задумываясь, понятно, что у них очень урезанные варианты.
Источник: misha.blog