WordPress как на ладони
Черная пятница на хостинге fornex.com! Хостинг, VPS/VDS и отдельные сервера только на SSD дисках. 7 дней бесплатного тестирования.

pre_insert_term хук-фильтр . WP 3.0.0

Позволяет изменить название термина (рубрики, метки) перед его очисткой и вставкой в базу данных.

На этом фильтре также можно остановить операцию создания термина и отобразить произвольную ошибку.

Использование

add_filter( 'pre_insert_term', 'filter_function_name_3619', 10, 2 );
function filter_function_name_3619( $term, $taxonomy ){
	// Изменяем...

	return $term;
}
$term(строка)
Название термина.
$taxonomy(строка)
Название таксономии, указываемое первым параметром в register_taxonomy().

Примеры

#1 Изменим название добавляемой рубрики

На хуке pre_insert_term можно изменить название создаваемого термина как угодно. Для примера сделаем название всех создаваемых рубрик с большой буквы:

add_filter( 'pre_insert_term', 'change_pre_insert_term', 10, 2 );

function change_pre_insert_term( $term, $taxonomy ) {
	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', 'change_pre_insert_term', 10, 2 );

function change_pre_insert_term( $term, $taxonomy ) {
	if ( 'category' === $taxonomy && is_numeric( $term ) ) {
		return new WP_Error( 'error', 'Название рубрики не может быть только из цифр.' );
	}

	return $term;
}

Где используется хук

wp_insert_term() остальные хуки:

Код хука-фильтра pre_insert_term

Фрагмент из: wp-includes/taxonomy.php VER 4.9.8
...
 */
function wp_insert_term( $term, $taxonomy, $args = array() ) {
	global $wpdb;

	if ( ! taxonomy_exists($taxonomy) ) {
		return new WP_Error( 'invalid_taxonomy', __( 'Invalid taxonomy.' ) );
	}
	/**
	 * Filters a term before it is sanitized and inserted into the database.
	 *
	 * @since 3.0.0
	 *
	 * @param string $term     The term to add or update.
	 * @param string $taxonomy Taxonomy slug.
	 */
	$term = apply_filters( 'pre_insert_term', $term, $taxonomy );
	if ( is_wp_error( $term ) ) {
		return $term;
	}
	if ( is_int( $term ) && 0 == $term ) {
		return new WP_Error( 'invalid_term_id', __( 'Invalid term ID.' ) );
	}
	if ( '' == trim( $term ) ) {
		return new WP_Error( 'empty_term_name', __( 'A name is required for this term.' ) );
	}
	$defaults = array( 'alias_of' => '', 'description' => '', 'parent' => 0, 'slug' => '');
	$args = wp_parse_args( $args, $defaults );

	if ( $args['parent'] > 0 && ! term_exists( (int) $args['parent'] ) ) {
		return new WP_Error( 'missing_parent', __( 'Parent term does not exist.' ) );
	}
...
campusboy 3061youtube.com/c/wpplus
Создатель YouTube канала wp-plus, на котором делюсь своим опытом. Активный пользователь wp-kama.ru. WordPress-разработчик. Разработка сайтов и лендингов. Доработка существующих проектов. Сопровождение ресурсов.
Редакторы: Kama 7021
Комментариев нет
    Здравствуйте, !     Войти . Зарегистрироваться