Отображение списка определенных категорий по идентификатору

У меня есть список пользовательских идентификаторов таксономии, таких как (1, 2, 3, 10) . Я хочу отобразить список этих указанных категорий по именам, и каждый из них должен иметь свои дочерние элементы:

Европа

  • Франция
  • Германия

Африка

  • Нигерия
  • Южная Африка

Я использую это и как-то это работает, но он показывает только дочерние категории без родительской категории, также важно, чтобы поставить список идентификаторов вместо одного ID (10 в примере)

 $term_id = 10; $taxonomy_name = 'products'; $termchildren = get_term_children( $term_id, $taxonomy_name ); echo '<ul>'; foreach ( $termchildren as $child ) { $term = get_term_by( 'id', $child, $taxonomy_name ); echo '<li><a href="' . get_term_link( $child, $taxonomy_name ) . '">' . $term->name . '</a></li>'; } echo '</ul>'; 

Solutions Collecting From Web of "Отображение списка определенных категорий по идентификатору"

Вы уже на правильном пути; просто добавьте еще один цикл для массива $parent_terms вокруг существующего цикла. Также было бы неплохо проверить, являются ли числа в массиве действительными идентификаторами термина, поэтому вы можете сделать что-то вроде этого:

 $parent_terms = array( 1, 2, 3, 10 ); $taxonomy = 'products'; echo '<ul>'; foreach ( $parent_terms as $parent_term_id ) { $parent_term = get_term_by( 'id', $parent_term_id, $taxonomy ); if ( $parent_term ) { echo '<li><a href="' . get_term_link( $parent_term_id, $taxonomy ) . '">' . $parent_term->name . '</a>'; $child_terms = get_term_children( $parent_term_id, $taxonomy ); if ( $child_terms ) { echo '<ul>'; foreach ( $child_terms as $child_term_id ) { $child_term = get_term_by( 'id', $child_term_id, $taxonomy ); echo '<li><a href="' . get_term_link( $child_term_id, $taxonomy ) . '">' . $child_term->name . '</a></li>'; } // end of child terms loop echo '</ul>'; } // end of $child_terms echo '</li>'; } // end of $parent_term } // end of parent terms loop echo '</ul>'; 

Обновление. Предполагая, что вы используете что-то вроде плагина OptionTree, вы можете заполнить массив $parent_terms следующим образом:

 $parent_terms = array(); // define empty array $term_options = ot_get_option('option-name'); foreach ( $term_options as $term_option_id ) { // convert strings to numbers and save them in $parent_terms array_push( $parent_terms, intval($term_option_id) ); }