Функция term_exists()
используется для проверки существования термина в заданной таксономии. Эта функция полезна для работы с терминами в WordPress, позволяя вам проверять, существуют ли определенные категории, метки или пользовательские термины перед их использованием.
term_exists( int|string $term, string $taxonomy = '', int $parent_term = null ): mixed
Параметры
- $term (int|string, обязательный): ID, слаг или название термина, который нужно проверить.
- $taxonomy (string, необязательный): Название таксономии, в которой выполняется проверка. По умолчанию — пустая строка.
- $parent_term (int, необязательный): ID родительского термина для ограничения поиска. По умолчанию —
null
.
Возвращаемое значение
- null: Если термин не существует.
- int: Возвращает ID термина, если таксономия не указана и термин найден.
- array: Возвращает массив с ID термина и ID таксономии, если указана таксономия и термин найден.
- 0: Если передан ID термина 0.
Как работает функция
term_exists()
проверяет наличие термина в базе данных и возвращает результат. Начиная с версии WordPress 6.0, функция использует кэширование, что значительно улучшает производительность.
Заметки
- Если вы передаете ID, он должен быть числом, а не строкой.
- Для проверки термина без указания таксономии функция вернёт только ID.
- При указании таксономии будет возвращён массив с информацией о термине и его таксономии.
Пример 1: Проверка существования термина без указания таксономии
Вы можете проверить наличие термина featured
следующим образом:
$term_check = term_exists( 'featured' );
if ( $term_check ) {
echo 'Термин "featured" существует!';
} else {
echo 'Термин "featured" не найден.';
}
Пример 2: Проверка существования термина в определённой таксономии
Предположим, у вас есть пользовательская таксономия под названием genres
, и вы хотите проверить, существует ли термин rock
:
$term_check = term_exists( 'rock', 'genres' );
if ( $term_check ) {
echo 'Термин "rock" в таксономии "genres" найден.';
echo 'ID термина: ' . $term_check['term_id'];
} else {
echo 'Термин "rock" не существует в таксономии "genres".';
}
Пример 3: Проверка существования категории Uncategorized
Если вам нужно проверить, существует ли категория Uncategorized
, это можно сделать так:
$term_check = term_exists( 'Uncategorized', 'category' );
if ( $term_check !== 0 && $term_check !== null ) {
echo 'Категория "Uncategorized" существует!';
} else {
echo 'Категория "Uncategorized" не найдена.';
}
Пример 4: Использование кэширования в WordPress 6.0
Для случаев, когда нужно отключить кэш, можно воспользоваться функцией wp_suspend_cache_invalidation()
:
// Отключаем кэширование
wp_suspend_cache_invalidation( true );
$term_check = term_exists( 'adventure', 'category' );
if ( $term_check ) {
echo 'Термин "adventure" найден.';
} else {
echo 'Термин "adventure" не найден.';
}
// Включаем кэширование обратно
wp_suspend_cache_invalidation( false );
Заключение
Функция term_exists()
является важным инструментом для работы с терминами в WordPress. Она помогает проверить существование терминов перед их использованием, что может предотвратить ошибки и повысить качество кода.