get_terms - только верхний уровень

13

Я пытаюсь получить только термин высшего уровня:

$cat_args = array(
    'parent '       => 0,
    'number'        => 10,
    'hide_empty'    => false,           
);

$categories = get_terms( 'question_category' , $cat_args); 

Но этот запрос также возвращает все дочерние элементы, я пробовал все, но он также всегда получает дочерние термины.

Я пытаюсь последние 5 часов и не могу найти, что не так в моем коде, это ошибка WP или в моем коде что-то не так?

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

арийский
источник
Я думаю, что вы имеете в виду только термины высшего уровня из вашей таксономииquestion_category
Питер Гусен
Да, я имею в виду, что
Aryan

Ответы:

21

Ваш код правильный, ну почти правильный. На первый взгляд, должен признаться, я тоже это пропустил.

У вас есть две синтаксические ошибки в вашем коде. Если присмотреться 'parent 'и 'parent'не то же самое. Вы не должны оставлять пробелов между одинарными кавычками ( ') и аргументами.

Кроме того, вам не нужно добавлять ,после вашего последнего аргумента.

Это должно работать

$cat_args = array(
    'parent'        => 0,
    'number'        => 10,
    'hide_empty'    => false           
);

РЕДАКТИРОВАТЬ 15-06-2016

Начиная с WordPress 4.5, синтаксис изменился для get_terms(). taxonomyПараметр теперь включен в массиве или аргументах, так что новое использование будет выглядеть следующим образом

$args = [
    'taxonomy'     => 'my_tax',
    'parent'        => 0,
    'number'        => 10,
    'hide_empty'    => false           
];
$terms = get_terms( $args );
Питер Гусен
источник
2
Просто примечание: вам не нужно добавлять ,после последнего аргумента массива ОДНАКО, это хорошая практика ;)
jave.web
@ jave.web Спасибо за это, я знаю, я просто не всегда так делаю. ;-)
Питер Гусен
@ jave.web На самом деле не стоит добавлять ,после последнего аргумента массива, так как это сломает другие языки, которые не допускают избыточных запятых. Например. JSON сломается, если вы сделаете это.
Mikepote
2
@Mikepote, который на самом деле не соответствует действительности, это хорошая практика, и если вы пытаетесь переместить код с одного языка на другой, вы должны использовать правильное преобразование / тер. Это все равно, что сказать, что вы не можете создавать объекты и / или переменные в качестве аргументов, потому что если вы копируете / вставляете, это нарушает JSON ... Это хорошая практика даже в JavaScript, поэтому поддержка была добавлена ​​позже везде. Копирование / вставка на одном и том же языке и в проекте гораздо более вероятно, и добавление запятой, если это возможно, предотвращает типичные замедления - это не только из моего опыта, но и из опыта других.
jave.web
@Mikepote Чтобы придерживаться того, что говорит jave.web, это не только хорошая практика, но и особенно рекомендуется в стандартах кодирования WordPress PHP, которым в идеале должен следовать весь специфичный для WordPress код: make.wordpress.org/core/handbook/best- практики /…
Сара Льюис