Функция 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. Она легко интегрируется в шаблоны и используется как в цикле, так и для отдельных записей.