Поэтому мне трудно печатать только прямые дети категории на странице. Вот мой код:
$category_id = get_cat_ID('destinations'); $args = array('child_of' => $category_id); $categories = get_categories($args); $args = array ( 'category__and' => $categories->$cat_ID ); $recent_posts = new WP_Query($args); if ($recent_posts->have_posts()) : while ($recent_posts->have_posts()) : $recent_posts->the_post();
Этот код печатает каждую категорию независимо от того, кто является родителем. Если я изменю это:
$ recent_posts = новый WP_Query ('cat = 43'); Он печатает правильную категорию, но также все ее дети и дети детей (очевидно). Я просто хочу, чтобы непосредственно связанные дети были напечатаны. Я пошел вперед и повторил сериализацию ($ categories), которая вернула правильный массив. Однако, когда я сериализую ($ args) ПОСЛЕ 2-й декларации, это дает мне:
a:1:{s:13:"category__and";N;}
Это определенно странно. Почему на Земле он возвращает «N» для $ categories -> $ cat_ID? Я пытался сделать это весь день и не увенчался успехом. Я также пытался найти другой способ сделать то, что хочу, но ничего не получилось.
Есть идеи?
Из Кодекса:
ребенок (целое число) Отобразить все категории, которые являются потомками (т.е. детьми и внуками) категории, идентифицированной ее идентификатором. Для этого параметра нет значения по умолчанию. Если параметр используется, параметр hide_empty имеет значение false.
А также…
родитель (целое) Отображать только те категории, которые являются прямыми потомками (то есть только для детей) категории, идентифицируемой ее идентификатором. Это НЕ работает как параметр «child_of». Для этого параметра нет значения по умолчанию. [В 2.8.4]
Итак, во-первых, вы используете неправильный аргумент, если хотите только немедленные декодеры. Тебе нужно:
$args = array('parent' => $category_id);
Во-вторых, get_categories
даст вам массив объектов, поэтому вам понадобится что-то подобное для извлечения идентификаторов.
$cats = wp_list_pluck($categories,'cat_ID'); $args = array ( 'category__and' => $cats );
Даю вам:
$category_id = get_cat_ID('destinations'); $args = array('parent' => $category_id); $categories = get_categories($args); $cats = wp_list_pluck($categories,'cat_ID'); $args = array ( 'category__and' => $cats ); $recent_posts = new WP_Query($args);