Функция wp_delete_post()
в WordPress используется для удаления или перемещения в корзину постов и страниц. Она позволяет управлять содержимым вашего сайта, удаляя записи, которые больше не нужны. В данной статье мы рассмотрим, как использовать эту функцию, а также приведем несколько примеров.
wp_delete_post( int $post_id, bool $force_delete = false ): WP_Post|false|null
Параметры
- $post_id:
int
(обязательный) — ID поста, который необходимо удалить. По умолчанию 0. - $force_delete:
bool
(необязательный) — флаг, позволяющий обойти корзину и принудительно удалить пост. По умолчанию:false
.
Возвращаемое значение
Функция возвращает:
WP_Post
— данные удаленного поста при успешном удалении.false
— если попытка удаления не удалась.null
— если поста с переданным ID не существует.
Подробности
При удалении поста или страницы, все, что связано с этим содержимым, также будет удалено. Это включает комментарии, мета-поля поста и термины, связанные с записью. Если пост уже находится в корзине или если отключена функция корзины, то он будет удален навсегда, если установлен параметр $force_delete
.
Важно помнить, что для произвольных типов постов функция wp_delete_post()
удаляет их без возможности восстановления через корзину, даже если параметр $force_delete
равен false
.
Пример 1: Удаление поста по ID
В этом примере мы удалим пост с ID 5.
$deleted_post = wp_delete_post(5);
if ($deleted_post) {
echo "Пост успешно удален: " . $deleted_post->post_title;
} else {
echo "Не удалось удалить пост.";
}
Пример 2: Принудительное удаление поста
В этом примере мы принудительно удалим пост с ID 10, обойдя корзину.
$deleted_post = wp_delete_post(10, true);
if ($deleted_post) {
echo "Пост успешно удален без возможности восстановления: " . $deleted_post->post_title;
} else {
echo "Не удалось удалить пост.";
}
Пример 3: Удаление всех постов произвольного типа
Если вам необходимо удалить все посты произвольного типа, например, «тестовые», вы можете использовать следующий код:
function delete_all_custom_posts() {
$custom_posts = get_posts(array('post_type' => 'test_post', 'numberposts' => -1));
foreach ($custom_posts as $post) {
wp_delete_post($post->ID, true); // Принудительное удаление
}
}
add_action('init', 'delete_all_custom_posts');
Пример 4: Перемещение поста в корзину
Если вы хотите переместить пост с ID 15 в корзину, можете сделать это следующим образом:
$deleted_post = wp_delete_post(15);
if ($deleted_post) {
echo "Пост перемещен в корзину: " . $deleted_post->post_title;
} else {
echo "Не удалось переместить пост в корзину.";
}
Заключение
Функция wp_delete_post()
предоставляет мощный способ управления постами в WordPress. Будьте осторожны при использовании этой функции, так как удаление постов может привести к потере данных, если не учтены все связанные элементы. Если вы хотите удалить посты произвольного типа, помните, что они будут удалены навсегда, если не использовать функцию перемещения в корзину.