Функция wp_delete_term()
в WordPress позволяет удалить термин из базы данных, что полезно для управления таксономиями, такими как категории и метки. Эта функция также обновляет дочерние термины и удаляет связанные метаданные.
wp_delete_term( int $term, string $taxonomy, array|string $args = array() ): bool|int|WP_Error
При удалении термина, если он является родительским для других терминов, дочерние термины будут перенесены на уровень выше, а все связанные метаданные также будут удалены.
Параметры
- $term (int) — ID термина, который нужно удалить (обязательный параметр).
- $taxonomy (string) — Название таксономии, к которой принадлежит термин (обязательный параметр).
- $args (array|string) — Массив аргументов для переопределения значений по умолчанию:
- default (int) — ID термина, к которому будут прикреплены «осиротевшие» записи после удаления.
- force_default (bool) — Если true, записи из удаляемого термина будут прикреплены к указанному в
default
термину, даже если у них уже есть другие метки (по умолчанию false).
Возвращаемое значение
- true — Если удаление прошло успешно.
- false — Если термин не удалось удалить.
- 0 — Если удалить этот термин нельзя (например, это термин по умолчанию).
- WP_Error — Если указанная таксономия не существует.
Пример 1: Удаление термина таксономии
Удалим термин с ID 123 из таксономии «category»:
// Удаление термина с ID 123 из таксономии "category"
$result = wp_delete_term(123, 'category');
if ($result) {
echo "Термин успешно удалён.";
} else {
echo "Не удалось удалить термин.";
}
Пример 2: Удаление термина с использованием аргументов
В этом примере удаляем термин с ID 25 из таксономии «books» и помещаем все записи этого термина в термин с ID 15:
// Удаление термина с ID 25 из таксономии "books", при этом все осиротевшие записи будут помещены в термин с ID 15
$result = wp_delete_term(25, 'books', ['default' => 15, 'force_default' => true]);
if ($result) {
echo "Термин успешно удалён и все записи помещены в другой термин.";
} else {
echo "Не удалось удалить термин.";
}
Пример 3: Удаление категории в WooCommerce
Пример удаления категории продукта через POST-запрос. Здесь мы проверяем nonce для безопасности:
if (isset($_POST['pro_cat_nonce']) && wp_verify_nonce($_POST['pro_cat_nonce'], 'pro_cat_nonce_delete')) { // Проверка nonce
if (isset($_POST['id']) && !empty($_POST['id'])) {
// Удаление термина таксономии 'product_cat'
$product_cat_id = intval($_POST['id']);
$result = wp_delete_term($product_cat_id, 'product_cat');
if ($result) {
echo "Категория успешно удалена.";
} else {
echo "Не удалось удалить категорию.";
}
}
}
Заключение
Функция wp_delete_term()
предоставляет удобный способ управления терминами в WordPress, позволяя удалять не только сам термин, но и управлять связанными с ним записями. Это полезно для поддержания структуры и чистоты базы данных при работе с таксономиями.