Сегодня наведём порядок в контент части сайта: подстроим тектовый редактор, а именно – ограничим число сохраняемых ревизий (редакций) при написании статей.
Размещение статьи на сайте дело необходимое и даже неизбежное, если вы однажды решили вести блог)
Но как писать статью так, чтобы не засорять лишним мусором Базу Данных?!
Итак, раскрутка сайта статьями – одна из важнейших задач администратора сайта/блога! А раз важнейшая, то и нужно соответствующе организовать рабочее место в редакторе вордпресс: что ж – научимся ограничивать число ревизий (черновиков статей) ибо лишний сор в БД ни к чему…
Вероятно, вы в курсе, что редакции (или ревизии) – это не что иное как наши наработки – черновики, которые время от времени сохраняются в Базе Данных! иногда это здорово выручает.
Выручать-то выручает, но – со временем сайт и его База Данных превращаются в помойку.
Откройте ваш текстовый редактор, зайдите во вкладку «редакции» любой опубликованной статьи и сами увидите бесконечность дат и «редакций».
Это перечисление (видите стрелку) может тянуться до бесконечности. Вам это нужно!?
…и это я ещё показал коротко, чтоб не пугать…
…Во-от!..
Итак:
нас сегодня интересует правильное и полезное размещение статей на сайте. Но следует помнить — работа с блогом многогранна: и наполняя одно, совсем не стоит забывать о другом…
статьи для сайта – отключение сохранения редакций – черновиков
Приступим:
…нынче поработаем на пользу!
Для того, чтобы редакции статей контролировать и удалять по мере необходимости, нынче рассмотрим несколько способов (или вариантов, кому как угодно)…
…назовём эти (коды) варианты регулировки числа редакций постов, к примеру – простенькие хаки.
Хак – представляет собой обычный фильтр-код. Это может быть какой-либо символ в нужном месте, лишняя строчка, скобка и т.п. в примере кода — минипрограммка, что ли, которая и служит остроумному программисту в решении многих задач. Программисту, но не хакеру ВИРУСОНОСЦУ ))
Для нашей «редакционной» работы нам потребуется файл wp-config.php. Он расположен в корне сайта, там, где находятся папки wp-admin, wp-content.
Открываем документ для редактирования, например, в НОТЕПАД++ , или прямо в файловом менеджере вашего хостинга. …ближе к финалу файла, ищем строку, как на примере внизу:
define(‘WP_DEBUG’, false);
/**Это всё, дальше не редактируем. Успехов! */
…и после “Успехов” ( с новой строки) прописываем эту:
define(‘WP_POST_REVISIONS’, 0);
…перед скобкой «ноль», хотя — можно обозначить и «false» –
мне удобнее прописывать цифру «0», ибо это значение удобнее выводить (щёлк клавой — и всё)) например, когда раскодирую всевозможные ссылки в темах WordPress. А вообще-то, вместо «0» можно прописывать «false», как хотите.
«define» — определение констант: «0» и «false» – ложь-фальшь; «1» или «true» соответственно «правда или истина».
Ну, ладно, спешить не будем! Подписывайтесь и не пропускайте темы следующих статей:
Вот ещё способ (станем весело называть «хак»… А вообще, правильнее нашу работу назвать работа с константами вордпресс, читайте подробнее)):
…итак: заходим в папку (всё там же, в корне сайта…) – wp-includes и открываем файл default-constants.php … В его недрах нам нужно найти такие строчки-функции: (если открыть документ в нотепад++ то они будут в районах между 230 и 370 строк).
if ( !defined(‘WP_POST_REVISIONS’) )
define(‘WP_POST_REVISIONS’, true);
– меняем «true» на « false » ИЛИ, как и говорилось выше «true» НА «0».
Поздравляю! ФУНКЦИЯ сохранения редакций отключена напрочь! Но !!!!
Для чего я показал этот способ!?
Для того, чтобы немного познакомить с ядром вордпресс – И предупредить о том, что редактировать ядро cms вордпресс не рекомендовано!
И я советую забыть о подобных правках и никогда не изменять файлы WP!
А чтобы функционал машинки работал по нашим правилам, – решения нужно искать на уровне плагинов или файла функций и т.п…
как при написании статьи ограничить число ревизий WordPress
А вот этим способом, можно и нужно пользоваться запросто:
Чтобы ограничить число сохраняемых редакций статей, нужно открыть документ (файл) легендарный wp-config.php
и вновь отыскать строчки (примеры), которые мы с вами рассматривали в самом начале статьи…
Ориентир фраза:
/**Это всё, дальше не редактируем. Успехов! */
И где-то после неё (через строку) …прописывайте такой пример:
/** Автосохранение изменения статей. */
define('WP_POST_REVISIONS', 2);
define( 'AUTOSAVE_INTERVAL', 120);
2 – первой строки кода – число сохраняемых ревизий.
120 – второй строки – интервал времени сохранения «редакций» в секундах.
Все эти значения можно изменять на оптимальные именно для вас: всё зависят от нашей с вами забывчивости..!
Теперь поздравляю окончательно-с! ФУНКЦИЯ сохранения редакций (ревизий) отключена или ограничена вашим усмотрением.
НО ! – всё таки этой работы на сегодня маловато будет…
Дело в том, что все сохранённые КОПИИ статей (до наших сегодняшних изменений) останутся в базе данных.
Настройка констант (коррекция текстового редактора) станет работать по новым правилам только после сегодняшней правки – при написании новых статей для сайта.
И если у вас блог молодой и ревизионная масса писанины невелика, её можно оставить. Но если огромна – убираем!
как почистить базу данных и удалить все ненужные редакции статей
Для этого заходим в базу данных вашего сайта (на вашем хостинге). Наверняка это вам знакомо!
Значит, хостинг… панель управления сайтом… База Данных MySQL… ну и входим в саму базу блога… (фотки кликабельны)
Нас интересует вкладка меню SQL . Кликаем! …и видим форму ввода запросов пользователя к базе данных))
В это поле с пушкинским вензелем )) прописываем такой запрос:
DELETE FROM wp_posts WHERE post_type = "revision";
Или такой… Пробуйте!
DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision'
Данные SQL запросы применимы для базы данных wordpress со стандартным префиксом wp_
в ее таблицах, если у таблиц в вашей базе данных префикс другой (что довольно редко встречается), то просто-напросто замените в запросе префикс wp_
на тот, который вы используете.
Жмём «ОК» и результат на лицо! База данных будет очищена.
Сравните вес таблицы wp-posts и БД с прежним ворохом))
Для тех, которые пугаются работать с БД – есть замечательный плагин – WP-Optimize, советую установить..
Установка как обычно, через репозиторий вордпресс…
Читайте, как защитить сайт и убираем ненужные ссылки в шапке сайта wp_head
Как отключить автообновление ядра WordPress кстати, в статье и ещё кое-что есть по константам…
Online консультация по настройкам и созданию сайтов на WordPress
mihalica.ru !
Я тоже использую этот код, но он не дает сохраняться ревизиям только при ручном нажатии на кнопку “Обновить”, а если редактирование записи произведено, но “Обновить” временно не нажата, через некоторое время происходит автоматическое сохранение ревизии. Чтобы хоть как-то отсрочить это дело, я увеличил тайм аут автоматического сохранения ревизии. Есть ли другой способ? Как избавиться от автосохранения?
Здравствуйте Дмитрий!
Да, этой константой можно задавать время – тайм аут сохранения ревизий, а можно и полностью отключить автосохранение… (в статье описано) –
Все остальное, а в том числе и плановые ревизии, нужно чистить в БД или, например, плагином WP-Optimize.
Скоро (денька через…) напишу статью по этому поводу…
А вообще, иногда ревизии здорово помогают…
Добрый день Михаил.
Я пробовал в точности, как и описано в статье, но код:
if ( !defined(‘WP_POST_REVISIONS’) )
define(‘WP_POST_REVISIONS’, true);
Не делает того, о чем вы пишите:
Как я и писал выше, при редактировании записи, всё-равно, через некоторый тайм аут, происходит автоматическое сохранение ревизии, о чем говорит строчка под окном редактирования. В базе данных, если вы предварительно почистите все ревизии, в таблице wp_posts появляется новая запись типа revision. В этом и состоит мой вопрос, ка избавиться именно от АВТО сохранения ревизий?
Может, Вы что-то сделали не так (или описано не ясно)):
Для того, чтобы функ. откл. напроч… сработала, нужно, к примеру, в ядре WP (что не рекомендовано) в wp-includes открыть файл default-constants.php и в стр. 324:
if ( !defined(‘WP_POST_REVISIONS’) )
define(‘WP_POST_REVISIONS’, true);
заменить
true
наfalse
Однако можно и в параметрах константы в wp-config.php:
define('WP_POST_REVISIONS', 2);
Заместо 2
true
прописатьfalse
Попробуйте!
Я сейчас проверил на тест-блоге – работает (если мы говорим об одном и том же).
Михаил спасибо за подробное разъяснение, но я всё прекрасно понял ещё из статьи. Всё делаю именно так, как вы дважды описали. Для меня не составляет трудностей найти файл default-constants.php а в нем строки:
if ( !defined(‘WP_POST_REVISIONS’) )
define(‘WP_POST_REVISIONS’, true);
в которых заменить true на false!
Как я уже писал выше, код срабатывает, но только на РУЧНОЕ обновление записи, т.е. ревизии не появляются при нажатии кнопки «Обновить». Но если при редактировании записи сделаны изменения, а кнопка «Обновить» временно не нажата, например если вы думаете чтобы ещё такого написать, то происходит АВТОМАТИЧЕСКОЕ сохранение. Не знаю как ещё доступней объяснить. Ах да, может у нас с вами разные версии движка, я тестил на WordPress 4.7.2 Сделал скриншот, отправлю вам на почту. Вопрос остается открытым, как избавиться от АВТОМАТИЧЕСКОГО сохранения ревизий?
Да я в принципе понял сначала что о черновиках речь – просто сомневался (редакции и их число – это несколько разные вещи: черновик переходит в крайнее число редакции).
Скажите, а какую цель Вы преследуете этим желанием отключить “черновики”? в принципе, полезная и вполне безобидная функция…
Мне интересно даже!
Вы обращали внимание на даты?
При редактировании записи в блоге, дата под окном редактирования не меняетсяся, пока не нажмешь кнопку «Обновить», а автосохранение в базу данных архивной ревизии происходит. Соответственно цель та же самая: сделать меньшее замусоривание базы данных автоматическими ревизиями, можете их называть «черновики», но в базе данных в таблице wp_posts создаются записи типа revision!!! Решение пока мной не найдено…
Я Вас понял…
Что-нибудь придумаю (хотя подобных “зачисток” не делал… Однако примера для:
статус auto-draft добавленный в WordPress 3.0 необходим для того, чтобы на момент открытия текстового редактора, при создания новой записи, она уже имела свой ID (иначе конфликты в логике wp) – это необходимо в том числе и для корректной привязки изображений и пр. (это тот же мусор!?)
К примеру всякие транзиенты, от которых не избавиться за здорово живёшь – тоже мусор?
Это я к тому, что идеала не бывает!
Порядок в организме сайта, это не его полная кастрация, но поддержание чистоты: об этом я Вам говорил.
Черновик (авто.ч – пока “я раздумаю что написать”) привязывается к крайней ревизии (например, как в статье настроено 2 – ревизии) и удаляется вместе с ней тем же плагином, или вручную…
Именно поэтому делают, например, 2 ревизии…
А “черновик” необходим и для корректной работы полезных кнопок редактора “вперёд” “назад” … Эту функцию, как я понимаю, Вам, тоже нужно убрать до кучи?
Однако, вопрос есть вопрос (хотя его практическая сторона мне неясна)!
А значит нужно решение!
Михаил, спасибо что на пальцах разжевали алгоритм работы WordPress, о том что ревизии могут быть нужны самому ядру движка я не думал. Значит единственно правильным решением будет именно то которое я использую, увеличение тайм аута сохранение ревизии например до 1 часа, за такое время уж точно можно успеть сделать все изменения в записи без автосохранений изменений! ))))
Да, Дмитрий, можно и время увеличить…
А можно и записи, при редакции, датировать каким-нить будущим на месяц вперёд, например, а потом выставить нужное.