Как убрать картинки постов WordPress по истечению времени?

Для удаления картинок постов в WordPress по истечению определенного времени, вам потребуется создать скрипт, который будет периодически выполняться с использованием планировщика задач в вашей системе.

Вот подробная инструкция пошагового решения данной задачи:

Шаг 1: Создайте новую папку в корневой директории вашего WordPress-сайта. Назовите ее "cleanup" (или любое другое удобное название), это будет местом хранения скрипта очистки.

Шаг 2: Внутри папки "cleanup" создайте новый файл с именем "cleanup.php". Откройте этот файл в редакторе кода и вставьте следующий код:

<?php
// Функция для удаления картинок постов
function delete_expired_images() {
    // Получаем все посты, содержащие вложенные изображения
    $posts = get_posts(array(
        'post_type'      => 'post',
        'posts_per_page' => -1,
        'meta_query'     => array(
            array(
                'key'     => '_thumbnail_id',
                'compare' => 'EXISTS',
            ),
        ),
    ));

    // Цикл по всем постам
    foreach ($posts as $post) {
        // Получаем дату истечения срока поста
        $expiration_date = get_post_meta($post->ID, 'expiration_date', true);

        // Если срок не задан или истек, удаляем все вложенные изображения
        if (empty($expiration_date) || strtotime($expiration_date) < time()) {
            $thumbnail_id = get_post_thumbnail_id($post->ID);
            wp_delete_attachment($thumbnail_id, true); // Удаление вложенного изображения
        }
    }
}

// Вызываем функцию удаления картинок постов при загрузке страницы администратора
add_action('admin_init', 'delete_expired_images');

В этом коде мы используем функцию delete_expired_images(), которая будет выполняться при загрузке страницы администратора. Эта функция первым делом получает все посты, содержащие вложенные изображения, и циклически проверяет каждый пост на наличие срока действия (expiration_date). Если срок не указан или истек, функция удаляет вложенное изображение с помощью функции wp_delete_attachment().

Шаг 3: Сохраните файл "cleanup.php".

Шаг 4: Вам потребуется настроить планировщик задач для автоматического выполнения этого скрипта через определенное время, например, каждые 24 часа. Метод настройки планировщика зависит от вашего хостинг-провайдера или серверной конфигурации.

Если ваш сервер работает на операционной системе Linux, вы можете использовать программу cron для настройки планировщика задач. Пример команды cron для запуска скрипта в файле "cleanup.php" каждые 24 часа:

0 0 * * * /usr/bin/php /путь_к_сайту/cleanup/cleanup.php

Пожалуйста, обратитесь к документации вашего хостинг-провайдера или сервера для получения инструкций по настройке планировщика задач.

Шаг 5: После настройки планировщика задач, ваш скрипт "cleanup.php" будет автоматически запускаться каждые 24 часа (или в соответствии с выбранным вами интервалом). В результате картинки постов, у которых истек срок действия, будут удалены.

Важно отметить, что в этом примере использовано поле мета данных "expiration_date" для хранения срока действия поста. Вы можете выбрать любое другое поле мета данных и изменить соответствующие строки кода в функции delete_expired_images(), чтобы адаптировать его под свои нужды. Также вы можете настроить своеобразные условия для удаления изображений.

Надеюсь, эта подробная инструкция поможет вам убрать картинки постов WordPress по истечению времени. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.