Функция, которая устанавливает лимит в 3 ревизии только для обычных записей
Чтобы ограничить число сохраняемых редакций (ревизий) до 3, нужно добавить одну строку кода в файл wp-config.php.
💻 Как добавить ограничение
Откройте wp-config.php (через FTP или файловый менеджер хостинга), тот же файл, где вы недавно увеличивали память.
Найдите строку:
/* That’s all, stop editing! Happy publishing. */
Вставьте эту строку ПЕРЕД ней:
define( 'WP_POST_REVISIONS', 3 );
Сохраните файл.
📌 Важный нюанс
Эта настройка не удалит уже существующие 7 редакций автоматически. Она ограничит количество новых ревизий, которые будут сохраняться при последующих изменениях записи.
Чтобы избавиться от старых, лишних редакций, нужно либо очистить их вручную через базу данных (запрос DELETE FROM wp_posts WHERE post_type = ‘revision’;), либо использовать плагин вроде WP-Optimize.
🛠️ Альтернатива для точного контроля
Если вы хотите задать разные лимиты для разных типов записей (например, для записей — 3, а для страниц — 10), используйте плагин Simple Revision Control. Он позволяет настроить лимит отдельно для каждого типа без правки кода.
Чтобы ограничить количество ревизий записи до 3 через функцию (а не только через wp-config.php), нужно использовать хук wp_revisions_to_keep или константу WP_POST_REVISIONS.
💻 Как это работает
В WordPress есть функция wp_revisions_to_keep(), которая определяет, сколько ревизий сохранять для конкретной записи. По умолчанию она возвращает значение константы WP_POST_REVISIONS, которую вы задаете в wp-config.php.
Однако, если вам нужно более гибкое управление (например, разный лимит для разных типов записей или ролей), можно использовать фильтр wp_revisions_to_keep. Он позволяет переопределить значение константы программно.
📝 Пример кода (для functions.php)
Вот пример функции, которая устанавливает лимит в 3 ревизии только для обычных записей (post), не затрагивая страницы:
/**
* Ограничивает количество ревизий до 3 для записей.
*/
function my_limit_post_revisions( $num, $post ) {
// Ограничиваем только для типа записи 'post'
if ( 'post' === $post->post_type ) {
return 3;
}
// Для всех остальных типов записей (страниц, товаров и т.д.)
// оставляем значение по умолчанию
return $num;
}
add_filter( 'wp_revisions_to_keep', 'my_limit_post_revisions', 10, 2 );
⚠️ Важные нюансы
Старые ревизии не удаляются автоматически. Как и в случае с константой, этот код ограничит только новые ревизии. Существующие 7 редакций останутся в базе, пока вы их не удалите.
Приоритет фильтра. Если у вас установлены плагины для управления ревизиями (например, ASE или WP Revisions Control), они тоже могут использовать этот хук. Чтобы ваш код сработал, возможно, придется указать более высокий приоритет (например, 20 вместо 10).
Удаление старых ревизий. Чтобы избавиться от уже существующих 7 редакций, можно использовать плагин вроде WP-Optimize или выполнить SQL-запрос через phpMyAdmin: DELETE FROM wp_posts WHERE post_type = ‘revision’;.
Добавить комментарий