get_terms - только родительские элементы
Я пытаюсь получить только термины верхнего уровня:
$cat_args = array(
'parent ' => 0,
'number' => 10,
'hide_empty' => false,
);
$categories = get_terms( 'question_category' , $cat_args);
Но этот запрос возвращает также все дочерние термины, я перепробовал всё, но он всё равно получает дочерние термины.
Я пытаюсь решить эту проблему уже 5 часов и не могу понять, что не так в моём коде. Это баг WordPress или есть ошибка в моём коде?
Спасибо за помощь.
Ваш код правильный, ну почти правильный. При первом взгляде, должен признаться, я тоже это упустил.
В вашем коде есть две синтаксические ошибки. Если присмотреться, '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 );
Просто заметка: вам не обязательно добавлять , после последнего элемента массива, ОДНАКО это хорошая практика ;)
jave.web
@jave.web Спасибо, я знаю об этом, просто не всегда так делаю. ;-)
Pieter Goosen
@jave.web На самом деле это не хорошая практика - добавлять , после последнего элемента массива, так как это может сломать другие языки, которые не так терпимы к лишним запятым. Например, JSON сломается, если вы так сделаете.
Mikepote
@Mikepote на самом деле это не так, это хорошая практика. Если вы переносите код с одного языка на другой, следует использовать правильное преобразование. Это все равно что сказать, что нельзя использовать создание объектов и/или переменные в качестве аргументов, потому что при копировании/вставке ломается JSON... Это хорошая практика даже в JavaScript, поэтому позже поддержка была добавлена везде. Копирование/вставка внутри одного языка и проекта гораздо более вероятна, и добавление завершающей запятой, где это возможно, предотвращает распространенные проблемы, замедляющие работу — это не только мой опыт, но и опыт других разработчиков.
jave.web
@Mikepote Добавлю к сказанному jave.web: это не просто хорошая практика, но и прямо рекомендуется в стандартах кодирования PHP для WordPress, которым в идеале должен соответствовать весь WordPress-специфичный код: https://make.wordpress.org/core/handbook/best-practices/coding-standards/php/#indentation
Sarah Lewis