Вывод дочерних категорий по slug вместо ID

1 февр. 2011 г., 13:48:17
Просмотры: 19.4K
Голосов: 4

Мне нужно вывести категории, принадлежащие родительской. Проблема в том, что использование ID категорий неудобно и усложняет понимание кода.

Есть ли более простой способ вывести дочерние категории, аналогичный стандартному методу из WP Codex, но работающий со slug?

<?php wp_list_categories('child_of=8'); ?> //какая именно категория имеет ID '8'?!

<?php wp_list_categories('child_of=clients'); ?> //гораздо понятнее, но не работает

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

0
Все ответы на вопрос 2
1

Вы можете легко получить ID по слагу:

$category = get_category_by_slug( 'clients' );
wp_list_categories('child_of='.$category->term_id);
1 февр. 2011 г. 14:13:11
Комментарии

Я почти предложил аналогичное решение с использованием get_term_by.. get_cat_ID просто удобнее в использовании, так как не требует обращения к свойствам объекта. Тем не менее, мой +1, всё равно ценный ответ!.. :)

t31os t31os
1 февр. 2011 г. 14:19:52
4

Хотите получить все дочерние элементы для определенной категории? По сути, для этого и предназначен параметр child_of — он получает всех потомков термина (категории).

Если вам нужны только термины с определенным непосредственным родителем, вместо этого следует использовать параметр parent.

Что касается использования ID, вот рабочий пример:

<?php
// Получаем ID для категории с указанным именем
$cat_term_id = get_cat_ID( 'my-cat' );

wp_list_categories("parent=$cat_term_id");
//wp_list_categories("child_of=$cat_term_id");
?>

Документация по get_cat_ID.


Надеюсь, это поможет...

1 февр. 2011 г. 14:14:14
Комментарии

ПРИМЕЧАНИЕ: get_cat_ID также ожидает slug (ярлык), а не название, как в случае с get_category_by_slug... (однако эта функция вернёт только ID, а не объект).

t31os t31os
1 февр. 2011 г. 14:16:32

Хм, мне кажется, ваше примечание перепутано :) get_cat_ID() ожидает название, get_category_by_slug() ожидает slug.

Rarst Rarst
1 февр. 2011 г. 14:20:09

@Rarst - Приношу извинения, моя ошибка, действительно ожидается название (у меня просто была в памяти информация о функции категорий, которая по документации должна принимать название, но на самом деле ожидает slug - я перепутал).. ;)

t31os t31os
1 февр. 2011 г. 14:36:49

Я тоже помню, что была какая-то функция с таким поведением, но это не одна из этих двух... ура, когда функций слишком много :)

Rarst Rarst
1 февр. 2011 г. 15:10:47