У меня есть пользовательская иерархическая таксономия, пример ниже:
Filmmaking(?)
--->Production(1)
--->Post-Production (?)
------->VFX (3)
------->Editing(2)
--->Distribution(0)
Я хочу, чтобы счетчик рядом с Filmmaking
был счетчиком всех сообщений во всех его дочерних терминах Тем не менее, вложенными они будут. Так что в этом примере это должно читаться как 6 ;
- Производство 1 сообщение
- VFX 3 Сообщения
- Редактирование 2 сообщений.
Аналогично, Post-production
будет читать 5
В моем текущем коде счетчик вместо этого подсчитывает, сколько дочерних терминов имеют посты (так что 3 для кинопроизводства), а не сколько постов у них есть .
$getParents = [
'taxonomy' => $taxonomy,
'parent' => 0,
'number' => 0,
'hide_empty' => false
];
$parent_terms = get_terms( $getParents );
foreach ( $parent_terms as $parent_term ) {
if ( hasChildren($parent_term) ) {
printIndexHasChildren( $parent_term);
echo '<ul>';
echo '<li><a id="'.$parent_term->slug.'" href="'. get_term_link( $parent_term ) .'"> All '. $parent_term->name.'</a></li>';
//Loop through child items and output name
foreach ( get_terms( 'kernal_category', array( 'hide_empty' => false, 'parent' => $parent_term->term_id ) ) as $child_term) {
if ( hasChildren( $child_term ) ) {
printIndexHasChildren( $child_term);
echo '<ul>';
//If child has second child
foreach ( get_terms( 'kernal_category', array( 'hide_empty' => false, 'parent' => $child_term->term_id ) ) as $second_child_term) {
printIndexNoChildren( $second_child_term );
}
echo '</ul>';
echo '</li>';
} else {
printIndexNoChildren( $child_term );
}
}
echo '</ul>';
echo '</li>';
} else {
printIndexNoChildren( $parent_term);
}
}
} else {
... do something
}
}
Две функции, которые на самом деле записывают меню:
//Printing Independent List Elements
function printIndexNoChildren($term) {
echo '<li><a id="'.$term->slug.'" href="'. get_term_link( $term ) .'">'. $term->name.' ('.$term->count.')</a></li>';
}
//Print List Elements With Children
function printIndexHasChildren($term) {
echo '<li><a id="'.$term->slug.'" href="'. get_term_link( $term ) .'">'. $term->name.' ('.$term->count.')</a>';
}