С помощью функции get_categories() можно получить массив объектов с данными о категориях для вывода на экран или для дальнейших операций.
Работает на основе: get_terms().
Применение:
get_categories( $args );
$args (строка/массив) — аргументы, которые может принимать функция.
По умолчанию: Стандартный массив объектов для таксономии 'category'.
У данной функции есть всего один уникальный аргумент 'type', которого нет в арсенале get_terms().
Шаблон функции со всеми аргументами
$args = array( 'type' => 'post', 'taxonomy' => 'category', 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => true, 'exclude' => '', 'exclude_tree' => '', 'include' => array(), 'number' => '', 'fields' => 'all', 'slug' => '', 'parent' => '', 'hierarchical' => true, 'child_of' => 0, 'childless' => false, 'get' => '', 'name__like' => '', 'pad_counts' => false, 'offset' => '', 'search' => '', 'name' => '', 'cache_domain' => 'core', 'update_term_meta_cache' => true, 'object_ids' => null, 'meta_value' => '', 'meta_key' => '', 'meta_query' => '', 'suppress_filter' => false, ); $terms = get_categories($args); foreach($tcategories as $cat){ echo print_r($cat); }
Аргументы массива $args
type
'type' => 'post', (строка) — Тип таксономии, элементы которой требуется получить (необязательно).
'post' — будут получены данные о категориях постов.
'link' — данные о категориях ссылок.
По умолчанию: post.
Полный список аргументов, которые может принимать функция, можно посмотреть в описании get_terms().
Возвращаемые значения
Основное отличие функции get_categories() от get_terms() заключается именно в возвращаемых значениях:
term_id — идентификатор терма.
name — название терма.
slug — ярлык терма
term_group — порядковый номер в группе (не используется, по умолчанию: 0).
term_taxonomy_id — идентификатор таксономии.
taxonomy — название таксономии.
description — описание элемента таксономии.
parent — идентификатор родительского терма.
count — количество прикрепленных записей к терму.
filter — тип фильтра.
cat_ID — идентификатор категории.
category_count — количество прикрепленных записей к категории.
category_description — описание категории.
cat_name — название категории.
category_nicename — ярлык категории.
category_parent — идентификатор родительской категории.
Здесь явно просматривается выделение категорий на фоне остальных термов.
Хуки функции
В функцию заложен хук-фильтр get_categories_taxonomy.
Применение:
add_filter( 'get_categories_taxonomy', 'get_categories_taxonomy_filter', 10, 2 ); function get_categories_taxonomy_filter($taxonomy, $args){ //какой-то сценарий return $taxonomy; }
Отключение фильтра:
remove_filter('get_categories_taxonomy', 'get_categories_taxonomy_filter', 10, 2);
Примеры использования
1. Получим все категории произвольной таксономии 'own_tax', упорядоченные по ярлыкам.
Синтаксис строки:
categories = get_categories('taxonomy=own_tax&hide_empty=0&orderby=slug');
Синтаксис массива:
$args = array( 'taxonomy' => 'own_tax', 'hide_empty' => 0, 'orderby' => 'slug', ); $categories = get_categories($args);
2. Выведем названия родительских категорий только верхнего уровня.
Без ссылки:
$categories = get_categories(array( 'orderby' => 'name', 'parent' => 0 )); foreach ($categories as $category){ printf( '%1$s<br/>', esc_html($category->name)); }
С ссылкой:
$categories = get_categories(array( 'orderby' => 'name', 'parent' => 0 )); foreach ($categories as $category){ printf( '<a href="%1$s">%2$s</a><br />', esc_url(get_category_link($category->term_id)), esc_html($category->name) ); }
3. Выведем все категории с ссылками в виде выпадающего списка:
$categories = get_categories(); echo '<select onchange="document.location.href=this.options[this.selectedIndex].value;"><option value="">Выберите категорию</option>'; foreach( $categories as $cat ){ echo '<option value="'.get_category_link($cat->term_id).'">'.$cat->name.'</option>'; } echo '</select>';
4. Создадим простую карту таксономии с обозначением категорий и подкатегорий:
$рarent_categories = get_categories( 'orderby=name&order=ASC' ); foreach ( $рarent_categories as $category ){ if ( $category->parent < 1 ) { echo '<strong>Категория:</strong></br>'.$category->name.'</br>'; $childless_categories = get_categories( array( 'parent' => $category->term_id )); if (count( $childless_categories ) > 0 ){ echo '<strong>Подкатегории:</strong></br>'; foreach ( $childless_categories as $childless ) echo $childless->name.'</br>'; } } }
На основе get_categories() работает функция: wp_list_categories().
Таблица изменений
Версия | Дата | Описание |
---|---|---|
2.1.0 | 24.09.2007 | Внедрение |
Файл: wp-includes/category.php (Развернуть)