Функция tag_exists()
в WordPress используется для проверки существования метки (тега) по её имени или ID. Она позволяет разработчикам убедиться, что метка уже существует в базе данных, прежде чем выполнять какие-либо операции с ней, такие как обновление или удаление.
tag_exists( int|string $tag_name ): mixed
Параметры
- $tag_name (обязательный) — название метки, слаг или её ID. Может быть строкой или числом.
Возвращаемые значения
- Массив — если метка найдена. Включает:
term_id
— ID метки.term_taxonomy_id
— ID таксономии.
null
— если метка не существует.0
— если в функцию был передан 0 в качестве ID метки.
Как работает tag_exists()
Функция tag_exists()
проверяет, существует ли метка в таксономии post_tag
. Эта таксономия зарегистрирована по умолчанию в WordPress и используется для тегов записей.
Стоит отметить, что функция определена в админ-панели WordPress. Поэтому, если вы попытаетесь вызвать её на фронтенде (публичной части сайта), получите ошибку:
Fatal error: Uncaught Error: Call to undefined function tag_exists()
Чтобы использовать эту функцию на фронтенде, необходимо подключить файл с необходимыми функциями:
require_once ABSPATH . 'wp-admin/includes/taxonomy.php';
Особенности работы в версии WordPress 6.0 и выше
Начиная с WordPress 6.0, функция tag_exists()
использует кэширование для повышения производительности и основана на функции get_terms()
. До версии 6.0 она делала прямой запрос к базе данных, что могло увеличивать нагрузку при частом использовании. Для тех же целей можно использовать функцию get_term_by()
, которая также поддерживает кэширование.
Пример 1: Проверка существования метки по имени
Допустим, у нас есть метка с названием «Безопасность«, и мы хотим проверить, существует ли она.
$tag = tag_exists( 'Безопасность' );
if ( $tag ) {
print_r( $tag );
} else {
echo 'Метка не существует';
}
Если метка существует, функция выведет подобный массив:
Array (
[term_id] => 343
[term_taxonomy_id] => 343
)
Здесь term_id
и term_taxonomy_id
равны, поскольку в WordPress ID термина и ID таксономии часто совпадают для стандартных таксономий, таких как post_tag
.
Пример 2: Использование ID метки
Можно также проверить наличие метки по её ID. Например:
$tag = tag_exists( 123 );
if ( $tag ) {
echo 'Метка с ID 123 существует';
} else {
echo 'Метка не найдена';
}
Если метка с ID 123 существует, функция вернёт массив с её данными.
Пример 3: Сравнение с term_exists()
Функция tag_exists()
является обёрткой над функцией term_exists()
, но специально предназначена для проверки меток в таксономии post_tag
. Рассмотрим пример сравнения двух функций:
$tag_name = 'Метка #1';
// Использование tag_exists()
$exists = tag_exists( $tag_name );
// Эквивалентный вызов с term_exists()
$exists_term = term_exists( $tag_name, 'post_tag' );
if ( $exists && $exists_term ) {
echo 'Метка существует';
}
Оба варианта работают одинаково, но tag_exists()
проще в использовании, так как автоматически предполагает работу с таксономией post_tag
.
Когда использовать tag_exists()
Функция полезна в ситуациях, когда необходимо выполнить проверку перед созданием, обновлением или удалением метки. Например, если вы хотите добавить новую метку только в том случае, если она ещё не существует:
$tag_name = 'Новая метка';
if ( ! tag_exists( $tag_name ) ) {
wp_insert_term( $tag_name, 'post_tag' );
} else {
echo 'Метка уже существует';
}
Этот код проверяет, существует ли метка с именем «Новая метка». Если она не существует, создаётся новая метка.
Заключение
Функция tag_exists()
— это удобный инструмент для работы с метками в WordPress. Она проверяет наличие метки в базе данных и возвращает её ID или массив данных, если метка существует. Хотя она используется в основном в админке, её можно подключить и для фронтенда при необходимости.