Intereting Posts
Что такое действие, которое удаляет термин таксономии из бэкэнд? И как удалить прежний термин id перед его удалением? Производительность на WPMS wp_generate_attachment_metadata для файлов без изображений Автоматическое добавление дочерних страниц в навигационное меню Невозможно просмотреть «Дополнительная информация» на всплывающих плагинах, и Authy всплывает Использование пользовательских параметров значения в PHP Фильтр медиа-библиотеки возвращает неопределенную функцию get_current_screen Как удалить ссылку «+ Добавить новую категорию» из категории «Метабокс» запрос на поиск «родительских» сообщений CPT A при фильтрации «дочерних» сообщений CPT B remove_filter ('the_content', 'wpautop'); только для определенных типов сообщений Пользовательский тип add Transitions Добавьте функциональность надписи в пользовательскую тему WordPress Локальная разработка WordPress с докерером-сочинением внезапно нарушена? Woocommerce – Показать случайное изображение продукта из определенной категории продуктов Вывести текст перед категорией

Шаблон таксономического архива должен иметь условную логику для отображения дочерних категорий

У меня есть пользовательские пост-типа «загрузки», и в меню загрузки у меня есть категории загрузки, имя таксономии «downloadcats».

На странице «Мои загрузки» используется шаблон страницы, в котором перечислены все категории в таксономии «downloadcats», это показывает только родительские категории. Когда нажата категория, она использует шаблон архива таксономии (taxonomy-downloadcats.php), и то, что я пытаюсь сделать, – это условно сказать, есть ли дочерние категории, отображать список, иначе показывать список сообщений.

В моей таксономии-downloadcats.php на данный момент у меня есть следующее:

<?php $term = get_queried_object(); $children = get_terms( $term->taxonomy, array( 'parent' => $term->term_id, 'hide_empty' => false ) ); // print_r($children); // uncomment to examine for debugging if($children) { // get_terms will return false if tax does not exist or term wasn't found. echo 'show child categories'; } else { if (have_posts()) : while (have_posts()) : the_post(); ?> <li><?php the_post_thumbnail('post-image'); ?> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endwhile; ?> <?php endif; ?> <?php } ?> 

Условное утверждение корректно, как если бы у категории не было детей, у которых есть сообщения, и если есть дочерние категории, в нем отображаются «показать дочерние категории», мне нужно знать, что там происходит, чтобы показать родительские дети.

благодаря

Вы здесь очень близки, вы почти можете почувствовать запах. Вот как вы можете завершить свой код:

У вас уже есть все ваши дочерние термины, хранящиеся в массиве с именем $children . Чтобы отобразить их, вам просто нужен цикл foreach . Что-то подобное сделает трюк. (Вы можете просто расширить это, просто выполните var_dump или print_r чтобы получить доступные объекты, которые вы можете использовать)

 foreach ( $children as $child ) { echo $child->name; //very basic, display term name } 

Если вам нужно получить ссылку на этот термин, используйте get_term_link

Еще раз спасибо Pieter, работая над этим в течение 2 дней … Полный код для всех, кому он может понадобиться в будущем:

 <?php $term = get_queried_object(); $children = get_terms( $term->taxonomy, array( 'parent' => $term->term_id, 'hide_empty' => false ) ); // print_r($children); // uncomment to examine for debugging if($children) { // get_terms will return false if tax does not exist or term wasn't found. foreach ( $children as $child ) { $imgurl = z_taxonomy_image_url($category->term_id); echo '<li><img src="'. $imgurl . '"/><a href="' . esc_attr(get_term_link($child, 'downloadcats')) . '" rel="bookmark">' . $child->name . '' . '' . $child->description . '</a></li>'; } } else { if (have_posts()) : while (have_posts()) : the_post(); ?> <li><?php the_post_thumbnail('post-image'); ?> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endwhile; ?> <?php endif; ?> <?php } ?> 

Это дополнительная очистка вышеупомянутого решения, чтобы сделать его более универсальным …

 <?php $term = get_queried_object(); $children = get_terms( $term->taxonomy, array( 'parent' => $term->term_id, 'hide_empty' => false ) ); // print_r($children); // uncomment to examine for debugging if($children) { ?> // this category has a child category <?php } else { ?> // this category doesn't have a child category <?php } ?>