Хлебные крошки (Breadcrumbs) для WordPress. Breadcrumbs wordpress


Хлебные крошки (Breadcrumbs) для WordPress

function dimox_breadcrumbs() {

 

/* === OPTIONS === */

$text['home'] = 'Главная'; // текст ссылки "Главная"

 

$text['category'] = 'Архив рубрики "%s"'; // текст для страницы рубрики

 

$text['search'] = 'Результаты поиска по запросу "%s"'; // текст для страницы с результатами поиска

 

$text['tag'] = 'Записи с тегом "%s"'; // текст для страницы тега

 

$text['author'] = 'Статьи автора %s'; // текст для страницы автора

 

$text['404'] = 'Ошибка 404'; // текст для страницы 404

 

$show_current = 1; // 1 - показывать название текущей статьи/страницы/рубрики, 0 - не показывать

 

$show_on_home = 0; // 1 - показывать "хлебные крошки" на главной странице, 0 - не показывать

 

$show_home_link = 1; // 1 - показывать ссылку "Главная", 0 - не показывать

 

$show_title = 1; // 1 - показывать подсказку (title) для ссылок, 0 - не показывать

 

$delimiter = ' » '; // разделить между "крошками"

 

$before = '<span>'; // тег перед текущей "крошкой"

 

$after = '</span>'; // тег после текущей "крошки"

 

/* === END OF OPTIONS === */

 

global $post;

 

$home_link = home_url('/');

 

$link_before = '<span typeof="v:Breadcrumb">';

 

$link_after = '</span>';

 

$link_attr = ' rel="v:url" property="v:title"';

 

$link = $link_before . '<a' . $link_attr . ' href="%1$s">%2$s</a>' . $link_after;

 

$parent_id = $parent_id_2 = $post->post_parent;

 

$frontpage_id = get_option('page_on_front');

 

if (is_home() || is_front_page()) {

 

if ($show_on_home == 1) echo '<div><a href="' . $home_link . '">' . $text['home'] . '</a></div>';

 

} else {

 

echo '<div xmlns:v="http://rdf.data-vocabulary.org/#">';

 

if ($show_home_link == 1) {

 

echo '<a href="' . $home_link . '" rel="v:url" property="v:title">' . $text['home'] . '</a>';

 

if ($frontpage_id == 0 || $parent_id != $frontpage_id) echo $delimiter;

 

}

 

if ( is_category() ) {

 

$this_cat = get_category(get_query_var('cat'), false);

 

if ($this_cat->parent != 0) {

 

$cats = get_category_parents($this_cat->parent, TRUE, $delimiter);

 

if ($show_current == 0) $cats = preg_replace("#^(.+)$delimiter$#", "$1", $cats);

 

$cats = str_replace('<a', $link_before . '<a' . $link_attr, $cats);

 

$cats = str_replace('</a>', '</a>' . $link_after, $cats);

 

if ($show_title == 0) $cats = preg_replace('/ title="(.*?)"/', '', $cats);

 

echo $cats;

 

}

 

if ($show_current == 1) echo $before . sprintf($text['category'], single_cat_title('', false)) . $after;

 

} elseif ( is_search() ) {

 

echo $before . sprintf($text['search'], get_search_query()) . $after;

 

} elseif ( is_day() ) {

 

echo sprintf($link, get_year_link(get_the_time('Y')), get_the_time('Y')) . $delimiter;

 

echo sprintf($link, get_month_link(get_the_time('Y'),get_the_time('m')), get_the_time('F')) . $delimiter;

 

echo $before . get_the_time('d') . $after;

 

} elseif ( is_month() ) {

 

echo sprintf($link, get_year_link(get_the_time('Y')), get_the_time('Y')) . $delimiter;

 

echo $before . get_the_time('F') . $after;

 

} elseif ( is_year() ) {

 

echo $before . get_the_time('Y') . $after;

 

} elseif ( is_single() && !is_attachment() ) {

 

if ( get_post_type() != 'post' ) {

 

$post_type = get_post_type_object(get_post_type());

 

$slug = $post_type->rewrite;

 

printf($link, $home_link . '/' . $slug['slug'] . '/', $post_type->labels->singular_name);

 

if ($show_current == 1) echo $delimiter . $before . get_the_title() . $after;

 

} else {

 

$cat = get_the_category(); $cat = $cat[0];

 

$cats = get_category_parents($cat, TRUE, $delimiter);

 

if ($show_current == 0) $cats = preg_replace("#^(.+)$delimiter$#", "$1", $cats);

 

$cats = str_replace('<a', $link_before . '<a' . $link_attr, $cats);

 

$cats = str_replace('</a>', '</a>' . $link_after, $cats);

 

if ($show_title == 0) $cats = preg_replace('/ title="(.*?)"/', '', $cats);

 

echo $cats;

 

if ($show_current == 1) echo $before . get_the_title() . $after;

 

}

} elseif ( !is_single() && !is_page() && get_post_type() != 'post' && !is_404() ) {

 

$post_type = get_post_type_object(get_post_type());

 

echo $before . $post_type->labels->singular_name . $after;

 

} elseif ( is_attachment() ) {

 

$parent = get_post($parent_id);

 

$cat = get_the_category($parent->ID); $cat = $cat[0];

 

$cats = get_category_parents($cat, TRUE, $delimiter);

 

$cats = str_replace('<a', $link_before . '<a' . $link_attr, $cats);

 

$cats = str_replace('</a>', '</a>' . $link_after, $cats);

 

if ($show_title == 0) $cats = preg_replace('/ title="(.*?)"/', '', $cats);

 

echo $cats;

 

printf($link, get_permalink($parent), $parent->post_title);

 

if ($show_current == 1) echo $delimiter . $before . get_the_title() . $after;

 

} elseif ( is_page() && !$parent_id ) {

 

if ($show_current == 1) echo $before . get_the_title() . $after;

 

} elseif ( is_page() && $parent_id ) {

 

if ($parent_id != $frontpage_id) {

 

$breadcrumbs = array();

 

while ($parent_id) {

 

$page = get_page($parent_id);

 

if ($parent_id != $frontpage_id) {

 

$breadcrumbs[] = sprintf($link, get_permalink($page->ID), get_the_title($page->ID));

 

}

 

$parent_id = $page->post_parent;

 

}

 

$breadcrumbs = array_reverse($breadcrumbs);

 

for ($i = 0; $i < count($breadcrumbs); $i++) {

 

echo $breadcrumbs[$i];

 

if ($i != count($breadcrumbs)-1) echo $delimiter;

 

}

 

}

 

if ($show_current == 1) {

 

if ($show_home_link == 1 || ($parent_id_2 != 0 && $parent_id_2 != $frontpage_id)) echo $delimiter;

 

echo $before . get_the_title() . $after;

 

}

 

} elseif ( is_tag() ) {

 

echo $before . sprintf($text['tag'], single_tag_title('', false)) . $after;

 

} elseif ( is_author() ) {

 

global $author;

 

$userdata = get_userdata($author);

 

echo $before . sprintf($text['author'], $userdata->display_name) . $after;

 

} elseif ( is_404() ) {

 

echo $before . $text['404'] . $after;

 

}

 

if ( get_query_var('paged') ) {

 

if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ' (';

 

echo __('Page') . ' ' . get_query_var('paged');

 

if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ')';

 

}

 

echo '</div><!-- .breadcrumbs -->';

 

}

 

} // end dimox_breadcrumbs()

