wp_delete_comment() WP 2.0.0
Удаляет или помещает в корзину комментарий по указанному ID.
Если корзина отключена, то комментарий будет удален навсегда, второй параметр ($force_delete) становится ненужным.
Возвращает
true/false. true - при удачном удалении и false - не удалось удалить.
Использование
wp_delete_comment( $comment_id, $force_delete );
- $comment_id(число) (обязательный)
- ID комментария, который нужно удалить.
По умолчанию: нет
- $force_delete(логический)
- Принудительное удаление. Если нужно удалить комментарий не помещая его в корзину, ставим true.
По умолчанию: false
Примеры
#1. Удаление комментария в WordPress
Удалим комментарий 457 и выведем сообщение в случае успеха "комментарий 457 удален!":
$id = 457;
$tt = wp_delete_comment( $id, true ); // удаляем мимо корзины
if( $tt ) echo "Комментарий $id удален!";
#2. Удаление комментария в корзину
Поместим комментарий 457 в корзину (при условии что корзина не выключена):
$id = 457;
$tt = wp_delete_comment( $id );
if( $tt ) echo "Комментарий $id помещен в корзину!";
Заметки
-
Использует wp_trash_comment()
, если корзина включена и второй параметр не установлен в true;
-
Использует действие (фильтр) wp_set_comment_status
, если коммента помещается в корзину, устанавливается статус 'delete';
-
Использует действие (фильтр) deleted_comment
, после того как комментарий удален, в случае успешного удаления;
- Использует действие (фильтр)
delete_comment
, передает ID комментария.
Заметки
- Global. wpdb. $wpdb WordPress database abstraction object.
Список изменений
Код wp_delete_comment() wp delete comment
WP 5.6.2
<?php
function wp_delete_comment( $comment_id, $force_delete = false ) {
global $wpdb;
$comment = get_comment( $comment_id );
if ( ! $comment ) {
return false;
}
if ( ! $force_delete && EMPTY_TRASH_DAYS && ! in_array( wp_get_comment_status( $comment ), array( 'trash', 'spam' ), true ) ) {
return wp_trash_comment( $comment_id );
}
/**
* Fires immediately before a comment is deleted from the database.
*
* @since 1.2.0
* @since 4.9.0 Added the `$comment` parameter.
*
* @param int $comment_id The comment ID.
* @param WP_Comment $comment The comment to be deleted.
*/
do_action( 'delete_comment', $comment->comment_ID, $comment );
// Move children up a level.
$children = $wpdb->get_col( $wpdb->prepare( "SELECT comment_ID FROM $wpdb->comments WHERE comment_parent = %d", $comment->comment_ID ) );
if ( ! empty( $children ) ) {
$wpdb->update( $wpdb->comments, array( 'comment_parent' => $comment->comment_parent ), array( 'comment_parent' => $comment->comment_ID ) );
clean_comment_cache( $children );
}
// Delete metadata.
$meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->commentmeta WHERE comment_id = %d", $comment->comment_ID ) );
foreach ( $meta_ids as $mid ) {
delete_metadata_by_mid( 'comment', $mid );
}
if ( ! $wpdb->delete( $wpdb->comments, array( 'comment_ID' => $comment->comment_ID ) ) ) {
return false;
}
/**
* Fires immediately after a comment is deleted from the database.
*
* @since 2.9.0
* @since 4.9.0 Added the `$comment` parameter.
*
* @param int $comment_id The comment ID.
* @param WP_Comment $comment The deleted comment.
*/
do_action( 'deleted_comment', $comment->comment_ID, $comment );
$post_id = $comment->comment_post_ID;
if ( $post_id && 1 == $comment->comment_approved ) {
wp_update_comment_count( $post_id );
}
clean_comment_cache( $comment->comment_ID );
/** This action is documented in wp-includes/comment.php */
do_action( 'wp_set_comment_status', $comment->comment_ID, 'delete' );
wp_transition_comment_status( 'delete', $comment->comment_approved, $comment );
return true;
}
Cвязанные функции