wp_get_post_categories()
Отримує список категорій (рубрик) посту (запису) як масиву.
Функція є обгорткою для функції wp_get_object_terms() і створена для тих, хто погано розуміється на понятті “таксономії WordPress”, але розуміє що таке рубрики, що по суті є одним і тим же.
Результат цієї функції не кешується, тому запит до бази даних робиться під час кожного виклику функції. Використовуйте цю функцію обережно. Для підвищення продуктивності слід використовувати функції get_the_category() , результат роботи яких кешується.
wp_get_object_terms()
(дуже повільно) | 50000 разів – 43.9 сек
(дуже повільно)
Хуків немає.
Повертає
Массив|WP_Error
. Масив містить категорій ID.
List of categories. Якщо $fields argument passed via $args ‘ all’or ‘all_with_object_id’ , array of WP_Term objects will be returned. Якщо $fields є ‘ ids’ , array of category IDs. Якщо $fields є ‘ names’ , array of category names. WP_Error object if ‘category’ taxonomy doesn’t exist.
Використання
wp_get_post_categories( $post_id, $args );
-
$post_id
(число) (обов’язковий) - ID посту, рубрики якого потрібно отримати.
-
$args
(масив) -
Аргументи одержання рубрик.
За замовчуванням: array(‘fields’ => ‘ids’);
Аргументи $args
-
orderby
(рядок) За яким критерієм сортувати результат? Може бути:
count
– за кількістю записів;name
– по імені. За замовчуванням;slug
– за складом;none
– Виводити без сортування.
За замовчуванням: ‘name’
-
order
(рядок) -
Напрямок сортування.
ASC
– По порядку,
DESC
– у зворотному порядку.
За замовчуванням: ‘ASC’ -
fields
(рядок) Які поля включати до результуючого масиву. Може бути:
all
– в результаті ми отримай масив об’єктів з усією інформацією про кожний термін.ids
– Отримати тільки ID термінів.names
– Отримати тільки імена термінів.slugs
– отримає лише ярлики термінів.all_with_object_id
– Теж що і all, плюс ще й ID термінів.tt_ids
– Поверне ID таксономій термінів ( внутрішній ID для зв’язку таблиць).Також можливі комбіновані варіанти, наприклад:
id=>name
– Поверне пару ID => Ім’я.id=>slug
– Поверне пару ID => Ярлик.За замовчуванням: ‘all’
Приклади
#1 Демонстрація роботи функції
Приклад показує, який результат виводить базове використання wp_get_post_categories():
$test = wp_get_post_categories( $post->ID ); print_r ($ test); /* Виведе: Array ( [0] => 1 [1] => 2 ) */ echo $test[1]; // виведе: 2
#2 Покажемо інформацію про категорії
У прикладі нижче показано, як отримати категорії посту, а потім зібрати потрібні дані до масиву $cats.
$post_categories = wp_get_post_categories( $post_id ); $cats = array(); foreach( $post_categories as $c ){ $cat = get_category($c); $cats[] = [ 'name' => $cat->name, 'slug' => $cat->slug ]; }
#3 Отримаємо всі дані категорій посту
$test = wp_get_post_categories( $post->ID, [ 'fields' => 'all' ] ); print_r ($ test); /* Виведе: Array ( [0] => stdClass Object ( [term_id] => 1 [name] => Без рубрики [slug] => bez-rubriki [term_group] => 0 [term_taxonomy_id] => 1 [taxonomy] => category [description] => [parent] => 0 [count] => 2 [filter] => raw ) [1] => stdClass Object ( [term_id] => 2 [name] => Рубрика пробна [slug] => rubrika-probnaya [term_group] => 0 [term_taxonomy_id] => 2 [taxonomy] => category [description] => [parent] => 0 [count] => 1 [filter] => raw ) ) */ foreach( $test as $cat ){ echo $cat->name .'<br>'; } /* Виведе: Без рубрики<br> Рубрика пробна<br> */
нотатки
- Дивіться: wp_get_object_terms()
список змін
З версії 2.1.0 | Введено. |
Код wp_get_post_categories() wp get post categories WP 6.0.2
function wp_get_post_categories( $post_id = 0, $args = array() ) { $post_id = (int) $post_id; $defaults = array( 'fields' => 'ids' ); $ args = wp_parse_args ($ args, $ defaults); $cats = wp_get_object_terms( $post_id, 'category', $args ); return $cats; }