Как отключить и удалить все редакции в WordPress без плагина

Редакции (или ревизии) в WordPress существуют уже давно. Они позволяют сохранять резервную копию записи или страницы при каждом изменении, а затем просматривать все версии с возможностью восстановить любую из них.

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

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

Ограничение количества редакций

По умолчанию WordPress хранит все редакции для записей и страниц. Это легко изменить с помощью фильтра wp_revisions_to_keep в вашем плагине, или с помощью константы WP_POST_REVISIONS в файле конфигурации wp-config.php. Например, если нам нужно сохранять только 5 последних версий записей и страниц, наш плагин будет выглядеть так:

/**
 * Plugin Name: My Revisions Config
 */
function my_revisions_to_keep( $revisions ) {
    return 5;
}
add_filter( 'wp_revisions_to_keep', 'my_revisions_to_keep' );

Скачать плагин для ограничения количества ревизий на своем сайте можно по ссылке.

С помощью фильтра можно так же ограничивать редакции в зависимости от типа записи. Например, если нам необходимо 10 редакций для страниц и всего 5 редакций для записей (и других типов), то наш плагин будет выглядеть следующим образом:

function my_revisions_to_keep( $revisions, $post ) {
    if ( 'page' == $post->post_type )
        return 10;
    else
        return 5;
}
add_filter( 'wp_revisions_to_keep', 'my_revisions_to_keep', 10, 2 );

Вы так же можете установить ограничение с помощью директивы WP_POST_REVISIONS в файле конфигурации WordPress wp-config.php, но разделение на типы записей с помощью этого метода уже сделать будет невозможно:

define( 'WP_POST_REVISIONS', 5 );

Как отключить редакции

С помощью этих же методов, вы можете и вовсе отказаться от редакций в WordPress. Для этого необходимо установить нулевое ограничение:

function my_revisions_to_keep( $revisions ) {
    return 0;
}
add_filter( 'wp_revisions_to_keep', 'my_revisions_to_keep' );

Или с помощью файла wp-config.php:

define( 'WP_POST_REVISIONS', 0 );

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

Как удалить все редакции

После того, как вы отключили редакции в WordPress, вы наверняка захотите удалить все созданные ранее редакции из базы данных WordPress. Сделать это легко с помощью пары запросов в MySQL через командную строку или интерфейс phpMyAdmin.

Перед тем, как удалить все редакции, необходимо удалить их мета-данные и таксономию, если они имеются. Сделать это можно с помощью запроса:

DELETE FROM wp_postmeta WHERE post_id IN (SELECT ID FROM wp_posts WHERE post_type = 'revision' AND post_name LIKE '%revision%');

Похожий запрос для удалении таксономии:

DELETE FROM wp_term_relationships WHERE object_id IN (SELECT ID FROM wp_posts WHERE post_type = 'revision' AND post_name LIKE '%revision%');

И наконец, удалить сами ревизии:

DELETE FROM wp_posts WHERE post_type = 'revision' AND post_name LIKE '%revision%';

Данный запрос удалит все редакции из базы данных WordPress, за исключением автосохранений. Перед исполнением любых подобных запросов, рекомендуем сделать резервную копию вашей базы данных MySQL.

Все три запроса вместе:

DELETE FROM wp_postmeta WHERE post_id IN (SELECT ID FROM wp_posts WHERE post_type = 'revision' AND post_name LIKE '%revision%');
DELETE FROM wp_term_relationships WHERE object_id IN (SELECT ID FROM wp_posts WHERE post_type = 'revision' AND post_name LIKE '%revision%');
DELETE FROM wp_posts WHERE post_type = 'revision' AND post_name LIKE '%revision%';

Как отключить и удалить все редакции в WordPress без плагина

Советуем так же рассмотреть плагин WP Revisions Control, который позволяет просматривать и удалять редакции в WordPress, а так же предоставляет интерфейс для установления ограничения на количество редакций для записей и страниц.

Если у вас возникли проблемы или вопросы при управлении редакциями в WordPress — оставьте комментарий и мы с радостью вам ответим.

Иточник — wpmag.ru

Действия после успешной отправки формы CF7

UPD 11.10.2017 Метод, использующий on_sent_ok hook, больше не рекомендуется. Эта функция будет отменена к концу…

Как вывести описание категории под товарами в Woocommerce

Как вывести описание категории под товарами в Woocommerce? Вставьте код ниже в файле archive-product.php после…

Код sape для сайтов на php

По умолчанию, в документации указан этот код: Но для сайтов на php, в том числе…

Условия для плагина polylang для определения текущего языка

В одном из проектов нужно было встроить к шаблон функционал, который должен меняться в зависимости…

Ответить