sanitize_term()WP 2.3.0

Очищает все поля элемента таксономии с помощью функции sanitize_term_field().

Принимает массив или объект данных элемента таксономии обрабатывает каждое значение с помощью sanitize_term_field() и возвращает переданный массив.

Также в возвращаемый массив/объект добавляется ключ 'filter' = $context в значении которого указан контекст в котором были очищены все поля. Нужно это для оптимизации, чтобы не очищать поля повторно. Т.е. если 'filter' указан и он совпадает с переданным контекстом, то функция просто вернет переданный объект.

Также функция удалит недопустимые поля из переданного объекта. Возвращаются только эти поля:

term_id
name
description
slug
count
parent
term_group
term_taxonomy_id
object_id
Работает на основе: sanitize_term_field()
1 раз — 0.000771 сек (медленно) | 50000 раз — 6 сек (быстро)

Хуков нет.

Возвращает

Массив|Объект. Массив/объект со всеми очищенными полями.

Использование

sanitize_term( $term, $taxonomy, $context );
$term(массив/объект) (обязательный)
Объект элемента таксономии, все поля которого нужно очистить.
$taxonomy(строка) (обязательный)
Название таксономии.
$context(строка)

Контекст в котором нужно очищать все поля. См. описание sanitize_term_field(). Может быть:

  • display - для вывода на экран
  • raw - просто вернет значение
  • edit - фильтр esc_html() если это поле description, и фильтр esc_attr() если другое поле.
  • db
  • slug
  • rss
  • attribute - фильтр esc_attr()
  • js - фильтр esc_js()

По умолчанию: 'display'

Примеры

0

#1 Демонстрация очистки полей элемента таксономии

// Исходный массив
$term = array(
	'term_id'          => '3',
	'name'             => 'Word \' press <tag>foo</tag>',
	'slug'             => 'word press <tag>',
	'term_group'       => 0,
	'term_taxonomy_id' => 3,
	'taxonomy'         => 'category',
	'description'      => 'Описание > " \' press <tag>foo</tag>',
	'parent'           => 0,
	'count'            => 0,
);

$term = sanitize_term( $term, 'category' );
/*
Array
(
	[term_id] => 3
	[name] => Word ‘ press <tag>foo</tag>
	[slug] => word press <tag>
	[term_group] => 0
	[term_taxonomy_id] => 3
	[taxonomy] => category
	[description] => <p>Описание > » ‘ press <tag>foo</tag></p>
	[parent] => 0
	[count] => 0
	[filter] => display
)
*/

$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] => Описание > \" \' press foo
	[parent] => 0
	[count] => 0
	[filter] => db
)
*/

$term = sanitize_term( $term, 'category', 'raw' );
/*
Array
(
	[term_id] => 3
	[name] => Word ' press <tag>foo</tag>
	[slug] => word press <tag>
	[term_group] => 0
	[term_taxonomy_id] => 3
	[taxonomy] => category
	[description] => Описание > " ' press <tag>foo</tag>
	[parent] => 0
	[count] => 0
	[filter] => raw
)
*/

$term = sanitize_term( $term, 'category', 'js' );
/*
Array
(
	[term_id] => 3
	[name] => Word ‘ press <tag>foo</tag>
	[slug] => word press <tag>
	[term_group] => 0
	[term_taxonomy_id] => 3
	[taxonomy] => category
	[description] => <p>Описание > » ‘ press <tag>foo</tag></p>
	[parent] => 0
	[count] => 0
	[filter] => js
)
*/

Список изменений

С версии 2.3.0 Введена.

Код sanitize_term() WP 6.4.3

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;
}