Функция занимается очисткой информации об элементе таксономии.
Также позволяет добавлять в себя другие правила очистки в зависимости от контекста.
Возвращает очищенное значение.
Если вы не до конца понимаете, про какую «очистку» я говорю, смотрите этот видеоурок.
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
- (строка) Название контекста, в котором используется функция.
raw
– без очистки.edit
– применяет фильтры edit_term_{$field} и edit_{$taxonomy}_{$field}. Кроме того, поле с ключомdescription
очистится функцией esc_html(), а все остальные поля – функцией esc_attr().db
– применяет фильтры pre_term_{$field} и pre_{$taxonomy}_{$field}. Кроме того, к полю с ключомslug
ещё и дополнительный фильтр pre_category_nicename. Например, когда вы передаёте ярлык метки в WP_Query, он очищается именно в этом контексте при построении запроса к БД.rss
– применяет фильтры term_{$field}_rss и {$taxonomy}_{$field}_rss.attribute
– применяет фильтры term_{$field} и {$taxonomy}_{$field}. А ещё очищает функцией esc_attr().js
– применяет фильтры term_{$field} и {$taxonomy}_{$field}. А ещё очищает функцией esc_js().display
(или любое произвольное значение) – применяет фильтры term_{$field} и {$taxonomy}_{$field}.
Хуки
Если вдруг вы не знаете, как работать с фильтрами.
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
.
Источник: Блог Миши Рудрастых