wp_get_post_categories() WP 2.1.0

Отримує список категорій (рубрик) посту (запису) як масиву.

Функція є обгорткою для функції wp_get_object_terms() і створена для тих, хто погано розуміється на понятті “таксономії WordPress”, але розуміє що таке рубрики, що по суті є одним і тим же.

Результат цієї функції не кешується, тому запит до бази даних робиться під час кожного виклику функції. Використовуйте цю функцію обережно. Для підвищення продуктивності слід використовувати функції get_the_category() , результат роботи яких кешується.

Працює на основі:
wp_get_object_terms()
1 раз – 0.00111 сек
(дуже повільно) | 50000 разів – 43.9 сек
(дуже повільно)

Хуків немає.

Повертає

Массив|WP_Error. Масив містить категорій ID.

List of categories. Якщо $fields argument passed via $argsall’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’

Приклади

0

#1 Демонстрація роботи функції

Приклад показує, який результат виводить базове використання wp_get_post_categories():

$test = wp_get_post_categories( $post->ID );

print_r ($ test);

/* Виведе:
Array
(
	[0] => 1
	[1] => 2
)
*/

echo $test[1]; // виведе: 2
0

#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 ];
}
0

#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>
*/

нотатки

список змін

З версії 2.1.0Введено.

Код 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;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *