Рубрика: WordPress » Навигация »

Иерархия постоянных страниц и breadcrumbs (хлебные крошки)


Результат работы функции wp_list_pages() по умолчаниюИерархию постоянных страниц образуют дочерние страницы.

Функция wp_list_pages по умолчанию выводит иерархию страниц в виде древовидного списка ссылок на все постоянные страницы вместе с их дочерними страницами с заголовком "Страницы".

Если считать, что дочерние страницы - это подразделы, посетителя сайта могут заинтересовать эти подразделы, поэтому добавим в пользовательский шаблон страницы или в шаблон страницы page.php такой код после строки с вызовом функции  the_content():

Вывод ссылок на дочерние страницы

// дочерние страницы текущей страницы
<?php
 $postID=$post->ID;
 $children = wp_list_pages('title_li=&child_of='. $postID .'&echo=0');
 if ($children) { ?>
  <h3>В разделе "<?php the_title() ?>":</h3>
  <ul>
   <?php echo $children; ?>
  </ul>
<?php }?>

Кроме того, на других дочерних  страницах родительской страницы могут рассматриваться родственные темы, также интересные посетителю сайта, поэтому добавим:

Вывод ссылок на дочерние страницы той же самой родительской страницы

// дочерние страницы родительской страницы
 <?php
 $parentID= $post->post_parent; // return the ID of the parent post
 if($parentID){  //$parentID =$ancs[0];
 $siblings=wp_list_pages('depth=1&exclude=' . $postID .
                         '&echo=0&child_of=' . $parentID . '&title_li=');
 if ($siblings) {
 echo('<h3>В разделе "'. get_the_title($parentID) .'" также: </h3>');
 ?>
 <ul>
 <?php echo $siblings; ?>
 </ul>
<?php  }
}?>

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

Остается только добавить навигацию вверх по иерархии страниц - breadcrumbs (хлебные крошки).  Для этого используем функцию get_post_ancestors(), которая возвращает предков заданной страницы, перед вызовом функции  the_content():

<?php
 $ancs=get_post_ancestors($post); // array of IDs
 $parentID=$ancs[0];
 if ($parentID){
   $ancs=array_reverse($ancs);
   foreach($ancs as $anc) {
     $anc_title = get_the_title($anc);
     echo '<a href="' . get_permalink($anc). '" title="' .
           $anc_title . '">' . $anc_title . '</a> &raquo; ';
   }
 }
?>

Получаем примерно такой результат:

Опубликовано в рубрике Навигация | с метками , , , , , . |

Еще записи

14 комментариев на «Иерархия постоянных страниц и breadcrumbs (хлебные крошки)»

  1. Екатерина говорит:

    Огромное спасибо! Задолбалась сама писать эту функцию, а тут такое ЩАСЬЕ.... 🙂

  2. Наталья говорит:

    Спасибище... !

  3. Tesla говорит:

    Спасибо!
    1) а как у последнего элемента в хлебных крошках убрать лишние кавычки?
    либо/лучше
    2) отобразить название текущей страницы в последнем элементе хлебных крошек? куда необходимо добавить get_the title();?

    3) если у меня страница записей не на главной, а под нее заточен отдельный шаблон (static page, например, /articles/), то как сделать, чтобы крошки тоже отображались в index.php (я добавил функцию в index, но не выводятся в результате) и чтобы при переходе на запись, страница вывода ленты записей (/articles/) тоже учитывалась?

  4. Tesla говорит:

    Пояснение к пункту "3"

    Сейчас у меня в записях крошки выглядят так:
    Главная » тестовая-запись

    А хотелось бы:
    Главная » Статьи » тестовая-запись

  5. Алексей говорит:

    Добрый день!
    Подскажите, пожалуйста, а как сделать вывод на дочерние, но без поддочерних страниц?
    Пример:
    У вас
    В разделе:
    -Дочерняя 1
    -дочерняя 1.1
    -дочерняя 1.2
    -Дочерняя 2

    а мне нужно
    В разделе:
    -Дочерняя 1
    -Дочерняя 2

    Спасибо!

  6. Den говорит:

    Скажите есть способ вывести хлебные крошки по следующей схеме?
    главная-вторая страница-категория-подкатегория
    Вторая страница выпадает из схемы

    • Admin говорит:

      У страниц (Page) и записей (Post) разные иерархии.
      В этой статье рассматриваются хлебные крошки для страниц, которые имеют родительские и дочерние страницы.
      Категории (иначе говоря, рубрики) могут содержать подкатегории и записи. См. в статье http://mblogm.ru/blog/post-breadcrumbs/ (Хлебные крошки для рубрик и записей блога)

  7. Денис говорит:

    Огромный респект, чуть не убил кучу времени на реализацию задуманного. А тут контрл ц - контрл в

  8. Николай говорит:

    Большое спасибо. Хлебные крошечки красавицы 🙂

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *