Чтобы ограничить количество редакций записей в WordPress до трех, вы можете добавить следующий код в файл functions.php вашей темы. Этот код изменяет количество сохраняемых редакций для постов:
function limit_post_revisions($num, $post) {
return 3; // Устанавливаем лимит на 3 редакции
}
add_filter('wp_revisions_to_keep', 'limit_post_revisions', 10, 2);
Как это сделать:
Войдите в админку WordPress.
Перейдите в раздел «Внешний вид» -> «Редактор тем» (или «Тема» -> «Редактор» в зависимости от версии).
Найдите файл functions.php вашей активной темы.
Добавьте указанный выше код в конец файла.
Сохраните изменения.
Теперь WordPress будет хранить только последние три редакции каждой записи. Если вам нужно изменить это значение, просто замените 3 на любое другое число.
Примечание:
При редактировании файлов вашей темы всегда рекомендуется делать резервную копию, чтобы избежать потери данных. Кроме того, если вы используете дочернюю тему, лучше добавлять код в functions.php дочерней темы, чтобы избежать потери изменений при обновлении основной темы.
Ещё
Чтобы ограничить количество редакций записей в WordPress до трех и одновременно удалить старые редакции, вы можете использовать следующий код в файле functions.php вашей темы. Этот код не только ограничит количество сохраняемых редакций, но и удалит старые редакции при сохранении новой:
function limit_post_revisions($num, $post) {
return 3; // Устанавливаем лимит на 3 редакции
}
add_filter('wp_revisions_to_keep', 'limit_post_revisions', 10, 2);
function delete_old_revisions($post_id) {
global $wpdb;
// Получаем все редакции поста
$revisions = $wpdb->get_col($wpdb->prepare("
SELECT ID FROM $wpdb->posts
WHERE post_type = 'revision' AND post_parent = %d
ORDER BY post_date DESC
", $post_id));
// Если количество редакций превышает лимит, удаляем старые
if (count($revisions) > 3) {
$revisions_to_delete = array_slice($revisions, 3); // Оставляем только последние 3
foreach ($revisions_to_delete as $revision_id) {
wp_delete_post($revision_id, true); // Удаляем редакцию
}
}
}
add_action('save_post', 'delete_old_revisions');
Как это сделать:
Войдите в админку WordPress.
Перейдите в раздел «Внешний вид» -> «Редактор тем» (или «Тема» -> «Редактор» в зависимости от версии).
Найдите файл functions.php вашей активной темы.
Вставьте указанный выше код в конец файла.
Сохраните изменения.
Как это работает:
Функция limit_post_revisions ограничивает количество сохраняемых редакций до трех.
Функция delete_old_revisions удаляет все старые редакции, оставляя только последние три.
Примечание:
При редактировании файлов вашей темы всегда рекомендуется делать резервную копию, чтобы избежать потери данных. Если вы используете дочернюю тему, добавляйте код в functions.php дочерней темы, чтобы сохранить изменения при обновлении основной темы.
Если старые редакции не удаляются, возможно, проблема связана с тем, что функция delete_old_revisions не вызывается должным образом или не работает как ожидается. Давайте попробуем немного изменить код, чтобы убедиться, что он правильно удаляет старые редакции.
Попробуйте следующий код:
function limit_post_revisions($num, $post) {
return 3; // Устанавливаем лимит на 3 редакции
}
add_filter('wp_revisions_to_keep', 'limit_post_revisions', 10, 2);
function delete_old_revisions($post_id) {
// Проверяем, является ли это автосохранением или если пост не является публикацией
if (wp_is_post_autosave($post_id) || wp_is_post_revision($post_id)) {
return;
}
// Получаем все редакции поста
global $wpdb;
$revisions = $wpdb->get_col($wpdb->prepare("
SELECT ID FROM $wpdb->posts
WHERE post_type = 'revision' AND post_parent = %d
ORDER BY post_date DESC
", $post_id));
// Если количество редакций превышает лимит, удаляем старые
if (count($revisions) > 3) {
$revisions_to_delete = array_slice($revisions, 3); // Оставляем только последние 3
foreach ($revisions_to_delete as $revision_id) {
wp_delete_post($revision_id, true); // Удаляем редакцию
}
}
}
add_action('save_post', 'delete_old_revisions');
Объяснение изменений:
Проверка на автосохранение и редакцию: Мы добавили проверку, чтобы убедиться, что функция не выполняется для автосохранений или самих редакций. Это предотвращает ненужные вызовы функции.
Логика удаления: Код остается прежним, но теперь мы более уверены, что функция не будет вызываться в неподходящих случаях.
Как это сделать:
Войдите в админку WordPress.
Перейдите в раздел «Внешний вид» -> «Редактор тем» (или «Тема» -> «Редактор» в зависимости от версии).
Найдите файл functions.php вашей активной темы.
Замените существующий код на новый.
Сохраните изменения.
Проверка:
После внесения изменений попробуйте создать или обновить пост. После этого проверьте, остались ли старые редакции. Если всё настроено правильно, старые редакции должны удаляться, и сохраняться только последние три.
Примечание:
Если вы хотите протестировать функциональность, вы можете создать несколько редакций одного и того же поста, чтобы увидеть, как работает удаление.
У меня сработала третья функция, код создавал с помощью ИИ.
Добавить комментарий