Функция has_category()
используется для проверки, принадлежит ли текущая или указанная запись хотя бы одной из заданных категорий. Эта функция полезна, если необходимо определить, имеет ли пост определённые категории и применить к нему соответствующую логику.
has_category( string|int|array $category = '', int|WP_Post $post = null ): bool
Параметры
- $category(необязательный)
Название категории, ID термина, слаг или массив этих значений для проверки. Если параметр не задан, функция проверяет, есть ли у поста хотя бы одна категория.- Типы данных:
string
(имя или слаг категории),int
(ID категории),array
(массив любых этих значений). - По умолчанию: пустая строка
''
.
- Типы данных:
- $post(необязательный)
ID записи или объект записиWP_Post
, для которой нужно проверить наличие категорий. Если параметр не задан, будет использоваться текущая запись.- По умолчанию:
null
.
- По умолчанию:
Возвращаемое значение
- bool — Возвращает
true
, если пост имеет хотя бы одну из указанных категорий, иначеfalse
.
Описание
- Если указаны категории в виде массива или строки, функция проверит, находится ли запись в этих категориях, сравнивая ID категорий, имена или слаги.
- Если категория указана в виде целого числа, проверка будет происходить только по ID категории.
- Если параметр категории не передан, функция проверяет, есть ли у поста хотя бы одна категория.
Пример 1: Проверка категории по имени
В этом примере мы проверяем, относится ли текущая запись к категории с именем "Новости"
:
if ( has_category( 'Новости' ) ) {
echo 'Эта запись в категории Новости.';
}
Результат: Если пост принадлежит категории "Новости"
, выведется сообщение.
Пример 2: Проверка категории по ID
Здесь проверяется, находится ли запись с ID 42
в категории с ID 10
:
if ( has_category( 10, 42 ) ) {
echo 'Запись с ID=42 находится в категории с ID=10.';
}
Результат: Если пост с ID 42
относится к категории с ID 10
, выведется сообщение.
Пример 3: Проверка нескольких категорий
В этом примере проверяется, принадлежит ли пост хотя бы одной из категорий — "Новости"
или "Обновления"
:
if ( has_category( array( 'Новости', 'Обновления' ) ) ) {
echo 'Эта запись относится к категории Новости или Обновления.';
}
Результат: Если запись принадлежит хотя бы одной из указанных категорий, выводится сообщение.
Пример 4: Проверка без указания категории
Этот пример показывает, как проверить, присвоена ли посту хотя бы одна категория:
if ( has_category() ) {
echo 'У этой записи есть хотя бы одна категория.';
} else {
echo 'У этой записи нет категорий.';
}
Пример 5: Проверка по ID и имени
Здесь проверяется, относится ли запись с ID 123 к категории с ID 12
или к категории с именем "История"
:
$post_id = 123;
if ( has_category( array( 12, 'История' ), $post_id ) ) {
echo "Пост с ID=$post_id находится в рубрике с ID=12 или в категории История.";
}
Отличие от in_category()
Функция has_category()
аналогична in_category()
, но предназначена для более гибкой проверки категории. Если вам нужно проверить наличие категории для таксономий, отличных от стандартной category
, используйте функцию has_term()
.
Заключение
Функция has_category()
— это удобный способ проверить наличие одной или нескольких категорий у записи в WordPress. Она легко интегрируется в шаблоны и используется как в цикле, так и для отдельных записей.