Wordpress. Вывод в меню рубрик и заголовков записей
Подскажите как можно реализовать меню с записями, чтобы была видна иерархия рубрик, но при этом сразу указывались ссылки на записи? wp_list_categories выводит почти то, что нужно, то есть рубрики в меню есть, но сами записи он не выводит. Возможно есть другая функция для подобного? Заранее благодарен!
Ответы (1 шт):
Для двухуровневой структуры (рубрика -> подрубрики) задачу можно решить следующим образом (для многоуровневой логика будет та же, просто больше проверок на вложенность):
<?php $categories = get_categories(); /*получаем все рубрики*/ ?>
<ul>
<?php foreach($categories as $category): ?>
<?php if($category->parent == 0): /*проверяем, является ли рубрика родительской*/ ?>
<li><a href="<?php echo get_category_link($category->term_id) ?>"><?php echo $category->name; /* выводим ссылку и название */ ?></a>
<?php $posts = get_posts('category='.$category->term_id); if($posts): /*проверяем, есть ли посты у родительской рубрики, и если есть, выводим*/ ?>
<ul>
<?php foreach ($posts as $post): ?>
<li><em><small><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></small></em></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<?php $sub_categories = get_categories(['parent' => $category->term_id]); if($sub_categories): /*проверяем, есть ли у рубрики подрубрики, и если есть, выводим*/ ?>
<ul>
<?php foreach($sub_categories as $sub_category): ?>
<li><a href="<?php echo get_category_link($sub_category->term_id) ?>"><?php echo $sub_category->name; ?></a>
<?php $sub_posts = get_posts('category='.$sub_category->term_id); if($sub_posts): /*аналогичная история с постами подрубрик*/ ?>
<ul>
<?php foreach ($sub_posts as $post): ?>
<li><em><small><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></small></em></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</li>
<?php endif; ?>
<?php endforeach; ?>
<ul>
Тут важно понимать, что если одна и та же запись находится в нескольких рубриках/подрубриках, то ссылка на неё будет продублирована в каждой из них (т.е. по идее запись должна иметь только одну рубрику или подрубрику).
И если у родительских рубрик есть свои записи, то в меню ссылки на них будут выводиться на одном уровне со ссылками на подрубрики. Понятно, что стилями можно отделить одно от другого (я даже в разметке добавил теги <em><small>), но с т.з. восприятия всё равно это будет выглядеть в меню довольно странно.
