» » get_categories()
logotip

get_categories()

Последнее изменение: 2018-11-12

С помощью функции 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 (Развернуть)

Оставить комментарий

Внимание комментатор! Прежде чем вставить: HTML, JavaScript или PHP код в свой комментарий, преобразуй его в html сущность!

Subscribe without commenting

» Подписаться на комментарии по RSS