wordpressmania.ru

Как сделать хлебные крошки для WordPress

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

Как видите, на этом блоге они тоже есть, находятся сразу же под логотипом.

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

<?php the_breadcrumb() ?>

Теперь распишем саму функцию, сразу говорю, готовьтесь, что будет много кода.

Дело в том, что я выкладываю полностью законченный и 100% рабочий вариант. Здесь учтены все типы страниц, которые только могут быть на WordPress: посты, страницы, вложенные страницы (поддерживается любое количество уровней вложенности), рубрики, подрубрики (неограниченное количество вложений), теги, архивы, страницы поиска, страницы с записями какого-либо одного автора.

Также отображается номер текущей страницы, что тоже довольно полезно.

Короче засуньте весь этот код в файл functions.php:

function the_breadcrumb(){ global $post; if(!is_home()){ echo '<a href="'.site_url().'">Главная</a> &amp;raquo; '; if(is_single()){ // записи the_category(', '); echo " &amp;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 . ' &amp;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, ' &amp;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> &amp;raquo; '; echo '<a href="' . get_month_link(get_the_time('Y'),get_the_time('m')) . '">' . get_the_time('F') . '</a> &amp;raquo; '; echo get_the_time('d'); } elseif (is_month()) { // архивы (по месяцам) echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> &amp;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> &amp;raquo; '.$pageNum.'-я страница'; else echo 'Вы находитесь на главной странице'; } }

Я специально оставил комменты в коде (зелёным цветом), то есть, если вы например не используете архивы на своём сайте, то можете удалить ненужные для вас с 40-й по 51-ю строчки. Вопросы оставляйте в комментариях.

Кстати, видел на других блогах функцию хлебных крошек длиной в 5-10 строк 🙂 Люди копипастят даже не задумываясь, понятно, что у них очень урезанные варианты.

Смотрите также

misha.blog

Хлебные крошки WordPress - плагин Breadcrumb NavXT

Здравствуйте, уважаемые читатели! Сегодня речь пойдет о том, что такое хлебные крошки, какие функции они выполняют на блоге, а самое главное — как установить и настроить плагин Breadcrumb NavXT, позволяющий создать хлебные крошки WordPress.

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

Что такое хлебные крошки

«Хлебные крошки» показывают путь на блоге, по которому необходимо пройти от главной до текущей страницы. Это своего рода навигационная цепочка, каждое звено которой является ссылкой на страницу более высокого уровня. Самый высокий уровень — это главная блога. В идеале путь к любой странице блога от главной должен занимать максимум 3 клика мыши. Фактически, это главная — категория — запись или главная — категория — категория — запись, но никак не длиннее. Это необходимо для удобства не только пользователей, но и поисковых систем. Посты с более глубоким заложением поисковики могут индексировать с некоторой задержкой. К тому же их важность в глазах поисковиков уменьшается с увеличением уровня вложенности. Как следствие — ссылки на самые важные и интересные статьи на блоге старайтесь проставлять на главной.

Подобную фишку на сайте называются по-разному — навигатор, навигационная цепочка, путь на сайте, но самым популярное название — это именно «хлебные крошки». Такое название пошло от сказки про Гензеля и Грету, в которой герои разбрасывали хлебные крошки, чтобы найти дорогу назад.

Помимо удобства и навигации они выполняют еще одну важную функцию — улучшает внутреннюю перелинковку страниц блога. Ранее я уже рассказывал о трех важных и интересных плагинах, для внутренней перелинковки — YARPP, WordPress Popular Posts и Easy Random Posts, которые настоятельно рекомендую установить каждому на свой блог. Breadcrumb NavXT смело можно причислить к этому списку.

Когда поисковики индексируют какую-то статью блога, они сразу видят к какой рубрики она относятся и полный путь до главной, что помогает им определить структура блога. Только не забудьте еще добавить на блог карту сайта как для поисковиков, так и для пользователей.

Установка и настройка плагина Breadcrumb NavXT

Установка Breadcrumb NavXT несколько отличается от стандартной, поэтому рассмотрим ее подробно:

1. Скачайте последнюю версию плагина Breadcrumb NavXT.

2. Распакуйте архив и загрузите папку с файлами плагина на сервер в директорию wp-content/plugins. Для этого воспользуйтесь бесплатным ftp клиентом — FileZilla.

3. Активируйте плагин через раздел «Плагины» панели администратора WordPress.

4. Теперь необходимо вставить следующий код:

<div> <?php if(function_exists('bcn_display')) { bcn_display(); } ?> </div>

в то место темы WordPRess, на которым вы хотите видеть хлебные крошки wordpress.

Если вы хотите, чтобы они располагались над заголовком статей в области контента, как на моем блоге, то данный код следует добавить в шаблоны archive.php, single.php, index.php, page.php и search.php перед строчкой кода, отвечающего за вывод содержания поста:

<?php while(have_posts()) : the_post(); ?>

Второе по популярности место — это шапка сайта. Для этого код необходимо вставить только в один шаблон — header.php. Точного места я не могу сказать, все зависит от темы. Здесь подойдет способ научного тыка — вставляете код, сохраняете, смотрите результат, не нравится — меняете местоположения кода в шаблоне.

Некоторые продвинутые темы по умолчанию выводят хлебные крошки на блоге, но я бы посоветовал все-таки использовать плагин Breadcrumb NavXT, потому что он имеет более гибкие настройки. В таких случаях следует заменить стандартный код в шаблонах темы, отвечающий за вывод хлебных крошек, на код плагина, указанный выше. Стандартный код во многом должен быть похож на приведенный код плагина, поэтому найти его не составит труда (обычно он заключен в тег div, ID или class которого имеет тоже название — breadcrumb).

После добавления кода, можно изменить внешний вид хлебных крошек WordPress. Для этого следует добавить стили к классу breadcrumb в файл style.css используемой темы. Конечно, для этого необходимо знать основы CSS, поэтому советую ознакомиться с бесплатным самоучителем по CSS от Влада Мержевича, который вы можете скачать с моего блога.

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

Первая закладка называется «General» — Общие.

настройки

Breadcrumb Separator — символ, который будет использоваться в качестве разделителями между звеньями навигационной цепочки.

Breadcrumb Max Title Length — в качестве звена навигационной цепочки используется заголовок страницы, эта опция задает максимальную длину заголовка, 0 — используется заголовок целиком, не обрезая его.

Home Breadcrumb — указывать или нет в хлебных крошках главную блога. Советую включить и задать ей имя в соответствии с названием вашего блога.

Home Template — задает анкор ссылки, ведущей на домашнюю страницу.

Home Template

Home Template (Unlinked) — текст, который будет виден на главной блога, если это не ссылка.

Home Template (Unlinked)

Переходим на вкладку Current Item, что означает «Текущей пункт» или «Текущее местоположение».

текущий пункт

Link Current Item — выводить название текущей страницы в качестве ссылки на нее же или нет.

Paged Breadcrumb — поддержка постраничной навигации. После включения будут отображаться номера в хлебных крошках.

Paged Template — шаблон, определяющий название текущей позиции при включенной поддержки постраничной навигации.

Paged Template

Следующий раздел называется «Post & Pages» — Записи и страницы.

Post Template — определяет анкор ссылки для записи.

Post Template

Post Template (Unlinked) — название записи (не ссылка).

Post Template (Unlinked)

Post Taxonomy Display — показывать все варианты путей, ведущих к записи.

Post Taxonomy — в вариантах путей к записи можно отображать. Для своего блога выбрал стандартный вариант — Рубрики.

Page Template и Page Template (Unlinked) — аналогичны рассмотренным выше Post Template и Post Template (Unlinked), только выводится будут для опубликованных статей.

На очереди раздел «Categories & Tags».

Категории и теги

В этом разделе задаются шаблоны для формирования хлебных крошек рубрик и тэгов. Просто действуйте по аналогии с рассмотренными выше шаблонами для записей.

В разделе Miscellaneous можно задать шаблоны для страницы автора (Author), даты/архива (Date), результатов поиска (Search) и ошибки 404.

Miscellaneous

Остальные опции я не использую, поэтому умничать о их назначении не буду.

Ну вот во всем и разобрались! Поздравляю! На этом свое повествование заканчиваю и прощаюсь с вами, но не надолго, ибо скоро на моем блоге выйдет очередная интересная статья!

Лучший способ выразить благодарность автору - поделиться с друзьями!

Узнавайте о появлении нового материала первым! Подпишитесь на обновления по email:

Следите за обновлениями в Twitter и RSS.

fairheart.ru


Смотрите также

Prostoy-Site | Все права защищены © 2018 | Карта сайта