Вывод дочерних категорий в WordPress.

Понадобилось мне тут вывести список подкатегорий одной из категорий. Начал шерстить кодекс. Естественно, первым делом полез в wp_list_categories. Достаточно муторная функция с кучей вводных параметров. Но таки разобрался, вывел свои подкатегории. Сижу, смотрю и понимаю, что функция возвращает html-список, что меня совершенно не устраивает: разбивать эту здоровенную строку на составные и вычищать все тэги – да ну его на фиг.
Следующая функция, которая мне приглянулась – get_categories. В принципе, упрощённый вариант первой, но… Где-то косяк в ней с вводом родительской категории. Возвращает массив с параметрами первой же категории. Пришлось забросить и этот вариант.
Третий вариант – полное рукоблудство, но он работает.

function my_subcats ($parent) {
//$parent содержит название родительской категории
$parent_id = get_cat_id($parent); //получаем id родительской категории
$all_cats_ids = get_all_category_ids(); //получаем id ВСЕХ категорий
foreach ( $all_cats_ids as $cat_id ) {
	if (cat_is_ancestor_of($parent_id, $cat_id)) {  //проверяем, является ли категория с cat_id дочерней по отношению к $parent_id
 		$child_cats[] = get_cat_name($cat_id); //если дочерняя, то добавляем id  в массив
 	}
}
sort( $child_cats ); 
return $child_cats; //возвращаем сортированный массив названий подкатегорий
}

И вот над этим десятком строк пришлось биться три вечера. 🙁

Запись опубликована в рубрике HOWTO с метками , , . Добавьте в закладки постоянную ссылку.

4 комментария на «Вывод дочерних категорий в WordPress.»

  1. AngelOfFate говорит:

    хотел высказаться на счет собственного варианта, да увидел третий )))

  2. Алекс говорит:

    ребят подскажите плиз куда этот код пихатьи как делать вызов функции.. подозреваю что это в functions.php в папку шаблонов сайта, но всеже вызвать тогда как эту штуковину ?? и как можно список отредактировать по выводу, то есть свои стили вставить?

  3. Dandr говорит:

    @ Алекс, у меня это реализовано в виде плагина. В теме – хз. Не интересовался.

Добавить комментарий для DandrОтменить ответ