wp_delete_post_revision()WP 2.6.0

Удаляет ревизию записи по ID.

Порядок работы:

  1. Проверяется существование ревизии с помощью функции wp_get_post_revision(). Если ревизия не найдена, сразу вернёт null.
  2. Если ревизия найдена, то её ID передаётся функции wp_delete_post() на удаление.
  3. Если удаление прошло успешно, то срабатывает хук-событие wp_delete_post_revision.
  4. Возвращается результат операции.
Основа для: wp_save_post_revision()
Хуки из функции

Возвращает

WP_Post|false|null.

  • WP_Post при успешном удалении ревизии.
  • null при ошибке (ревизия не найдена).
  • false при неудачной попытке удаления (запрос в БД провалился).

Использование

wp_delete_post_revision( $revision_id );
$revision_id(число/WP_Post) (обязательный)
ID ревизии или её объект.

Примеры

0

#1 Удалим ревизию с ID = 7

$rev = wp_delete_post_revision( 7 );

if ( $rev ){
	// ревизия удалена успешно
} else {
	// такой ревизии не нашлось
}
0

#2 Удалим все ревизии указанного поста

global $wpdb;
$postid = 5; // ID поста ревизии которого будем удалять

// получим все ревизии поста
$revision_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'revision'", $postid ) );
foreach( $revision_ids as $revision_id ){
	wp_delete_post_revision( $revision_id );
}

Список изменений

С версии 2.6.0 Введена.

Код wp_delete_post_revision() WP 6.5.2

function wp_delete_post_revision( $revision ) {
	$revision = wp_get_post_revision( $revision );

	if ( ! $revision ) {
		return $revision;
	}

	$delete = wp_delete_post( $revision->ID );

	if ( $delete ) {
		/**
		 * Fires once a post revision has been deleted.
		 *
		 * @since 2.6.0
		 *
		 * @param int     $revision_id Post revision ID.
		 * @param WP_Post $revision    Post revision object.
		 */
		do_action( 'wp_delete_post_revision', $revision->ID, $revision );
	}

	return $delete;
}