Исключить категории wp без назначенных сообщений

У меня есть пользовательский тип сообщения «консультанты» и пользовательская таксономия «consultants_category». Мне нужно вывести все пользовательские таксономии (категории), которым назначены сообщения. Но приведенный выше код выводит все таксономии, включая те, которым не назначены сообщения — https://prnt.sc/zr96jh Пожалуйста, помогите мне улучшить этот код. Спасибо.

    <div class="cp_allconsultants-l1_list_new">
        <?php
            $terms = get_terms(array(
                        'term' => 'consultants_category',

            ));
            foreach( $terms as $term ):
            ?>    
            <div class="l2posts_by_cat">                      
                <h3><?php echo $term->name; ?></h3>                          
                <ul>
                  <?php                         
                      $posts = get_posts(array(
                        'post_type' => 'consultants',
                        'taxonomy' => $term->taxonomy,
                        'term' => $term->slug,                                  
                        'nopaging' => true, 
                      ));
                      foreach($posts as $post): 
                        setup_postdata($post); 
                  ?>        
                      <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>    
                    <?php endforeach; ?>
                </ul>
            </div>                                                       
        <?php endforeach; ?>
    </div>

person Yurii    schedule 16.02.2021    source источник


Ответы (1)


ты пробовал добавить

'hide_empty' => true,

получить_термины?

$terms = get_terms(array(
    'term' => 'consultants_category',
    'hide_empty' => true,
));
person Andrei Filonov    schedule 16.02.2021
comment
да, я пытался. Когда я добавляю это, я получаю беспорядок категорий со всех языковых версий (это многоязычный сайт) и некоторые другие данные - prnt. sc/zraabk - person Yurii; 16.02.2021
comment
Это выглядит как полный беспорядок... Но на самом деле этого не должно быть, похоже, вы запутались в разметке на странице, может быть, какие-то незакрытые теги/кавычки... Что, если вы попытаетесь закомментировать второй цикл для теста? - те, которые проходят через посты? и посмотреть, что будет на экране? Теоретически должен быть просто список категорий (названий). Вы также можете попытаться экранировать имя термина ‹h3›‹?php echo esc_html ($term-›name); ?›‹/h3› - person Andrei Filonov; 16.02.2021