Функция занимается очисткой информации об элементе таксономии.
Также позволяет добавлять в себя другие правила очистки в зависимости от контекста.
Возвращает очищенное значение.
Если вы не до конца понимаете, про какую «очистку» я говорю, смотрите этот видеоурок.
sanitize_term_field( $field, $value, $term_id, $taxonomy, $context )
parent
, term_id
, count
, term_group
, term_taxonomy_id
, object_id
, то функция в первую очередь очистит их как целые неотрицательные числа вне зависимости от контекста.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}.
Если вдруг вы не знаете, как работать с фильтрами.
$value = apply_filters( "edit_term_{$field}", $value, $term_id, $taxonomy );
$value = apply_filters( "edit_{$taxonomy}_{$field}", $value, $term_id );
$value = apply_filters( "pre_term_{$field}", $value, $taxonomy );
$value = apply_filters( "pre_{$taxonomy}_{$field}", $value );
$value = apply_filters( 'pre_category_nicename', $value );
$value = apply_filters( "term_{$field}_rss", $value, $taxonomy );
$value = apply_filters( "{$taxonomy}_{$field}_rss", $value );
$value = apply_filters( "term_{$field}", $value, $term_id, $taxonomy, $context );
$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
.
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.