Плагин для автоматической публикации записей?

Ссылка скопирована
1 ответ

необходим плагин для автоматической публикации записей (из каждой категории ежедневно ) из черновиков.

Дополнительно:

В чем проблема просто запланировать запись ?

  • Роман Страх, много записей. больше 1000. и много категорий

    с сайта wpgraber забирает. поэтому нужно ежедневно

  • решился вопрос, использовал все тот же Auto Post Scheduler

    UPD/ данный плагин публикует только черновики по списку. не получается публиковать из каждой категории по чуть-чуть.

    может кому будет полезно, сработала связка плагинов schedulepress (немного в ручную придется, но очень удобно и легко раскидать черновики по календарю учитывая фильтры по категориям + плагин сам переводит статус из черновика в заплан)
    +
    плагин MWW Scheduled Post Trigger (он как надстройка) - публикует все то что запланировано и просрочено (я так понял в wp это косячок)

    Ответы:

    Если не хватает встроенного функционала то опишите чего конкретно

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Юрий Linux Ответ

    Если нужно ежедневно публиковать много черновиков из разных категорий, не обязательно искать тяжёлый плагин. В WordPress уже есть отложенная публикация, а для массового сценария можно сделать небольшой WP-Cron скрипт.

    Логика: раз в день выбираем по одной записи из каждой нужной категории со статусом draft и публикуем её. Если нужно не сразу publish, а расписание на будущее, ставим post_status = future и post_date.

    Пример публикации одной записи из каждой категории:

    add_action('my_daily_publish_drafts', function () {
        $categories = get_categories(['hide_empty' => false]);
     
        foreach ($categories as $category) {
            $posts = get_posts([
                'post_type' => 'post',
                'post_status' => 'draft',
                'posts_per_page' => 1,
                'cat' => $category->term_id,
                'orderby' => 'date',
                'order' => 'ASC',
            ]);
     
            if (!$posts) {
                continue;
            }
     
            wp_update_post([
                'ID' => $posts[0]->ID,
                'post_status' => 'publish',
                'post_date' => current_time('mysql'),
            ]);
        }
    });

    add_action('my_daily_publish_drafts', function () { $categories = get_categories(['hide_empty' => false]); foreach ($categories as $category) { $posts = get_posts([ 'post_type' => 'post', 'post_status' => 'draft', 'posts_per_page' => 1, 'cat' => $category->term_id, 'orderby' => 'date', 'order' => 'ASC', ]); if (!$posts) { continue; } wp_update_post([ 'ID' => $posts[0]->ID, 'post_status' => 'publish', 'post_date' => current_time('mysql'), ]); } });

    Регистрация расписания:

    if (!wp_next_scheduled('my_daily_publish_drafts')) {
        wp_schedule_event(time(), 'daily', 'my_daily_publish_drafts');
    }

    if (!wp_next_scheduled('my_daily_publish_drafts')) { wp_schedule_event(time(), 'daily', 'my_daily_publish_drafts'); }

    Для надёжности лучше запускать WP-Cron системным cron, а не ждать посещений сайта:

    */10 * * * * php /path/to/site/wp-cron.php > /dev/null 2>&1

    */10 * * * * php /path/to/site/wp-cron.php > /dev/null 2>&1

    Если записей больше 1000, добавьте логирование: какие записи опубликованы, из какой категории, были ли ошибки. И обязательно протестируйте на 2-3 категориях, прежде чем запускать по всему сайту.

    Итог: задача решается небольшим cron-хуком без тяжёлого плагина. Главное — ограничить количество публикаций за запуск и вести лог, чтобы не выложить случайно все черновики.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

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

    Вам также может быть интересно