Intereting Posts
Могу ли я отображать как результат пользовательского поиска Google, так и поисковый запрос WordPress на странице? Почему плагин PhotoSmash не работает с wp_query? Как включить частичное из каталога ниже каталога темы wordpress? Как скрыть сообщение из виджета «Последние сообщения»? Создание виджета Multisite Dashboard Изменить постоянную ссылку автора с помощью htaccess? Мне нужно иметь два поля по 1-5 звездам, только редактируемые админами. Какой плагин я должен использовать? Возврат из новой версии WordPress к более старой версии Реверсивный домен «sharding» с htaccess загрузить отфильтрованные сообщения из базы данных Форма контакта 7: wp_mail не работает после обновления до 4.6 Как разрешить комментарий модерации для сообщений других пользователей? Пользовательский тип полевого массива типа Post Как изменить сопутствующие продукты image thumbnail Woocommerce? wp_update_post не обновляет категорию

Как отобразить дочерний термин текущей таксономии родителя текущего термина?

Я хотел бы отобразить список детских терминов в соответствии с моей нынешней таксономией.

Название таксономии = 'курс'

  • Photoshop (= детский термин)

    • ps-thematic # 1 (= детский ребенок)
    • пс-тематическая # 2
  • After Effects

    • ае-тематическая # 1

    • ае-тематическая # 2

  • Другой курс

    • ZZ-тематическая # 1

Итак, в моей taxonomy-course-photoshop.php , я бы хотел показать ps-thematic # 1, ps-thematic # 2 и т. Д.
Я нашел много вопросов и ответов на эту тему.
Я попробовал много их.
Безуспешно…
Итак, теперь я просто чувствую себя очень запутанным между get_terms , get_children_term . Или $args= array('parent' => $this_term->term_id,...}

Моей последней попыткой была эта тема , которая кажется идеальной, но я получаю сообщение об ошибке: Catchable fatal error: Object класса WP_Error не может быть преобразован в строку в

Спасибо за любую помощь.

Solutions Collecting From Web of "Как отобразить дочерний термин текущей таксономии родителя текущего термина?"

Я думаю, вы можете просто использовать get_terms() для этого. Это всего лишь некоторый минимальный код, я думаю, вы также хотите добавить постоянные ссылки, описание термина или другие вещи.

Однако я просто протестировал этот код (теперь тестировался с таксономией «курс»), и он работает.

Я стараюсь прокомментировать код, когда мы идем:

 // our current taxonomy slug // If you want to get the current taxonomy automatically try using $wp_query->get_queried_object(); $taxonomy = 'course'; // we get the terms of the taxonomy 'course', but only top-level-terms with (parent => 0) $top_level_terms = get_terms( array( 'taxonomy' => $taxonomy, 'parent' => '0', 'hide_empty' => false, ) ); // only if some terms actually exists, we move on if ($top_level_terms) { echo '<ul class="top-level-terms">'; foreach ($top_level_terms as $top_level_term) { // the id of the top-level-term, we need this further down $top_term_id = $top_level_term->term_id; // the name of the top-level-term $top_term_name = $top_level_term->name; // the current used taxonomy $top_term_tax = $top_level_term->taxonomy; // note that the closing </li> is set further down, so that we can add a sub list item correctly echo '<li class="top-level-term"><strong>'.$top_term_name.'</strong>'; // here we get the child-child terms // for this we are using 'child_of' => $top_term_id // I also set 'parent' => $top_term_id here, with this line you will only see this level and no further childs $second_level_terms = get_terms( array( 'taxonomy' => $top_term_tax, // you could also use $taxonomy as defined in the first lines 'child_of' => $top_term_id, 'parent' => $top_term_id, // disable this line to see more child elements (child-child-child-terms) 'hide_empty' => false, ) ); // start a second list element if we have second level terms if ($second_level_terms) { echo '<ul class="second-level-terms">'; foreach ($second_level_terms as $second_level_term) { $second_term_name = $second_level_term->name; echo '<li class="second-level-term">'.$second_term_name.'</li>'; }// END foreach echo '</ul><!-- END .second-level-terms -->'; }// END if echo '</li><!-- END .top-level-term -->'; }// END foreach echo '</ul><!-- END .top-level-terms -->'; }// END if 

Также попробуйте использовать print_r($top_level_term); например, в первом цикле foreach. С этим вы можете увидеть всю информацию, которая поставляется с одним единственным термином.

Я бы сказал, что вы должны использовать этот код в шаблоне обычного таксономического архива и не использовать файл taxonomy-course-photoshop.php . Потому что вам нужен отдельный файл шаблона для каждого отдельного термина, и это нецелесообразно.

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


Обновление: да, вы можете получить текущую таксономию и термизировать данные автоматически.

Если вы работаете внутри taxonomy-course.php вы можете попробовать это:

  //get the current object $current = $wp_query->get_queried_object(); // try var_dump($current); to see all available data! // return the ID of the current term // ie ID of term "Photoshop" is "26", so we get "26" if we are viewing "Photoshop" $current_term_id = $current->term_id; // return the nicename of the current term // ie returns "Photoshop" // or "ps-thematic#1" if we are on a child term of "Photoshop" $current_name = $current->name; // returns the current taxonomy slug we are in // ie it will return "course" $current_taxonomy = $current->taxonomy; // returns the ID of the parent, if we have a parent // ie if we are viewing "ps-thematic#1" it will return the ID of "Photoshop", 26 // if we are viewing "Photoshop", it will return 0, because "Photoshop" is a top level term #$current_parent = $current->parent; // display name of current term, ie "Photoshop" echo '<strong>'.$current_name.'</strong>'; $sub_terms = get_terms( array( 'taxonomy' => $current_taxonomy, 'child_of' => $current_term_id, 'hide_empty' => false, ) ); // only start is some sub terms exist if ($sub_terms) { // try var_dump($sub_terms); to see all available data! echo '<ul class="sub-terms">'; foreach ($sub_terms as $sub_term) { // try var_dump($sub_term); to see all available data! // only show the name for the example, "ps-thematic#1" echo '<li>'.$sub_term->name.'</li>'; }// END foreach echo '</ul><!-- END .sub-terms -->'; }// END if 

Поэтому, если мы просматриваем «Фотошоп», указанная выше функция показывает ТОЛЬКО:
Photoshop
– ps-thematic # 1
– ps-thematic # 2

Он НЕ показывает «After Effects» или детей, ae-thematic # 1 или ae-thematic # 2.

Также посмотрите с помощью var_dump($current); , Вы увидите всю доступную информацию. Как вы увидите выше, например, я оставил некоторый код в функции $current_parent = $current->parent; ,
Например, вы можете проверить:

  // check if current parent is not = 0 if ($current_parent != '0') { // code if parent is NOT 0 // that always means that we are viewing a child } else { // code if parent is 0 // if parent is 0 we are sure we are on a top level } 

Но есть еще информация / данные в $current которые вы можете использовать. Надеюсь, это поможет.