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;
}