Как получить только родительские категории без дочерних
Здравствуйте!
Получить категории оказалось немного сложнее чем казалось 🙂
Имеется следующий код:
get_categories(array('taxonomy' => 'category', 'number' => 2, 'include' => '123'))
Нужно получить 2 родительские категории из таксономии category (в род. категории есть дочерние).
В примере кода использовал функцию include, родительская категория показывается, но вместе с ней все ее вложения, все дочерние категории.
Нужно получить только родительские.
Спасибо.
я бы предпочел использовать функцию get_terms()
Например:
$terms = get_terms('category', 'orderby=count&hide_empty=0&parent=123'); $count = count($terms); if($count > 0){ echo "<ul>"; foreach ($terms as $term) { echo "<li>".$term->name."</li>"; } echo "</ul>"; }
Прошу прощения, не написал раньше что у меня селект.
Через get_terms действительно лучше реализуется, но вот дочерние категории все равно остались.
Вот код:
{var $categories = get_terms('category', 'orderby=count&hide_empty=0&parent=123');} {if isset($categories) && count($categories) > 0} <div class="category"> <select data-placeholder="{__ 'Запрос'}" name="category" class="category default-disabled" style="display: none;"> <option></option> {!= recursiveCategory($categories, $selectedCat, 'category', "")} </select> </div> {/if}
Спасибо.

В php немного разбираетесь? Если да то можете сделать var_dump() переменной в цикле, и там посмотреть в как хранится в объекте переменная с значением родительской категории. Затем сделать проверку на значение этой переменной

Если нужно получить только родительские, начальные категории, то:
$myterms = get_terms( 'taxonomy_name_here', array( 'parent' => 0 ) );
Спасибо)
Как вариант попробуйте так получить дочерние:
<?php $termID = 10; $taxonomyName = "products"; $termchildren = get_term_children( $termID, $taxonomyName ); echo '<ul>'; foreach ($termchildren as $child) { $term = get_term_by( 'id', $child, $taxonomyName ); echo '<li><a href="' . get_term_link( $term->term_id, $term->taxonomy ) . '">' . $term->name . '</a></li>'; } echo '</ul>'; ?>