sanitize_term_field()

Функция занимается очисткой информации об элементе таксономии.

Также позволяет добавлять в себя другие правила очистки в зависимости от контекста.

Возвращает очищенное значение.

Если вы не до конца понимаете, про какую «очистку» я говорю, смотрите этот видеоурок.

sanitize_term_field( $field, $value, $term_id, $taxonomy, $context )

Параметры

$field
(строка) Ключ очищаемого поля.
 
По сути может быть названием любого свойства объекта WP_Term, да и вообще любым значением, однако, если вы передадите одно из следующих стандартных значений поля parent, term_id, count, term_group, term_taxonomy_id, object_id, то функция в первую очередь очистит их как целые неотрицательные числа вне зависимости от контекста.
$value
Очищаемое значение.
$term_id
(целое) ID термина.
$taxonomy
(строка) Название таксономии.
$context
(строка) Название контекста, в котором используется функция.

Хуки

Если вдруг вы не знаете, как работать с фильтрами.

edit_term_{$field}

$value = apply_filters( "edit_term_{$field}", $value, $term_id, $taxonomy );

edit_{$taxonomy}_{$field}

$value = apply_filters( "edit_{$taxonomy}_{$field}", $value, $term_id );

pre_term_{$field}

$value = apply_filters( "pre_term_{$field}", $value, $taxonomy );

pre_{$taxonomy}_{$field}

$value = apply_filters( "pre_{$taxonomy}_{$field}", $value );

pre_category_nicename

$value = apply_filters( 'pre_category_nicename', $value );

term_{$field}_rss

$value = apply_filters( "term_{$field}_rss", $value, $taxonomy );

{$taxonomy}_{$field}_rss

$value = apply_filters( "{$taxonomy}_{$field}_rss", $value );

term_{$field}

$value = apply_filters( "term_{$field}", $value, $term_id, $taxonomy, $context );

{$taxonomy}_{$field}

$value = apply_filters( "{$taxonomy}_{$field}", $value, $term_id, $context );

Пример

Нет, я не забыл про пример, но сначала хотел познакомить вас с хуками.

В этом примере я бы хотел поговорить с вами про постоение запроса при помощи WP_Query. Когда мы задаём какие-либо ярлыки меток при построении запроса:

// это наш код, например где-то в теме WordPress
$query = new WP_Query( array( 'tag' => 'travel,food' ) );

То внутри ядра WordPress значение каждого из этих ярлыков будет очищаться:

// это код внутри ядра
$tag = sanitize_term_field( 'slug', $tag, 0, 'post_tag', 'db' );

Так как значение контекста установлено в db (Database), то применятся фильтры pre_term_{$field}, и pre_{$taxonomy}_{$field} и pre_category_nicename.

И сейчас будет самый бесполезный, но надеюсь, очень понятный пример, при помощи одного из фильтров, к примеру pre_{$taxonomy}_{$field} поменяем значение ярлыка метки в запросе.

// pre_{название таксономии}_{название поля}
add_filter( 'pre_post_tag_slug', 'true_do_some_stuff', 25 );
 
function true_do_some_stuff( $value ) {
 
	// подменяем одно значение на другое
	return 'travel' === $value ? 'travel-to-asia' : $value;
 
}

Теперь при построении запросов при использовании ярлыка метки travel, у нас будут выводиться посты с меткой travel-to-asia.

Источник: Блог Миши Рудрастых

Миша Рудрастых

Путешествует по миру и рассказывает всем о WordPress лично, у себя в блогах и на курсах в Санкт-Петербурге. Умеет просто объяснять сложные вещи, делает это красиво. Организовывает неплохие WordCamp's, но совсем не умеет слушать чужие доклады.

Добавить комментарий

%d такие блоггеры, как: