• ДОБРО ПОЖАЛОВАТЬ В КЛУБ ПО WORDPRESS

    Мы активно растущий клуб по WordPress и нам нужна помощь каждого человека, в том числе и Ваша! Не стесняйтесь и станьте частью большого сообщества.
    Мы делимся новостями, отытом и полезными советами! Пройдите простую регистрацию, чтобы пользоваться всеми возможностями нашего клуба.

    Присоединяйтесь к нам, вам обязательно понравится - Присоединится

Вопрос Автоматический перенос поста в корзину по истечении определенного срока

kel84

НОВИЧОК

kel84

НОВИЧОК
Сообщения
9
Добрый день.
Уже неделю пытаюсь найти решение этого вопроса, но ничего не получается. Надо, чтобы можно было задать какой-то срок экспирации, например месяц, по истечении которого все посты автоматом перемещались в корзину. В моем случае это произвольные типы записи.

Нашел плагин Для просмотра ссылки Войди или Зарегистрируйся. По функционалу он меня полностью устраивает, но он не работает, последнее обновление 4 г. назад, да и на странице плагина написано, что он больше не поддерживается. Какие бы параметры я ему не задавал, в итоге ничего не происходит. Может кто-нибудь знает другой похожий плагин, или как это можно решить через функцию?

В сети полно решений, у которых надо при создании поста указать дату истечения, но мне такой вариант не подходит. Мне надо просто указать, скажем, месяц, и чтобы через месяц с даты публикации все посты автоматом улетали в корзину.
 

Tesessssss

ПРОВЕРЕННЫЙ

Tesessssss

ПРОВЕРЕННЫЙ
Сообщения
33
Просмотр скрытого содержимого доступен для зарегистрированных пользователей!
PHP:
function get_delete_old_jobs() {
    // Set our query arguments.
    $args = [
        'fields'                   => 'ids', // Only get post ID's to improve performance.
        'post_type'           => 'films',
        'post_status'        => 'publish',
        'posts_per_page' => -1,
        'date_query'         => array(
            'before' => date( 'Y-m-d', strtotime( '-30 days' ) ),
        )
    ];
    $q = get_posts( $args );

    // Check if we have posts to delete, if not, return false.
    if ( ! $q ) {
        return false;
    }

    // OK, we have posts to delete, lets delete them.
    foreach ( $q as $id ) {
        wp_trash_post( $id );
    }
}
// Expired_post_delete hook fires when the Cron is executed.
add_action( 'old_job_delete', 'get_delete_old_jobs' );

// Add function to register event to wp.
add_action( 'wp', 'register_daily_jobs_delete_event' );
function register_daily_jobs_delete_event() {
    // Make sure this event hasn't been scheduled.
    if ( ! wp_next_scheduled( 'old_job_delete' ) ) {
        // Schedule the event.
        wp_schedule_event( time(), 'hourly', 'old_job_delete' );
    }
}
Сработает сразу, при вставке кода, поэтому проверьте нужную дату
А далее работает по расписанию wp_schedule_event
 
Сверху