Как использовать функцию wp_update_term() в WordPress 2.3.0

WP_UPDATE_TERM() │ WordPress 2.3.0

Функция wp_update_term() обновляет термин (элемент таксономии) с помощью указанных данных.

Как это работает

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

Все поля, указанные в $args, будут перезаписаны в базе данных. Поэтому внимательно проверяйте обновленные данные, чтобы убедиться, что вы ничего не изменили ненароком.

Если вам нужно добавить новый термин, используйте функцию wp_insert_term().

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

wp_update_term( $term_id, $taxonomy, $args );
  • $term_id (int) (обязательный): ID термина, который вы хотите обновить.
  • $taxonomy (string) (обязательный): название таксономии, к которой относится термин (например, category, post_tag).
  • $args (array|string): массив или строка (в виде запроса) новых полей термина.

Поля в $args

  • name (string): Новый имя термина. (по умолчанию: '')
  • slug (string): Новый слаг термина.
    • Если вы не передадите слаг, будет создан уникальный на основе названия (name).
    • Если слаг не уникален, вернется ошибка.
  • description (string): Описание термина. (по умолчанию: '')
  • parent (int): ID родительского термина. (по умолчанию: 0)
  • alias_of (string): Слаг термина, для группировки текущего обновляемого термина с указанным термином в одну группу.

Пример обновления термина

В этом примере показано, как обновить термин с ID=1 в таксономии "категории". Давайте установим новое имя для термина:

$result = wp_update_term( 1, 'category', [
    'name' => 'Новая Категория',
    // 'slug' => 'novaya-kategoriya' // этот параметр создается автоматически
] );

// проверяем результат
if( is_wp_error( $result ) ){
    echo $result->get_error_message();
} else {
    echo 'Термин был успешно обновлен.';
}

Что возвращает функция

  • Array: массив, содержащий term_id и term_taxonomy_id.
  • WP_Error: объект ошибки, если произошла ошибка, например, не уникальный слаг.

Примечания

  • Глобальная переменная: $wpdb - объект абстракции базы данных WordPress.

Изменения

  • С версии: 2.3.0 — функция была введена.

Функция находится в файле wp-includes/taxonomy.php.

function wp_update_term( $term_id, $taxonomy, $args = array() ) {
    global $wpdb;

    if ( ! taxonomy_exists( $taxonomy ) ) {
        return new WP_Error( 'invalid_taxonomy', __( 'Недопустимая таксономия.' ) );
    }

    $term_id = (int) $term_id;

    // Получаем исходные данные термина.
    $term = get_term( $term_id, $taxonomy );

    if ( is_wp_error( $term ) ) {
        return $term;
    }

    if ( ! $term ) {
        return new WP_Error( 'invalid_term', __( 'Пустой термин.' ) );
    }

    $term = (array) $term->data;

    // Экранируем данные из базы данных.
    $term = wp_slash( $term );

    // Объединяем старые и новые аргументы.
    $args = array_merge( $term, $args );

    $defaults = array(
        'alias_of'    => '',
        'description' => '',
        'parent'      => 0,
        'slug'        => '',
    );
    $args = wp_parse_args( $args, $defaults );
    $args = sanitize_term( $args, $taxonomy, 'db' );

    $name = wp_unslash( $args['name'] );
    $description = wp_unslash( $args['description'] );

    if ( '' === trim( $name ) ) {
        return new WP_Error( 'empty_term_name', __( 'Имя термина обязательно.' ) );
    }

    // Дополнительная логика для получения slug и обновления данных в базе данных...

    return array(
        'term_id'          => $term_id,
        'term_taxonomy_id' => $tt_id,
    );
}

Заключение

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

Leave a Reply

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