Хук pre_insert_term
в WordPress используется для модификации имени термина перед его очисткой и сохранением в базе данных. С его помощью можно изменять название термина, а также останавливать его добавление, если он не соответствует определённым критериям.
apply_filters( 'pre_insert_term', string|WP_Error $term, string $taxonomy, array|string $args );
Хук pre_insert_term
позволяет изменить название термина перед его сохранением в базе данных или прервать процесс, возвратив ошибку. Это может быть полезно для валидации данных или автоматической модификации названий терминов, таких как категории или теги.
Параметры
$term
(string|WP_Error): Имя термина, который нужно добавить, или объектWP_Error
, если возникла ошибка.$taxonomy
(string): Название таксономии.$args
(array|string): Массив или строка аргументов, переданных в функциюwp_insert_term()
.
Пример 1: Автоматическое преобразование названий категорий к заглавному регистру
В этом примере используется фильтр pre_insert_term
, чтобы автоматически преобразовать первую букву имени новой категории в заглавную.
add_filter( 'pre_insert_term', 'capitalize_category_name', 10, 3 );
function capitalize_category_name( $term, $taxonomy, $args ) {
if ( 'category' === $taxonomy ) {
// Преобразуем первую букву термина в заглавную
$first_letter = mb_strtoupper( mb_substr( $term, 0, 1 ) );
$remaining_letters = mb_substr( $term, 1 );
$term = $first_letter . $remaining_letters;
}
return $term;
}
Пример 2: Запрет на создание категорий с числовыми именами
Чтобы предотвратить создание категорий, название которых состоит только из чисел, можно использовать этот хук для проверки имени термина перед его вставкой.
add_filter( 'pre_insert_term', 'prevent_numeric_category_name', 10, 3 );
function prevent_numeric_category_name( $term, $taxonomy, $args ) {
if ( 'category' === $taxonomy && is_numeric( $term ) ) {
// Возвращаем ошибку, если имя категории содержит только цифры
return new WP_Error( 'invalid_term', 'Название категории не может состоять только из цифр.' );
}
return $term;
}
Пример 3: Добавление префикса к меткам
В этом примере мы добавляем префикс к каждой создаваемой метке. Это полезно для унификации меток или для создания иерархии на уровне имен.
add_filter( 'pre_insert_term', 'prefix_tag_name', 10, 3 );
function prefix_tag_name( $term, $taxonomy, $args ) {
if ( 'post_tag' === $taxonomy ) {
// Добавляем префикс к имени метки
$term = 'Тег: ' . $term;
}
return $term;
}
Пример 4: Проверка длины названия термина
Этот фильтр позволяет ограничить длину имени термина, например, категории. Если название превышает указанное количество символов, хук вернет ошибку и остановит добавление термина.
add_filter( 'pre_insert_term', 'limit_term_name_length', 10, 3 );
function limit_term_name_length( $term, $taxonomy, $args ) {
if ( 'category' === $taxonomy && mb_strlen( $term ) > 20 ) {
// Если имя категории превышает 20 символов, возвращаем ошибку
return new WP_Error( 'term_name_too_long', 'Название категории не может превышать 20 символов.' );
}
return $term;
}
Пример 5: Удаление пробелов в начале и конце названия термина
В этом примере мы удаляем лишние пробелы в начале и в конце имени термина, чтобы избежать возможных ошибок при создании или использовании термина.
add_filter( 'pre_insert_term', 'trim_term_name', 10, 3 );
function trim_term_name( $term, $taxonomy, $args ) {
// Убираем пробелы в начале и конце
$term = trim( $term );
return $term;
}
Заключение
Хук pre_insert_term
дает возможность настраивать обработку терминов перед их добавлением в базу данных. С его помощью можно автоматически модифицировать названия, проверять их длину, формат и структуру, а также добавлять свои собственные правила валидации для улучшения качества данных в вашем проекте на WordPress.