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 | Введено. |