get_categories() — функция для вывода рубрик

Удобная функция для вывода категорий в WordPress. Очень широко используется в плагинах и темах. Хотя лично я вместо неё предпочитаю get_terms().

get_categories( $args = '' )
$args
(массив|строка) параметры функции:

taxonomy
(строка) таксономия, по умолчанию — category (т.е. рубрики).

Все остальные параметры переменной $args полностью идентичны параметрам массива $args функции get_terms().

Возвращаемые значения функции

Функция возвращает массив, состоящий из объектов категорий (или других таксономий), удовлетворяющих заданным критериям. Каждый из объектов содержит информацию о категории, например ID, название, ярлык, описание и т.д. Содержимое объекта я уже рассматривал тут.

Пример 1. Выводим названия всех категорий через запятую

Напоминаю, что подробное описание всех параметров есть в документации функции get_terms().

$all_categories = get_categories('fields=names');
echo implode(', ', $all_categories); // функция implode() преобразует массив в строку

Пример 2. Выводим все категории, даже пустые, в виде ссылок через запятую

Для получения ссылки на страницу архива рубрики можно использовать функции get_category_link() или get_term_link().

$all_categories = get_categories('hide_empty=0');
$category_link_array = array();
foreach( $all_categories as $single_cat ){
	$category_link_array[] = '<a href="' . get_category_link($single_cat->term_id) . '">' . $single_cat->name . '</a>';
}
echo implode(',', $category_link_array);

Пример 3. Создание выпадающего списка рубрик с автоматическим переходом на них при выборе

На момент написания этой статьи подобная навигация по рубрикам стоит у меня на блоге. На самом деле делается это совсем не трудно. Буквально одна строчка JavaScript — и всё готово.

$all_categories = get_categories();
if( $all_categories ){ // выводить пустой список в случае, если рубрик нет, ни к чему
	echo '<select onchange="document.location.href=this.options[this.selectedIndex].value;"><option value="">Выберите категорию</option>';
	foreach( $all_categories as $single_cat ){
		echo '<option value="' . get_category_link($single_cat->term_id) . '">' . $single_cat->name . '</option>';
	}
	echo '</select>';
}

Фильтр get_categories_taxonomy

Начиная с версии WordPress 2.7.0 параметр таксономии taxonomy можно пропустить через фильтр.

function change_taxonomy_for_get_categories($taxonomy, $args){
	// $taxonomy - таксономия по умолчанию, т е либо category, либо то, что было передано в параметрах функции
	// $args - все параметры функции
	return 'post_tag'; // в качестве таксономии задали метки поста 
}
add_filter('get_categories_taxonomy', 'change_taxonomy_for_get_categories', 20, 2);

Если просто вставить этот фильтр в functions.php вашей темы, то функция get_categories() уже будет работать неправильно — вместо рубрик возвращать метки.

Используйте этот фильтр при необходимости и с осторожностью.

Миша Рудрастых Разработчик WordPress WooCommerce

Миша Рудрастых

Впервые познакомился с WordPress в 2009 году, и после двух лет мучений с Joomla и самописными движками это был просто бальзам на душу. С 2014 года меня можно встретить на WordCamp — официальной конфе по WP в Москве, иногда там выступаю. Также в настоящее время веду курсы по WordPress в Epic Skills в Питере.