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 не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Вход

Календарь

Ноябрь 2024
Пн Вт Ср Чт Пт Сб Вс
 123
45678910
11121314151617
18192021222324
252627282930  

Поиск по сайту

Рубрики