sanitize_term_field() WP 2.3.0

Підготовляє (очищає) значення поля терміна (рубрик) для його використання в тексті або десь ще (залежить від контексту очищення).

Передане в цю функцію значення будь-якого поля, яке описує термін, буде підготовлено для використання цього значення у тексті.

Якщо буде передано значення, що не відповідає контексту терміна, то буде застосований фільтр за замовчуванням: term_{$field}потім {$taxonomy}_{$field}.

У цій функції досить багато фільтрів, щоб не створювати свою окрему функції фільтрації, а використовувати вже наявні фільтри, підключаючись до фільтрів через хуки (див. код функції).

Основа для:
sanitize_term() ,
get_term_field()

Повертає

Разное. Число/рядок/масив/об’єкт. Відфільтроване поле, різне значення, залежить від переданого поля.

Використання

sanitize_term_field( $field, $value, $term_id, $taxonomy, $context );
$field
(рядок) (обов’язковий)
Назва поля терміна. Наприклад: parent, term_id, count тощо.
$value
(рядок) (обов’язковий)
Значення поля, указного в $field. Це значення очищатиметься, фільтруватиметься.
$term_id
(число) (обов’язковий)
ID термін.
$taxonomy
(рядок) (обов’язковий)
Назва таксономії, до якої належить термін.
$context
(рядок) (обов’язковий)

Тип фільтрації. ‘display’

Одне із значень:

  • display– Виведення на екран. Використовується за замовчуванням, якщо не вказано жодного з інших контекстів.
  • raw– Просто поверне значення.
  • edit– фільтр esc_attr() для інших нечислових полів.
  • db
  • slug
  • rss
  • attribute– Фільтр esc_attr() .
  • js– Фільтр esc_js() .

Приклади

0

#1 Приклад фільтрації

Приклад функції ядра WP get_term_field() , в якій фільтрується результат через цю функцію:

function get_term_field( $field, $term, $taxonomy, $context = 'display' ) {
	$ term = (int) $ term;
	$ term = get_term ($ term, $ taxonomy);
	if ( is_wp_error($term) )
		return $term;

	if ( !is_object($term) )
		return '';

	if ( !isset($term->$field) )
		return '';

	return sanitize_term_field($field, $term->$field, $term->term_id, $taxonomy, $context);
}

список змін

З версії 2.3.0Введено.

Код sanitize_term_field() WP 6.0.2

function sanitize_term_field( $field, $value, $term_id, $taxonomy, $context ) {
	$int_fields = array( 'parent', 'term_id', 'count', 'term_group', 'term_taxonomy_id', 'object_id' );
	if ( in_array( $field, $int_fields, true ) ) {
		$ value = (int) $ value;
		if ( $value < 0 ) {
			$ value = 0;
		}
	}

	$context = strtolower( $context );

	if ( 'raw' === $context ) {
		return $value;
	}

	if ( 'edit' === $context ) {

		/**
		 * Filters a term field до edit before it is sanitized.
		 *
		 * Динамічна порція з звуку name, `$field`, refers to the term field.
		 *
		 * @ Since 2.3.0
		 *
		 * @param mixed $value Value of the term field.
		 * @param int $term_id Term ID.
		 * @param string $taxonomy Taxonomy slug.
		 */
		$value = apply_filters( "edit_term_{$field}", $value, $term_id, $taxonomy );

		/**
		 * Filters taxonomy field для editedfor it is sanitized.
		 *
		 * The dynamic portions of filter name, `$taxonomy` and `$field`, refer
		 * до taxonomy slug and taxonomy field, respectively.
		 *
		 * @ Since 2.3.0
		 *
		 * @param mixed $value Value of taxonomy field to edit.
		 * @param int $term_id Term ID.
		 */
		$value = apply_filters( "edit_{$taxonomy}_{$field}", $value, $term_id );

		if ( 'description' === $field ) {
			$ value = esc_html ($ value); //textarea_escaped
		} else {
			$ value = esc_attr ($ value);
		}
	} elseif ( 'db' === $context ) {

		/**
		 * Filters a term field value before it is sanitized.
		 *
		 * Динамічна порція з звуку name, `$field`, refers to the term field.
		 *
		 * @ Since 2.3.0
		 *
		 * @param mixed $value Value of the term field.
		 * @param string $taxonomy Taxonomy slug.
		 */
		$value = apply_filters( "pre_term_{$field}", $value, $taxonomy );

		/**
		 * Filters a taxonomy field before it is sanitized.
		 *
		 * The dynamic portions of filter name, `$taxonomy` and `$field`, refer
		 * до taxonomy slug and field name, respectively.
		 *
		 * @ Since 2.3.0
		 *
		 * @param mixed $value Value of the taxonomy field.
		 */
		$value = apply_filters( "pre_{$taxonomy}_{$field}", $value );

		// Back compat filters.
		if ( 'slug' === $field ) {
			/**
			 * Filters category nicename before it is sanitized.
			 *
			 * Use the {@see 'pre_$taxonomy_$field'} hook instead.
			 *
			 * @ Since 2.0.3
			 *
			 * @param string $value category nicename.
			 */
			$value = apply_filters( 'pre_category_nicename', $value );
		}
	} elseif ( 'rss' === $context ) {

		/**
		 * Filters the term field для використання в RSS.
		 *
		 * Динамічна порція з звуку name, `$field`, refers to the term field.
		 *
		 * @ Since 2.3.0
		 *
		 * @param mixed $value Value of the term field.
		 * @param string $taxonomy Taxonomy slug.
		 */
		$value = apply_filters( "term_{$field}_rss", $value, $taxonomy);

		/**
		 * Filters taxonomy field для використання в RSS.
		 *
		 * The dynamic portions of hook name, `$taxonomy`, and `$field`, refer
		 * до taxonomy slug and field name, respectively.
		 *
		 * @ Since 2.3.0
		 *
		 * @param mixed $value Value of the taxonomy field.
		 */
		$value = apply_filters( "{$taxonomy}_{$field}_rss", $value );
	} else {
		// Use display filters by default.

		/**
		 * Filters the term field sanitized for display.
		 *
		 * The dynamickа порція 'hook name', `$field`, refers to the term field name.
		 *
		 * @ Since 2.3.0
		 *
		 * @param mixed $value Value of the term field.
		 * @param int $term_id Term ID.
		 * @param string $taxonomy Taxonomy slug.
		 * @param string $context Context для відкриття терм field value.
		 */
		$value = apply_filters( "term_{$field}", $value, $term_id, $taxonomy, $context );

		/**
		 * Filters taxonomy field sanitized для display.
		 *
		 * The dynamic portions of filter name, `$taxonomy`, and `$field`, refer
		 * до taxonomy slug and taxonomy field, respectively.
		 *
		 * @ Since 2.3.0
		 *
		 * @param mixed $value Value of the taxonomy field.
		 * @param int $term_id Term ID.
		 * @param string $context Context для відкриття taxonomy field value.
		 */
		$value = apply_filters( "{$taxonomy}_{$field}", $value, $term_id, $context );
	}

	if ( 'attribute' === $context ) {
		$ value = esc_attr ($ value);
	} elseif ( 'js' === $context ) {
		$ value = esc_js ($ value);
	}

	// Відновити тип для integer fields after esc_attr().
	if ( in_array( $field, $int_fields, true ) ) {
		$ value = (int) $ value;
	}

	return $value;
}

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

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