Как использовать функцию WP_DELETE_TERM() в WordPress: руководство 2022

WP_DELETE_TERM() │ WP 2.3.0

Функция WP_DELETE_TERM() используется для удаления термина из базы данных в WordPress. Это позволяет удалять категории, теги и другие элементы таксономий.

Что делает функция?

  • Удаляет указанный термин из базы данных.
  • Если термин является родительским для других терминов, то дочерние термины будут обновлены, чтобы указывать на родителя этого термина.
  • Все метаданные, связанные с термином, будут также удалены.

Хуки функции

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

  • pre_delete_term — перед удалением термина
  • edit_term_taxonomies — перед изменением дочерних терминов
  • edited_term_taxonomies — после изменения дочерних терминов
  • delete_term_taxonomy — при удалении таксономии термина
  • deleted_term_taxonomy — после удаления таксономии термина
  • delete_term — при удалении термина
  • delete_(taxonomy) — для специфичных таксономий (например, delete_category)

Возврат значения

Функция возвращает:

  • true — если термин успешно удалён.
  • false — если термин не существует.
  • 0 — если попытка удаления затрагивает стандартную категорию.
  • WP_Error — если таксономия не существует.

Использование функции

Функция вызывается таким образом:

wp_delete_term( $term, $taxonomy, $args );

Параметры:

  • $term (int) — Обязательный. ID термина.
  • $taxonomy (string) — Обязательный. Имя таксономии.
  • $args (array|string) — Необязательный. Массив аргументов для переопределения стандартного ID термина.

Пример аргументов:

$args = array(
    'default' => 15, // ID термина, на который перенаправить объекты
    'force_default' => true // Принудительно установить термин как стандартный
);

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

Пример 1: Удаление категории продукта WooCommerce

$nonce = $_POST['pro_cat_nonce'] ?? '';
$product_cat_id = (int) ( $_POST['id'] ?? '' );

// Удаляем термин таксономии 'product_cat'
if ( $product_cat_id && $nonce && wp_verify_nonce( $nonce, 'pro_cat_nonce_delete' ) ) { 
    wp_delete_term( $product_cat_id, 'product_cat' );
}

Пример 2: Удаление термина категории

// Удаляем термин с ID 25, который находится в таксономии 'category'
wp_delete_term( 25, 'category' );

Пример 3: Использование аргументов

// Удаляем термин с ID 25 из "books", при этом все посты перенаправляем на термин с ID 15
wp_delete_term( 25, 'books', [ 'default' => 15, 'force_default' => true ] );

Примечания

  • В функции используется глобальный объект $wpdb, который отвечает за работу с базой данных WordPress.

Изменения

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

Внутренний код функции

Если вас интересует, как работает функция под капотом, вот её реализация:


function wp_delete_term( $term, $taxonomy, $args = array() ) {
global $wpdb;

// Приводим ID термина к целому числу
$term = (int) $term;

// Проверяем, существует ли термин в указанной таксономии
$ids = term_exists( $term, $taxonomy );
if ( ! $ids ) {
    return false;
}
if ( is_wp_error( $ids ) ) {
    return $ids;
}

// Получаем ID термина таксономии
$tt_id = $ids['term_taxonomy_id'];

// Начинаем удаление...
// ...

return true;

}

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

Вот несколько связанных функций для работы с терминами:

  • category_exists()
  • get_term()
  • get_term_by()
  • get_terms()
  • wp_get_object_terms()

Эти функции помогут вам управлять терминами и таксономиями в WordPress.

Leave a Reply

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