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.0.2

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

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *