Функция sanitize_term(): очистка полей термина в WordPress

Функция sanitize_term() │ WP 2.3.0

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

Как работает sanitize_term()

Функция принимает массив или объект термина, обрабатывает каждое поле с помощью sanitize_term_field() и затем возвращает очищенный массив.

Важно отметить, что в возвращаемый массив добавляется ключ 'filter', который содержит контекст, в котором были очи��ены данные. Это помогает оптимизировать работу, чтобы не очищать поля несколько раз при разных вызовах функции. Если 'filter' есть и он совпадает с указанным контекстом, функция просто вернет переданный объект без повторной очистки.

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

  • term_id
  • name
  • description
  • slug
  • count
  • parent
  • term_group
  • term_taxonomy_id
  • object_id

Замечание: Эта функция не использует хуки.

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

Функция возвращает массив или объект, который содержит термин с очищенными полями.

Синтаксис

sanitize_term( $term, $taxonomy, $context );
  • $term (array|object) (обязательный) — термин, который нужно очистить.
  • $taxonomy (string) (обязательный) — название таксономии, которую нужно использовать.
  • $context (string) — контекст, в котором очищается термин. Принимает значения: 'raw', 'edit', 'db', 'display', 'rss', 'attribute' или 'js'. По умолчанию: 'display'.

Примеры использования

Пример 1: Очистка полей термина

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

$term = sanitize_term( $term, 'category' );

Результат:

/*
Array
(
    [term_id] => 3
    [name] => Word ‘ press foo
    [slug] => word press 
    [term_group] => 0
    [term_taxonomy_id] => 3
    [taxonomy] => category
    [description] => 

Description > » ‘ press foo

[parent] => 0 [count] => 0 [filter] => display ) */

Применения с различными контекстами

Вызов с контекстом 'db'

$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] => Description > " ' press foo
    [parent] => 0
    [count] => 0
    [filter] => db
)
*/

Вызов с контекстом 'raw'

$term = sanitize_term( $term, 'category', 'raw' );

Результат:

/*
Array
(
    [term_id] => 3
    [name] => Word ' press foo
    [slug] => word press 
    [term_group] => 0
    [term_taxonomy_id] => 3
    [taxonomy] => category
    [description] => Description > " ' press foo
    [parent] => 0
    [count] => 0
    [filter] => raw
)
*/

Вызов с контекстом 'js'

$term = sanitize_term( $term, 'category', 'js' );

Результат:

/*
Array
(
    [term_id] => 3
    [name] => Word ‘ press foo
    [slug] => word press 
    [term_group] => 0
    [term_taxonomy_id] => 3
    [taxonomy] => category
    [description] => 

Description > » ‘ press foo

[parent] => 0 [count] => 0 [filter] => js ) */

Изменения

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

Код функции sanitize_term

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

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

  • sanitize_email()
  • sanitize_file_name()
  • sanitize_html_class()
  • sanitize_key()
  • sanitize_meta()
  • sanitize_mime_type()
  • sanitize_option()
  • sanitize_post()
  • sanitize_post_field()
  • sanitize_sql_orderby()
  • sanitize_text_field()
  • sanitize_textarea_field()
  • sanitize_title()
  • sanitize_url()
  • wp_check_invalid_utf8()

Это основные аспекты работы с функцией sanitize_term(), которые помогут вам понять, как очищать термины в WordPress.

Leave a Reply

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