Как отключить и удалить все редакции в 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%';
Советуем так же рассмотреть плагин WP Revisions Control, который позволяет просматривать и удалять редакции в WordPress, а так же предоставляет интерфейс для установления ограничения на количество редакций для записей и страниц.
Если у вас возникли проблемы или вопросы при управлении редакциями в WordPress — оставьте комментарий и мы с радостью вам ответим.
Иточник — wpmag.ru
UPD 11.10.2017 Метод, использующий on_sent_ok hook, больше не рекомендуется. Эта функция будет отменена к концу…
Как вывести описание категории под товарами в Woocommerce? Вставьте код ниже в файле archive-product.php после…
По умолчанию, в документации указан этот код: Но для сайтов на php, в том числе…
В одном из проектов нужно было встроить к шаблон функционал, который должен меняться в зависимости…