Как сделать хлебные крошки на WordPress?
Подскажите хороший плагин или скрипт для организации “Хлебных крошек” на сайте WordPress
Можно обойтись без плагинов. Открываем простой текстовый файл с именем breadcrumbs.php и копируем туда нижеприведенный код:
<font size="1"><?php
$category = get_the_category();
$current_cat = $category[0]->cat_ID;
?>
<?php if (is_single()) { ?>
<div id="breadcrumbs">Вы здесь : <a href="<?php echo esc_url( home_url() ); ?>" title="<?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a> » <?php $category = get_the_category(); if ($category) { echo '<a href="' . get_category_link( $category[0]->term_id ) . '" title="' . sprintf( __( "Все материалы в рубрике %s" ), $category[0]->name ) . '" ' . '>' . $category[0]->name.'</a> '; } ?> » <?php the_title(); ?></div>
<?php } else if (is_home()) { ?>
<div id="breadcrumbs">Вы здесь : <a href="<?php echo esc_url( home_url() ); ?>" title="<?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a></div>
<?php } else if (is_category()) { ?>
<div id="breadcrumbs">Вы здесь : <a href="<?php echo esc_url( home_url() ); ?>" title="<?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a> » <?php single_cat_title(); ?></div>
<?php } else if (is_tag()) { ?>
<div id="breadcrumbs">Вы здесь : <a href="<?php echo esc_url( home_url() ); ?>" title="<?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a> » <?php single_cat_title(); ?></div>
<?php } else if (is_page()) { ?>
<div id="breadcrumbs">Вы здесь : <a href="<?php echo esc_url( home_url() ); ?>" title="<?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a> » <?php the_title(); ?></div>
<?php } else if (is_archive()) { ?>
<div id="breadcrumbs">Вы здесь : <a href="<?php echo esc_url( home_url() ); ?>" title="<?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a> » <?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?>
<?php /* If this is a category archive */ if (is_day()) { ?>
Архивы за день <?php the_time('F jS, Y'); ?>
<?php /* If this is a monthly archive */ } elseif (is_month()) { ?>
Архивы за месяц <?php the_time('F Y'); ?>
<?php /* If this is a yearly archive */ } elseif (is_year()) { ?>
Архивы за год <?php the_time('Y'); ?>
<?php } ?></div>
<?php } else if (is_search()) { ?>
<div id="breadcrumbs">Вы здесь : <a href="<?php echo esc_url( home_url() ); ?>" title="<?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a> » Результаты поиска " <?php the_search_query(); ?> "</div>
<?php } else { ?>
<?php { /* nothing */ } ?>
<?php } ?></font>
Файл breadcrumbs.php загружаем в папку с используемой темой на сайте. Осталось его подключить в нужном месте шаблона. Делается это нехитрой строчкой кода:
<?php include (TEMPLATEPATH . '/breadcrumbs.php'); ?>
Этот код нужно подключить для страниц или записей – в файлах page.php и single.php соответственно в то место, где должны показываться “хлебные крошки”.
ВТОРОЙ ВАРИАНТ
Второй вариант – это “хлебные крошки” с структурированными данными, оформленные согласно микроразметке Data-Vocabulary.org (поддерживается некоторыми поисковыми системами). Это позволит, например, получить лучшее представление в поисковой выдаче Google. Пример:
Функция выглядит следующим образом (открываем файл functions.php и после <? php вставляем):
/*** Функция хлебных крошек ***/
function breadcrumbs_new() {
$seozona_home = 'Главная';// текст главной ссылки
$seozona_last_crumb = 1; // 0 - не показывать название текущей статьи/страницы/рубрики
$seozona_between = ' » '; //символ разделителя
$seozona_from= '<span typeof="v:Breadcrumb"><strong class="breadcrumb_last" property="v:title">';
$seozona_to = '</strong></span>';
global $post;
$seozona_link_to_home = home_url('/');
$seozona_from_court = '<span typeof="v:Breadcrumb">';
$seozona_to_court = '</span>';
$seozona_link_rdf = ' rel="v:url" property="v:title"';
$seozona_path = $seozona_from_court . '<a' . $seozona_link_rdf . ' href="%1$s">%2$s</a>' . $seozona_to_court;
$seozona_superior = $descendant = $post->post_parent;
$seozona_initial_page = get_option('page_on_front');
if (is_home() || is_front_page()) {
echo '<div class="block-crumbs"><a href="'.$seozona_link_to_home.'">' . $seozona_home . '</a></div>';
} else {
echo '<div class="block-crumbs" xmlns:v="http://rdf.data-vocabulary.org/#">';
{
echo '<span typeof="v:Breadcrumb"><a href="'.$seozona_link_to_home.'" rel="v:url" property="v:title">' . $seozona_home . '</a></span>';
if ($seozona_initial_page == 0 || $seozona_superior != $seozona_initial_page) echo $seozona_between;
}
if ( is_category() ) {
$this_category = get_category(get_query_var('cat'), false);
if ($this_category->parent != 0) {
$category = get_category_parents($this_category->parent, TRUE, ' ' .$seozona_between. ' ');
if ($seozona_last_crumb == 1) $category = preg_replace("#^(.+)$seozona_between$#", "$1", $category);
$category = str_replace('<a', $seozona_from_court . '<a' . $seozona_link_rdf, $category);
$category = str_replace('</a>', '</a>' . $seozona_to_court, $category);
echo $category;
}
if ($seozona_last_crumb == 1) echo $seozona_from. sprintf(' Категория "' . single_cat_title('', false) . '"') .$seozona_to;
} elseif ( is_search() ) {
echo $seozona_from. sprintf('Результаты поиска для "' . get_search_query() . '"') .$seozona_to;
} elseif ( is_day() ) {
echo sprintf($seozona_path, get_year_link(get_the_time('Y')), get_the_time('Y')) .$seozona_between;
echo sprintf($seozona_path, get_month_link(get_the_time('Y'),get_the_time('m')), get_the_time('F')) .$seozona_between;
echo $seozona_from. get_the_time('d') .$seozona_to;
} elseif ( is_month() ) {
echo sprintf($seozona_path, get_year_link(get_the_time('Y')), get_the_time('Y')) .$seozona_between;
echo $seozona_from. get_the_time('F') .$seozona_to;
} elseif ( is_year() ) {
echo $seozona_from. get_the_time('Y') .$seozona_to;
} elseif ( is_single() && !is_attachment() ) {
if ( get_post_type() != 'post' ) {
$post_specimen = get_post_type_object(get_post_type());
$sleaze = $post_specimen->rewrite;
printf($seozona_path, $seozona_link_to_home. '/' . $sleaze['sleaze'] . '/', $post_specimen->labels->singular_name);
if ($seozona_last_crumb == 1) echo $seozona_between .mayak_from. get_the_title() .$seozona_to;
} else {
$cat = get_the_category(); $cat = $cat[0];
$category = get_category_parents($cat, TRUE, ' ' .$seozona_between. ' ');
if ($seozona_last_crumb == 0) $category = preg_replace("#^(.+)$seozona_between$#", "$1", $category);
$category = str_replace('<a', $seozona_from_court . '<a' . $seozona_link_rdf, $category);
$category = str_replace('</a>', '</a>' . $seozona_to_court, $category);
echo $category;
if ($seozona_last_crumb == 1) echo $seozona_from. get_the_title() .$seozona_to;
}
} elseif ( !is_single() && !is_page() && get_post_type() != 'post' && !is_404() ) {
$post_specimen = get_post_type_object(get_post_type());
echo $seozona_from. $post_specimen->labels->singular_name .$seozona_to;
} elseif ( is_attachment() ) {
$superior = get_post($seozona_superior);
$cat = get_the_category($superior->ID); $cat = $cat[0];
if ($cat) {
$category = get_category_parents($cat, TRUE, ' ' .$seozona_between. ' ');
$category = str_replace('<a', $seozona_from_court . '<a' . $seozona_link_rdf, $category);
$category = str_replace('</a>', '</a>' . $seozona_to_court, $category);
echo $category;
}
printf($seozona_path, get_permalink($superior), $superior->post_title);
if ($seozona_last_crumb == 1) echo $seozona_between .$seozona_from. get_the_title() .$seozona_to;
} elseif ( is_page() && !$seozona_superior ) {
if ($seozona_last_crumb == 1) echo $seozona_from. get_the_title() .$seozona_to;
} elseif ( is_page() && $seozona_superior ) {
if ($seozona_superior != $seozona_initial_page) {
$breadcrumbs = array();
while ($seozona_superior) {
$page = get_page($seozona_superior);
if ($seozona_superior != $seozona_initial_page) {
$breadcrumbs[] = sprintf($seozona_path, get_permalink($page->ID), get_the_title($page->ID));
}
$seozona_superior = $page->post_parent;
}
$breadcrumbs = array_reverse($breadcrumbs);
for ($i = 0; $i < count($breadcrumbs); $i++) {
echo $breadcrumbs[$i];
if ($i != count($breadcrumbs)-1) echo $seozona_between;
}
}
if ($seozona_last_crumb == 1) {
if ($descendant != 0 && $descendant != $seozona_initial_page) echo $seozona_between;
echo $seozona_from. get_the_title() .$seozona_to;
}} elseif ( is_tag() ) {
echo $seozona_from. sprintf('Записи с меткой "%s"', single_tag_title('', false)) . $seozona_to;
} elseif ( is_author() ) {
global $author;
$userdata = get_userdata($author);
echo $seozona_from. sprintf('Записи автора за %s', $userdata->display_name) . $seozona_to;
} elseif ( is_404() ) {
echo $seozona_from. 'Ошибка 404' . $seozona_to;
} 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 '</div>';}} /*** Конец хлебных крошек ***/
Теперь в нужное место шаблона сайта на WordPress (как в правило, в файл single.php) нужно вставить строчку вызова функции:
<? if(function_exists('breadcrumbs_new')) { breadcrumbs_new(); }?>
“Хлебные крошки” на WordPress без использования плагина готовы. Enjoy!
