1PROMTAI.RU

Создать функцию вордпресс ограничение хранения редакций записей 3

Чтобы ограничить количество редакций записей в 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 вашей активной темы.
Замените существующий код на новый.

Сохраните изменения.

Проверка:
После внесения изменений попробуйте создать или обновить пост. После этого проверьте, остались ли старые редакции. Если всё настроено правильно, старые редакции должны удаляться, и сохраняться только последние три.

 

Примечание:
Если вы хотите протестировать функциональность, вы можете создать несколько редакций одного и того же поста, чтобы увидеть, как работает удаление.

У меня сработала третья функция, код создавал с помощью ИИ.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *


Реклама 5

Поиск

Календарь

Апрель 2025
Пн Вт Ср Чт Пт Сб Вс
 123456
78910111213
14151617181920
21222324252627
282930  

Мои сайты

Новые комментарии

Реклама 1

Вход и регистрация

Новые записи