Хлебные крошки без плагина

Редактирование шаблона WordPress-темы

function dimox_breadcrumbs () {

/* === ОПЦИИ === */
$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 = ''; // тег перед текущей «крошкой»
$after = '
'; // тег после текущей «крошки»
/* === КОНЕЦ ОПЦИЙ === */

global $post;
$home_link = home_url ('/');
$link_before = '';
$link_after = '';
$link_attr = ' rel="v:url" property="v:title"';
$link = $link_before. '<a'. $link_attr. ' href="%1 $s">%2 $s'. $link_after;
$parent_id = $parent_id2 = $post->post_parent;
$frontpage_id = get_option ('page_on_front');

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

if ($show_on_home == 1) echo '

';

} else {

echo '

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 ('', ''. $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 ('', ''. $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' && !is404()) {
$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];
if ($cat) {
$cats = get_category_parents ($cat, TRUE, $delimiter);
$cats = str_replace ('<a', $link_before. '<a'. $link_attr, $cats);
$cats = str_replace ('', ''. $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_id2 ≠ 0 && $parent_id2 ≠ $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;

Рекомендуем прочесть  3D Print Expo 2017 не за горами:
что нам приготовил мир аддитивных технологий

} elseif (is404()) {
echo $before. $text['404']. $after;

} elseif (has_post_format () && !is_singular ()) {
echo get_post_format_string (get_post_format ());
}

if (get_query_var ('paged')) {
if (is_category () || is_day () || is_month () || is_year () || is_search () || is_tag () || is_author ()) echo ' (';
echo 'Страница '. get_query_var ('paged');
if (is_category () || is_day () || is_month () || is_year () || is_search () || is_tag () || is_author ()) echo ')';
}

echo '

';

}
} // end dimox_breadcrumbs ()

Редактирование шаблона WordPress-темы
Morrowind / Shutterstock.com

Функцию необходимо поместить в файл functions.php вашей WordPress-темы. После этого в то место шаблона, где хотите выводить «хлебные крошки», добавьте следующий код:

<?php if (function_exists ('dimox_breadcrumbs')) dimox_breadcrumbs (); ?>

Единственное, что теперь останется сделать — оформить их с помощью CSS. Для этого к блоку «хлебных крошек» предусмотрен класс .breadcrumbs, а для текущей «крошки» класс .current.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Перейти к верхней панели