@ratyk

Как вывести подрубрику рубрики пользовательской таксономии?

В общем, надо вывести подрубрики первого уровня текущей рубрики пользовательской таксономии, но не в виде листа, а в некоторой контролируемой верстке, где я смогу размещать его куда угодно, а если подрубрик нет, то выводить уже посты привязанные к нему. Перерыл множество контента, но не смог найти того что искал. Помогите пожалуйста.
Как я представляю себе этот код:
if (если есть подрубрика) {
вывод подрубрик;
}
else {
if ( have_posts() ) : while (have_posts()) : the_post(); и т.д.
}
  • Вопрос задан
  • 794 просмотра
Решения вопроса 2
azerphoenix
@azerphoenix
Java Software Engineer
Здравствуйте!
Была у меня раньше похожая задача...
Вот, простой скелет того, что вы хотите:
<?php 
$currentTerm = get_queried_object();
$children = get_term_children($currentTerm -> term_id, 'MY_TAXONOMY');
if($children): ?>
  <?php 
        $args = array(
          'taxonomy' => 'MY_TAXONOMY',
          'hide_empty' => false,
          'depth' => 1,
          'child_of' => get_queried_object()->term_id
        );
        $terms = get_terms( $args );
        $count = 1;
  ?>

  <?php foreach ($terms as $term): ?>

    <a href="<?php echo $term->slug ?>"><?php echo $term->name ?></a>

  <?php endforeach; ?>

  <?php else : ?>

    <?php 
    	$postCount = 1;
      $args = array(
        'posts_per_page' => -1,
        'MY_TAXONOMY' => $currentTerm->name
      );

      $query = new WP_Query( $args );
      if ($query->have_posts()) : 
        while ($query->have_posts()) : $query->the_post(); ?>
            <a href="<?php the_permalink() ?>">
                  <div class="title"><?php the_title(); ?></div>
            </a>

      <?php endwhile; ?>
      <?php endif; ?>

<?php endif;?>


MY_TAXONOMY - моя кастомная таксономия. Вы поменяйте на свой вариант или используйте дефолтную таксономию рубрик.

В первой части мы получаем get_queried_object(); и смотрим есть ли дочерние рубрики, если есть, то выводим их, а если нет (ветка else ), то выводим записи
Ответ написан
@ratyk Автор вопроса
Заготовки лучше и не мог представить. По шаманил чуток, подставил под себя и получился такой код, вдруг кому пригодится:

<?php 
$currentTerm = get_queried_object();
$children = get_term_children($currentTerm -> term_id, 'catalogs');
if($children): ?>
  <?php 
        $args = array(
          'taxonomy' => 'catalogs',
          'hide_empty' => 1,
          'depth' => 1,
          'parent' => get_queried_object()->term_id
        );
        $terms = get_terms( $args );
        $count = 1;
  ?>

  <?php foreach ($terms as $term): ?>

    <a href="<?php echo get_post_type_archive_link('catalog'); echo $term->slug ?>"><?php echo $term->name ?></a>
  <?php endforeach; ?>

  <?php else : ?>
	<?php  if ( have_posts() ) :  while (have_posts()) : the_post();?>
		<h2><?php the_title(); ?></h2>
	<?php endwhile;?>
	<?php endif;?>
<?php endif;?>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы