Удаление ревизии поста в WordPress: функция WP_DELETE_POST_REVISION()

WP_DELETE_POST_REVISION() │ WP 2.6.0

Функция WP_DELETE_POST_REVISION() предназначена для удаления ревизии поста в WordPress. Она удаляет запись из таблицы постов, соответствующую указанной ревизии.

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

Функция используется внутри wp_save_post_revision(), чтобы управлять ревизиями постов.

Хуки функции

  • wp_delete_post_revision — хук, который срабатывает после удаления ревизии поста.

Возвращаемое значение

Функция возвращает объект поста (WP_Post), если ревизия была успешно удалена. Если произошла ошибка, функция вернет null или false.

Синтаксис

wp_delete_post_revision( $revision );

Параметры

  • $revision (int|WP_Post) — обязательный параметр. Это идентификатор ревизии или объект ревизии.

Примеры использования

Пример 1: Удалить ревизию с ID = 7

$rev = wp_delete_post_revision( 7 );

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

Пример 2: Удалить все ревизии определенного поста

global $wpdb;

$postid = 5;

// Получаем все ревизии поста
$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 в WordPress:

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

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

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

    if ( $delete ) {
        /**
         * Срабатывает после успешного удаления ревизии поста.
         *
         * @param int     $revision_id ID ревизии поста.
         * @param WP_Post $revision    Объект ревизии поста.
         */
        do_action( 'wp_delete_post_revision', $revision->ID, $revision );
    }

    return $delete;
}

Связанные функции

При работе с ревизиями постов также могут быть полезны следующие функции:

  • wp_delete_auto_drafts() — удаляет автоматические черновики.
  • wp_get_post_revision() — получает ревизию поста по ID.
  • wp_get_post_revisions() — получает все ревизии поста.
  • wp_is_post_autosave() — проверяет, является ли пост автосохранением.
  • wp_is_post_revision() — проверяет, является ли пост ревизией.
  • wp_revisions_enabled() — проверяет, включены ли ревизии для поста.
  • wp_revisions_to_keep() — определяет, сколько ревизий сохранять.
  • wp_save_post_revision() — сохраняет текущую версию поста как ревизию.
  • wp_text_diff() — сравнивает текст ревизий.

Эта статья поможет вам лучше понять, как работает функция удаления ревизий в WordPress и как ее можно использовать в различных сценариях.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *