Функция занимается очисткой информации об элементе таксономии.
Также позволяет добавлять в себя другие правила очистки в зависимости от контекста.
Возвращает очищенное значение.
Если вы не до конца понимаете, про какую «очистку» я говорю, смотрите этот видеоурок.
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.
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.