Функция sanitize_term() │ WP 2.3.0
Функция sanitize_term() предназначена для очистки всех полей элемента таксономии (термина), используя функцию sanitize_term_field(). Это значит, что она обработает каждое значение термина и вернет очищенный массив или объект.
Как работает sanitize_term()
Функция принимает массив или объект термина, обрабатывает каждое поле с помощью sanitize_term_field() и затем возвращает очищенный массив.
Важно отметить, что в возвращаемый массив добавляется ключ 'filter', который содержит контекст, в котором были очи��ены данные. Это помогает оптимизировать работу, чтобы не очищать поля несколько раз при разных вызовах функции. Если 'filter' есть и он совпадает с указанным контекстом, функция просто вернет переданный объект без повторной очистки.
Также функция удалит недопустимые поля из переданного объекта. Возвращаться будут только следующие поля:
term_idnamedescriptionslugcountparentterm_groupterm_taxonomy_idobject_id
Замечание: Эта функция не использует хуки.
Возвращаемое значение
Функция возвращает массив или объект, который содержит термин с очищенными полями.
Синтаксис
sanitize_term( $term, $taxonomy, $context );
- $term (array|object) (обязательный) — термин, который нужно очистить.
- $taxonomy (string) (обязательный) — название таксономии, которую нужно использовать.
- $context (string) — контекст, в котором очищается термин. Принимает значения:
'raw','edit','db','display','rss','attribute'или'js'. По умолчанию:'display'.
Примеры использования
Пример 1: Очистка полей термина
// Исходный массив
$term = array(
'term_id' => '3',
'name' => 'Word ' press foo ',
'slug' => 'word press ',
'term_group' => 0,
'term_taxonomy_id' => 3,
'taxonomy' => 'category',
'description' => 'Description > " ' press foo ',
'parent' => 0,
'count' => 0,
);
$term = sanitize_term( $term, 'category' );
Результат:
/*
Array
(
[term_id] => 3
[name] => Word ‘ press foo
[slug] => word press
[term_group] => 0
[term_taxonomy_id] => 3
[taxonomy] => category
[description] => Description > » ‘ press foo
[parent] => 0
[count] => 0
[filter] => display
)
*/
Применения с различными контекстами
Вызов с контекстом 'db'
$term = sanitize_term( $term, 'category', 'db' );
Результат:
/*
Array
(
[term_id] => 3
[name] => Word ' press foo
[slug] => word-press-tag
[term_group] => 0
[term_taxonomy_id] => 3
[taxonomy] => category
[description] => Description > " ' press foo
[parent] => 0
[count] => 0
[filter] => db
)
*/
Вызов с контекстом 'raw'
$term = sanitize_term( $term, 'category', 'raw' );
Результат:
/*
Array
(
[term_id] => 3
[name] => Word ' press foo
[slug] => word press
[term_group] => 0
[term_taxonomy_id] => 3
[taxonomy] => category
[description] => Description > " ' press foo
[parent] => 0
[count] => 0
[filter] => raw
)
*/
Вызов с контекстом 'js'
$term = sanitize_term( $term, 'category', 'js' );
Результат:
/*
Array
(
[term_id] => 3
[name] => Word ‘ press foo
[slug] => word press
[term_group] => 0
[term_taxonomy_id] => 3
[taxonomy] => category
[description] => Description > » ‘ press foo
[parent] => 0
[count] => 0
[filter] => js
)
*/
Изменения
Функция была введена в версии 2.3.0 WordPress.
Код функции sanitize_term
function sanitize_term( $term, $taxonomy, $context = 'display' ) {
$fields = array( 'term_id', 'name', 'description', 'slug', 'count', 'parent', 'term_group', 'term_taxonomy_id', 'object_id' );
$do_object = is_object( $term );
$term_id = $do_object ? $term->term_id : ( isset( $term['term_id'] ) ? $term['term_id'] : 0 );
foreach ( (array) $fields as $field ) {
if ( $do_object ) {
if ( isset( $term->$field ) ) {
$term->$field = sanitize_term_field( $field, $term->$field, $term_id, $taxonomy, $context );
}
} else {
if ( isset( $term[ $field ] ) ) {
$term[ $field ] = sanitize_term_field( $field, $term[ $field ], $term_id, $taxonomy, $context );
}
}
}
if ( $do_object ) {
$term->filter = $context;
} else {
$term['filter'] = $context;
}
return $term;
}
Связанные функции
sanitize_email()sanitize_file_name()sanitize_html_class()sanitize_key()sanitize_meta()sanitize_mime_type()sanitize_option()sanitize_post()sanitize_post_field()sanitize_sql_orderby()sanitize_text_field()sanitize_textarea_field()sanitize_title()sanitize_url()wp_check_invalid_utf8()
Это основные аспекты работы с функцией sanitize_term(), которые помогут вам понять, как очищать термины в WordPress.