WordPress как на ладони
wordpress jino

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 комментария.

Код wp delete comment: wp-includes/comment.php WP 4.8.2

<?php
function wp_delete_comment($comment_id, $force_delete = false) {
	global $wpdb;
	if (!$comment = get_comment($comment_id))
		return false;

	if ( !$force_delete && EMPTY_TRASH_DAYS && !in_array( wp_get_comment_status( $comment ), array( 'trash', 'spam' ) ) )
		return wp_trash_comment($comment_id);

	/**
	 * Fires immediately before a comment is deleted from the database.
	 *
	 * @since 1.2.0
	 *
	 * @param int $comment_id The comment ID.
	 */
	do_action( 'delete_comment', $comment->comment_ID );

	// 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
	 *
	 * @param int $comment_id The comment ID.
	 */
	do_action( 'deleted_comment', $comment->comment_ID );

	$post_id = $comment->comment_post_ID;
	if ( $post_id && $comment->comment_approved == 1 )
		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вязанные функции

Из раздела: Комментарии

wp_delete_comment Комментариев нет

Здравствуйте, !

Ваш комментарий