Функция SANITIZE_TERM_FIELD() в WordPress: основные характеристики, использование и примеры

Функция SANITIZE_TERM_FIELD() в WordPress

Функция sanitize_term_field() используется для подготовки (очистки) значения поля термина, чтобы его можно было безопасно использовать в текстах или в других местах. Эта функция помогает убедиться, что данные, связанные с терминами, безопасны для отображения.

Основные характеристики

  • Если вы передаете значение поля термина через эту функцию, то можно быть уверенным, что значение было очищено для использования в нужном контексте.
  • Если контекст не указан или не поддерживается, будут применены стандартные фильтры.

Функция имеет множество фильтров для различных контекстов, что позволяет разработчикам настраивать поведение без создания своих собственных функций фильтрации. Просто создайте функцию, которая подключается к нужному фильтру.

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

sanitize_term_field( $field, $value, $term_id, $taxonomy, $context );
  • $field (string, обязательный) — Поле термина, которое нужно очистить.
  • $value (string, обязательный) — Значение термина.
  • $term_id (int, обязательный) — ID термина.
  • $taxonomy (string, обязательный) — Название таксономии.
  • $context (string, обязательный) — Контекст, в котором нужно очистить поле термина. Поддерживает значения 'raw', 'edit', 'db', 'display', 'rss', 'attribute' или 'js'. По умолчанию: 'display'.

Примеры

Пример фильтрации с использованием get_term_field()

Функция get_term_field() пример, который показывает, как результат очищается с помощью функции sanitize_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 );
}

Возвращаемое значение

Функция возвращает очищенное значение поля термина.

Постоянные изменения

Функция sanitize_term_field() была введена в версии 2.3.0 WordPress.

Код функции

Вот как выглядит код функции sanitize_term_field():


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 ) {
    // Применяем фильтры для редактирования
    $value = apply_filters( "edit_term_{$field}", $value, $term_id, $taxonomy );
    $value = apply_filters( "edit_{$taxonomy}_{$field}", $value, $term_id );

    if ( 'description' === $field ) {
        $value = esc_html( $value ); // экранирование для текстовой области
    } else {
        $value = esc_attr( $value );
    }
} elseif ( 'db' === $context ) {
    // Применяем фильтры перед сохранением в базе данных
    $value = apply_filters( "pre_term_{$field}", $value, $taxonomy );
    $value = apply_filters( "pre_{$taxonomy}_{$field}", $value );
} elseif ( 'rss' === $context ) {
    // Фильтруем для использования в RSS
    $value = apply_filters( "term_{$field}_rss", $value, $taxonomy );
    $value = apply_filters( "{$taxonomy}_{$field}_rss", $value );
} else {
    // По умолчанию используем фильтры для отображения
    $value = apply_filters( "term_{$field}", $value, $term_id, $taxonomy, $context );
    $value = apply_filters( "{$taxonomy}_{$field}", $value, $term_id, $context );
}

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

// Восстанавливаем тип для целочисленных полей после экранирования
if ( in_array( $field, $int_fields, true ) ) {
    $value = (int) $value;
}

return $value;

}

Заключение

Функция sanitize_term_field() является важным инструментом для очистки данных в WordPress. Она помогает обеспечить безопасность и корректность данных, связанных с терминами, такими как категории и метки. Правильное использование этой функции и понимание ее контекстов поможет вам избежать потенциальных проблем с безопасностью в ваших проектах на WordPress.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *