Хлебные крошки не правильно отображают пути. WordPress
Использую хлебные крошки Dimox Breadcrumbs
Вот что выводит
Страницы расположены так
Нужно чтобы отображалось "Главная - О компании"
Как можно эту ошибку исправить?
Ответы (1 шт):
Честно говоря, я бы Вам советовал установить Breadcrumbs NavXT и не морочить себе голову багфиксами чужого кода (это конечно лично моё субъективное мнение и я его никому не навязываю). Но давайте разберемся что здесь происходит.
Смотрим на проверку в самом начале:
if ( $show_home_link ) {
$position += 1;
echo $home_link;
}
Если у Вас опция $show_home_link = 1;, то показывается ссылка на главную страницу, всегда, но не учтен случай, когда хлебные крошки выводятся на дочерней странице главной страницы, вот и получается что у нас присутствует главная страница 2 раза. Выводится Главная -> Родительская страница текущей (в Вашем случае она и есть главная) -> Текущая страница.
Учтите, что я могу не все учесть и успеть протестировать, но в Вашем случае это должно сработать. Для того чтобы устранить данную проблему, мы можем получить ID главной страницы и не показывать её второй раз в хлебных крошках. Для этого модифицируем код хлебных крошек таким образом:
...
// Находим то место, где выводятся хлебные крошки для дочерней страницы
} elseif ( is_page() && $parent_id ) {
$parents = get_post_ancestors( get_the_ID() );
// Получаем ID главной страницы.
$home_page_ID = get_option( 'page_on_front' );
foreach ( array_reverse( $parents ) as $pageID ) {
// И добавляем нашу строку, где проверяем, если ID родительской страницы == ID домашней страницы, то мы просто переходим к следующей итерации цикла.
if ( $home_page_ID == $pageID ) continue;
$position += 1;
if ( $position > 1 ) echo $sep;
echo sprintf( $link, get_page_link( $pageID ), get_the_title( $pageID ), $position );
}
if ( $show_current ) echo $sep . $before . get_the_title() . $after;
elseif ( $show_last_sep ) echo $sep;
}
...

