WordPress как на ладони
wordpress jino

sanitize_term() WP 2.3.0

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

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

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

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

array( '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'

Примеры

#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
)
*/

Код sanitize term: wp-includes/taxonomy.php VER 4.9.1

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

Cвязанные функции

Из метки: sanitize_ (очистка)

Еще из раздела: Любые таксономии

sanitize_term Комментариев нет

    Здравствуйте, !

    Ваш комментарий
    Предпросмотр