Задача с виду очень простая, но я покажу как отобразить только подкатегории и подстраницы родительского пункта без использования стандартного меню. В некоторых проектах — это просто необходимо.
Итак, выводим подстраницы родительской записи:
<?php // выводим подстраницы $args = array( 'post_parent' => get_the_ID(), 'post_type' => 'page', 'numberposts' => -1, 'post_status' => 'publish' ); $children = get_children( $args, $output ); ?> <?php if (!empty($children)):?> <div class="category_list"> <?php foreach($children as $dest){ $permalink = get_permalink($dest->ID); echo "<div class='category_list_item'><a href='{$permalink}'>" . $dest->post_title . "</a></div>"; }?> </div> <?php endif; wp_reset_query(); ?>
UPD 17.10.2015 — Вывод подкатегорий родительской рубрики (рубрики без записей не выводятся):
<?php $i=1; $cat = get_query_var('cat'); $categories = get_categories('parent='.$cat.'&hide_empty=0'); foreach ($categories as $category) { $i++; } if ($i > 1) { echo "<div class=\"categories\"><ul>"; foreach ($categories as $category) { ?> <li><a href="<?php echo get_category_link($category->term_id); ?>" ><?php echo $category->name; ?></a></li> <?php } echo "</ul></div>"; } else { $pcat = get_category(get_query_var('cat'),false); $pcatid = $pcat->category_parent; $categories = get_categories('parent='.$pcatid.'&hide_empty=0'); echo "<div class=\"categories\"><ul>"; foreach ($categories as $category) { ?> <li<?php if ($category->term_id == $cat) { ?> class="current"<?php } ?>><a href="<?php echo get_category_link($category->term_id); ?>" ><?php echo $category->name; ?></a></li> <?php } echo "</ul></div>"; } ?>
Если у вас есть более простые решения прошу поделиться ими в комментариях.
если перейти в саму запись, то все пропадает.. выводятся все рубрики
Увы, как сделать так, чтобы список не пропадал я не могу подсказать. Как вариант скрыть меню условием при просмотре записи.