get_categories()
Отримує категорії у вигляді масиву об’єктів.
За якими критеріями одержати категорії та як їх відсортувати вказується у параметрах функції.
Параметри цієї функції дуже схожі на параметри wp_list_categories() . Вони можуть бути передані як масиву чи рядка запита: type=post&order=DESC.
get_terms()
wp_list_categories()
(дуже повільно) | 50000 разів – 11.98 сек
(повільно) |
PHP 7.1.11, WP 4.9.5
Хуки з функції
Повертає
Массив.
- Масив об’єктів WP_Term (категорій).
- Порожній масив, якщо не вдалося одержати категорії.
Шаблон використання
$categories = get_categories( [
'taxonomy' => 'category',
'type' => 'post',
'child_of' => 0,
'parent' => '',
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => 1,
'hierarchical' => 1,
'exclude' => '',
'include' => '',
'number' => 0,
'pad_counts' => false,
// повний список параметрів дивіться в описі функції http://wp-kama.ru/function/get_terms
]);
if( $categories ){
foreach( $categories as $cat ){
// Дані в об'єкті $cat
// $cat->term_id
// $cat->name (Рубрика 1)
// $cat->slug (rubrika-1)
// $cat->term_group (0)
// $cat->term_taxonomy_id (4)
// $cat->taxonomy (category)
// $cat->description (Текст опису)
// $cat->parent (0)
// $cat->count (14)
// $cat->object_id (2743)
// $cat->cat_ID (4)
// $cat->category_count (14)
// $cat->category_description (Текст опису)
// $cat->cat_name (Рубрика 1)
// $cat->category_nicename (rubrika-1)
// $cat->category_parent (0)
}
}Використання
$categories = get_categories( $args );
- $args
(масив|рядок) - Установки для отримання категорій.
За замовчуванням: ” – попереднє встановлення
Аргументи $args
Повний список параметрів дивіться у get_terms() .
- taxonomy
(рядок) - Назву таксономії, яку потрібно обробляти. Додано з версії 3.0.
Типово: ‘category’ - type
(рядок) Тип категорій, які будуть одержані.
post– категорії для постів (за замовчуванням);link– Розділи посилань.
Типово: “post”
- child_of
(рядок) - Отримати дочірні категорії (включаючи всі рівні вкладеності) зазначеної категорії. У параметрі вказується ID батьківської категорії (категорія, вкладені категорії якої потрібно показати).
- parent
(число) - Отримує категорії, батьківська категорія яких зазначена у цьому параметрі. На відміну від
child_ofтого, що буде показаний один (тільки перший) рівень вкладеності.
За замовчуванням: ” - orderby
(рядок) Сортування даних за певними критеріями. Наприклад, за кількістю постів у кожній категорії чи за назвою категорій. Доступні такі критерії:
idабоterm_id– за ID.name– За назвою. За замовчуванням.count– за полем count у term_taxonomy – за кількістю записів.slug– за альтернативною назвою.description– За описом.term_group– по групі.term_group– по групі.parent– По полю parent.include– По порядку вказаному в параметрі $includeslug__in– З версії 4.9. У порядку вказаному у параметрі $ slug.meta_value– за значенням довільного поляmeta_value_num– за значенням довільного поля, значення інтерпретуватиметься як число, а не рядок.ключ "meta_query"– у параметрі $meta_query ми можемо вказати параметри запиту за метаполями, і там-таки вказати ключ для конкретного запиту. Цей ключ можна використовувати як ключ для сортування за відповідним метаполем.none– не сортувати
Типово: “name”
- order
(рядок) Напрямок сортування, вказаного у параметрі “orderby”:
ASC– По порядку, від меншого до більшого (1, 2, 3; a, b, c);DESC– у зворотному порядку, від більшого до меншого (3, 2, 1; c, b, a).
Типово: “ASC”
- hide_empty
(логічний) Отримувати чи ні порожні категорії (що не мають записів):
1(true) – не одержувати порожні,0(False) – отримувати порожні.
Типово: true
- hierarchical
(логічний) - Якщо параметр встановлено в
true , то результат буде включено порожні дочірні категорії, дочірні категорії яких мають записи (непусті).
Типово: true - exclude
(рядок/масив) - Виключити будь-які категорії зі списку. Потрібно вказувати ID категорій через кому або в масиві. Якщо цей параметр вказано, параметр
child_of буде скасовано.
За замовчуванням: ” - include
(рядок/масив) - Вивести списком лише зазначені категорії. Вказувати потрібно ID категорій через кому або в масиві.
За замовчуванням: ” - number
(число) - Ліміт. Число категорій, які будуть одержані. За замовчуванням без обмежень будуть отримані всі категорії.
- pad_counts
(логічний) - Якщо передати true, то число, яке показує кількість записів у батьківських категоріях, буде сумою своїх записів та записів з дочірніх категорій.
Типово: false
Приклади
#1 Список категорій та їх опис
Цей приклад покаже нам як можна вивести списком посилання на категорії, де відразу після кожного посилання буде йти опис категорії (вказується під час створення/редагування категорії):
<?php
$categories = get_categories( [
'orderby' => 'name',
'order' => 'ASC'
]);
foreach( $categories as $category ){
echo '<p>Category: <a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '' ' . '>'. $category->name.'</a> </p> ';
echo '<p> Description:'. $category->description . '</p>';
echo '<p> Post Count: '. (int) $category->count . '</p>';
}
?>#2 Отримання лише категорій верхнього рівня
Для цього встановіть значення 'parent' => 0. Цей приклад отримує посилання та назву категорій верхнього рівня.
$cats = get_categories( array(
'orderby' => 'name',
'parent' => 0
)));
foreach ( $cats as $cat ) {
printf( '<a href="%1$s">%2$s</a><br />',
esc_url( get_category_link( $cat->term_id ) ),
esc_html( $cat->name )
);
}#3 Випадаючий список
Для того, щоб створити список, що випадає з категорій, ми можемо скористатися іншою спеціальною для цієї мети, функцією wp_dropdown_categories() :
wp_dropdown_categories([
'hide_empty' => 0,
'name' => 'category_parent',
'orderby' => 'name',
'selected' => $category->parent,
'hierarchical' => true,
'show_option_none' => __('None')
]);Однак з таким підходом ми втратимо певну гнучкість у налаштуванні списку, оскільки ми отримаємо вже повністю сформований список.
Тому, в деяких випадках буде логічніше створити список, що випадає, за допомогою цієї функції – get_categories(). Приклад (передбачається, що нам потрібно вивести підкатегорії (дочірні) категорії 10):
<select name="event-dropdown" onchange="document.location.href = this.options[ this.selectedIndex ].value;">
<option value=""><?php echo esc_attr( 'Виберіть подію' ); ?></option>
<?php
$categories = get_categories( 'child_of=10');
foreach( $categories as $category ){
$option = '<option value="' . get_term_link( $category ) . '">';
$option .= $category->name;
$option .= ' (' . $category->count . ')';
$option .= '</option>';
echo $ option;
}
?>
</select>#4 Отримаємо тільки категорії, в яких є пости
За промовчанням функція get_category() повертає ТІЛЬКИ категорії, в яких є посади (не пусті категорії). Це означає, що якщо для категорії не призначено посту, то така категорія не буде отримана.
Щоб цього уникнути і показати всі категорії незалежно чи є в ній пости чи ні, потрібно вказати параметр 'hide_empty' => false:
$ args = array ( 'hide_empty' => false, ); $cats = get_categories( $args ); // поверне всі категорії (включаючи порожні)
нотатки
- Дивіться: get_terms() Type of arguments that can be changed.
список змін
| З версії 2.1.0 | Введено. |