• Всем привет!

    Вставляю пост:

    $my_post = array(
    	'post_title' => $title,
    	'post_name' => $slug',
    	'post_content' => $text,
    	'post_author' => $user,
    	'post_category' => $categories_to_insert,
    	'tags_input' => $arr_tags,
    	'post_excerpt' => $exeption,
    	'post_date' => $date, // Y-m-d H:i:s
    	);	
    
    $new_post_id = wp_insert_post( $my_post );

    В результате все вставляется нормально, в том числе время.
    НО!
    Если время больше текущего, посту присваивается статус future и он становится запланированным, но когда приходит нужное время он не публикуется, то есть статус так и остается future и НЕ меняется на published.
    Соответственно, пост не виден.

    Что делать?
    Спасибо!

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • проверять работу крона на сервере?

    если не программно, а вручную создать запись с будущей датой — она опубликуется?

    При добавлении руками статьи происходит тоже самое
    КАРАУЛ!

    /// При чем как на серваке так и на ЛОКАЛХОСТ (open server)
    UPD
    Сработал но с опозданием в 3 минуты. Это про ручное добавление. а то что добавлялось программно так и не публикуется

    возможные причины — плагины кэширования, неправильная временная зона и тд и тп — гугл по этому поводу много чего говорит.

    попробуйте плагин https://wordpress.org/plugins/wp-missed-schedule/

    та при чем тут плагин если ошибка или у меня в понимании работы функции или в самом движке.
    Плагины не предлагать! расскажите куда рыть, кто сталкивался….

    спасибо

    но когда приходит нужное время он не публикуется, то есть статус так и остается future и НЕ меняется на published.

    Если на сайте нет посещалки — так и будет. Впшный крон — это пхп-скрипт, который вызывается, когда на сайт приходят люди.

    Плагины не предлагать!

    Плагинопаранойя?

    Если на сайте нет посещалки — так и будет. Впшный крон — это пхп-скрипт, который вызывается, когда на сайт приходят люди.

    — да, при запуске двигло должно все проапдейтить и выдать результат с учетом текущего времени

    Плагинопаранойя?

    — да! еще какая!

    решение:
    на самом деле, как оказалось, нельзя игнорировать реальный временной сдвиг GMT. То есть

    'post_date' => $date, // Y-m-d H:i:s
    'post_date_gmt' => $date_gmt, // Y-m-d H:i:s

    надо вставлять с актульным сдвигом для данной временной зоны.

    например если у вас сдвиг GMT — 5 то

    $date = date_create($mydate);
    date_sub($date, date_interval_create_from_date_string('5 hours'));
    $date_gmt = date_format($date, 'Y-m-d H:i:s');

    работает корректно как на insert_post так и при прямом впихивании в БД.

    — да! еще какая!

    Это лечится изучением матчасти. 🙂
    Плагин — это ровно такой же код, который может быть помещен в тему. Разница лишь в удобстве при мигрировании/смены темы 🙂

    на самом деле, как оказалось, нельзя игнорировать реальный временной сдвиг GMT

    на самом деле пхп код не должен зависеть от настроек временной зоны сервера.

Просмотр 7 ответов — с 1 по 7 (всего 7)

Тема «Проблема insert post» закрыта для новых ответов.