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

Подскажите хороший плагин или скрипт для организации "Хлебных крошек" на сайте WordPress

Начальный Asked on 10.12.2014 in Хаки.
Add Comment
1 Answer(s)

Можно обойтись без плагинов. Открываем простой текстовый файл с именем breadcrumbs.php и копируем туда нижеприведенный код:

<font size="1"><?php
$category = get_the_category();
$current_cat = $category[0]->cat_ID;
?>
<?php if (is_single()) { ?>
<div id="breadcrumbs">Вы здесь&nbsp;: <a href="<?php echo esc_url( home_url() ); ?>" title="<?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a> &raquo; <?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> '; } ?> &raquo; <?php the_title(); ?></div>
<?php } else if (is_home()) { ?>
<div id="breadcrumbs">Вы здесь&nbsp;: <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">Вы здесь&nbsp;: <a href="<?php echo esc_url( home_url() ); ?>" title="<?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a> &raquo; <?php single_cat_title(); ?></div>
<?php } else if (is_tag()) { ?>
<div id="breadcrumbs">Вы здесь&nbsp;: <a href="<?php echo esc_url( home_url() ); ?>" title="<?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a> &raquo; <?php single_cat_title(); ?></div>
<?php } else if (is_page()) { ?>
<div id="breadcrumbs">Вы здесь&nbsp;: <a href="<?php echo esc_url( home_url() ); ?>" title="<?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a> &raquo; <?php the_title(); ?></div>
<?php } else if (is_archive()) { ?>
<div id="breadcrumbs">Вы здесь&nbsp;: <a href="<?php echo esc_url( home_url() ); ?>" title="<?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a> &raquo; <?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">Вы здесь&nbsp;: <a href="<?php echo esc_url( home_url() ); ?>" title="<?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a> &raquo; Результаты поиска &quot; <?php the_search_query(); ?> &quot;</div>
<?php } else { ?>
<?php { /* nothing */ } ?>
<?php } ?></font>

Файл breadcrumbs.php загружаем в папку с используемой темой на сайте. Осталось его подключить в нужном месте шаблона. Делается это нехитрой строчкой кода:

<?php include (TEMPLATEPATH . '/breadcrumbs.php'); ?>

Этот код нужно подключить для страниц или записей - в файлах page.php и single.php соответственно в то место, где должны показываться "хлебные крошки".

ВТОРОЙ ВАРИАНТ

Второй вариант - это "хлебные крошки" с структурированными данными, оформленные согласно микроразметке Data-Vocabulary.org (поддерживается некоторыми поисковыми системами). Это позволит, например, получить лучшее представление в поисковой выдаче Google. Пример:

RE: Как сделать хлебные крошки на Wordpress?

Функция выглядит следующим образом (открываем файл functions.php и после <? php вставляем):

/*** Функция хлебных крошек ***/
function breadcrumbs_new() {
$seozona_home = 'Главная';// текст главной ссылки
$seozona_last_crumb = 1; // 0 - не показывать название текущей статьи/страницы/рубрики
$seozona_between = ' &raquo; '; //символ разделителя
$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!

ГУРУ Answered on 10.12.2014.
Add Comment

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.