Вложенные пользовательские таксономии | Неправильные сообщения при запросе

У меня есть две пользовательские таксономии в wordpress, у которых есть сообщения, прикрепленные к ним, например, следующий пример:

Таксономия A
Таксономия B
Сообщение 1
Сообщение 2

Каждая должность имеет две связанные с ней таксономии, зависит от необходимости. Мне нужно вывести, что для каждой таксономии A существует таксономия B и для каждой таксономии B есть X количество сообщений.

Я хочу достичь этого в массивах, чтобы в конечном итоге вывести его в формате JSON, и это то, что мне удалось написать и работать, однако результаты неверны:

$TaxanomiesA = get_terms("TaxanomyA", array('hide_empty' => false)); $TaxanomiesB = get_terms("TaxanomyB", array('hide_empty' => false)); $TaxanomyAArray = array(); $TaxanomyBArray = array(); $postssArray = array(); foreach($TaxanomiesA as $TaxanomyA) { $TaxanomyAArray[] = array ( 'id' => $TaxanomyA->term_id, 'name' => $TaxanomyA->name, 'TaxanomyB' => $TaxanomyBArray ); $args = array(//Arguments); $posts = get_posts( $args ); foreach($TaxanomiesB as $TaxanomyB){ $TaxanomyBArray[] = array ( 'id' => $TaxanomyB->term_id, 'name' => $TaxanomyB->name, 'posts' => $postssArray ); foreach($posts as $post){ $postssArray[] = array ( 'id' => $post->ID, 'name' => $post->title ); } } } $jsonOutput=array( 'JSON' => $TaxanomyAArray ); echo json_encode($jsonOutput, JSON_UNESCAPED_SLASHES); } 

Это результат, который я хочу достичь:

 { "JSON":[ { "id":"1", "name":"TaxonomyA Name", "Taxonomy":[ { "id":"1", "name":"TaxonomyB Name", "posts":[ { "id":"1", "name":"Post Title" }, { "id":"2", "name":"Post Title 2" } ] } ] } ] } 

Проблема в том, что функция get_posts вызывается за пределами цикла $TaxanomiesB . Переместите его внутрь и убедитесь, что текущий $TaxanomyB используется в $ args в get_posts .

Добавьте данные в $TaxanomyAArray и $TaxanomyBArray в конце каждого цикла каждый, иначе первый объект в массиве будет пустым.

Вам также необходимо повторно инициализировать переменные $array в начале каждого родительского цикла, иначе вы получите повторения каждого столбца / таксономии несколько раз за каждый набор (например, 'a' => (1 => (foo, bar), 2 => (foo, bar, foo, bar)), 'b' => 1 => (foo, bar, foo, bar, foo, bar) … и т. д.).

 $TaxanomiesA = get_terms("TaxanomyA", array('hide_empty' => false)); $TaxanomiesB = get_terms("TaxanomyB", array('hide_empty' => false)); $TaxanomyAArray = array(); foreach($TaxanomiesA as $TaxanomyA) { $TaxanomyBArray = array(); foreach($TaxanomiesB as $TaxanomyB){ $args = array(//Arguments with $TaxonomyB); $posts = get_posts( $args ); $postsArray = array(); foreach($posts as $post){ $postsArray[] = array ( 'id' => $post->ID, 'name' => $post->title ); } $TaxanomyBArray[] = array ( 'id' => $TaxanomyB->term_id, 'name' => $TaxanomyB->name, 'posts' => $postsArray ); } $TaxanomyAArray[] = array ( 'id' => $TaxanomyA->term_id, 'name' => $TaxanomyA->name, 'TaxanomyB' => $TaxanomyBArray ); } $jsonOutput = array( 'JSON' => $TaxanomyAArray ); echo json_encode($jsonOutput, JSON_UNESCAPED_SLASHES);