WordPress отложенная публикация не работает

Не работает отложенная публикация в wordpress

Всем привет. Хотя я работаю с wordpress довольно давно, никогда не использовал функцию отложенной публикации (просто не было нужды в этом). Вчера у меня возникла такая потребность. Поэтому, в этом посте я хочу коротко описать проблемы, которые появились у меня при использовании отложенной публикации, а также пути их решения.

Описание проблемы

Если коротко, то отложенная публикация из коробки у меня попросту не заработала. Я часто раньше видел вопросы пользователей о том, что у них не работает данная функция. Поэтому, я решил сам не исследовать проблему, а сразу посмотреть, как другие люди решают этот вопрос.

Причины проблемы

Очевидно, что корень проблемы кроется в настройках хостинга. По умолчанию многие хостинг-провайдеры блокируют возможность создания Socket-соединения. С другой стороны, wordpress для отложенных действий не использует стандартный CRON (который идёт вместе с *UNIX), а создаёт свой виртуальный крон wp-cron.php.

Как работает wp-cron.php? Довольно просто. Когда кто-то запрашивает некоторую страницу сайта (не важно: страницу админки или страницу основного сайта), wordpress в том числе активизирует и файл wp-cron.php. Код, описанный в этом файле, проверяет: есть ли новые задачи. Если новые задачи есть, они выполняются.

Читайте также:  Не работаю только акварелью

Так в чём же проблема? WordPress должен активизировать файл wp-cron.php с помощью создания Socket-соединения. Соответственно, если хостинг-провайдер запретил выполнение этой функции, то и отложенная публикация работать не будет.

Решение проблемы отложенной публикации

Существует несколько решений данной проблемы. Самый очевидный из них — это изменение настроек вашего сервера. Вы должны сделать так, чтобы из php работали локальные Socket-вызовы. Возможно, нужно изменить конфиги. Возможно, у вас даже не подключен Socket-модуль.

К сожалению, далеко не всегда мы имеем возможность изменять окружение сайта. Поэтому, нужны другие решения. Первое из них я назвал бы грязным. Оно состоит из нескольких шагов:

  1. Изменение файла wp-cron.php (никогда не делайте так. ). Вы должны убрать все проверки, которые блокируют прямой вызов файла а-ля https://hixon.ru/wp-cron.php. От версии к версии файл wp-cron.php может меняться, но, скорей всего, вам нужно будет убрать проверку на POST-запрос, а также на размер запроса.
  2. Дёргать URL вида https://hixon.ru/wp-cron.php тогда, когда вам нужно выполнение некоторых отложенных действий. То есть, если вы сделали отложенную публикацию на 23.06.2014 15-00, то нужно, например, дёрнуть этот URL в 23.06.2014 15-01. Как это сделать? Есть много способов, один из них описан тут — https://hixon.ru/programmirovanie-2/medlennaya-zagruzka-pervoj-stranicy-sajta-na-asp-net-mvc.html

Второй способ заключается в использовании какого-нибудь плагина, который чинит внутренний CRON wordpress. Лично мне понравился плагин WP Missed Schedule Fix Failed Future Posts. Важно, что из-за особенностей реализации плагина, он принесет на сайт дополнительную нагрузку. Поэтому, если вы каждый день не используете отложенную публикацию, то стоит выключить плагин.

Источник

Отложенная публикация и wp-cron.php

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

Любые действия, которые регулярно повторяются WordPress выполняет через использование псевдо-крона в wp-cron.php, однако существует вероятность того, что у вашего хостера неправильно настроен сервер для работы этого файла. В частности, в настройках сервера должно быть прописано разрешение для функции fsockopen использовать локальные адреса. Если же на локальные адреса прописан запрет скрипт в файле wp-cron.php выполняться не будет. Можно, конечно, попросить хостера изменить настройки сервера, но большинство хостеров вам в этом откажет. Поэтому используем обходной путь. Открываем на редактирование файл wp-cron.php и комментируем (добавляя в начало символ #) строчки:

if ( $_GET[‘check’] != wp_hash(‘187425’) ) exit;

Теперь, если вы откроете ссылку вида http://www.myblog.ru/wp-cron.php скрипт в этом файле выполнится и все ваши просроченные публикации немедленно будут опубликованы. Конечно, ручное дергание файла wp-cron.php нам ни в коем случае не подходит, а поэтому настраиваем выполнение данного скрипта через демон cron. Его настройка осуществляется разными путями у различных хостеров, читайте документацию по хостингу. В моем случае мне помогла такая команда:

0 * * * * /usr/local/bin/php5 -q http://www.wordpressplugins.ru/wp-cron.php

То есть cron будет выполнять скрипт в wp-cron.php каждый час. Точное время публикации записи соблюдено не будет, но опоздание с публикацией в течение часа по сути не так уж и страшно, главное, что сама отложенная публикация будет работать. Попутно решилась проблема с плагином WordPress Database Backup, который именно по этой причине не хотел отправлять мне бекапы на имейл раз в неделю.

Что делать, если ваш хостинг не предоставляет возможности использовать демон cron? Есть такой сервис как WebCron.org — это именно то, что вам нужно. Он сможет регулярно выполнять ваш скрипт в .php файле, просто скормите ему ссылку файла скрипта и укажите, как часто его выполнять.

PS. Данная статья запланирована на публикацию в 3:50 ночи 3 августа, следовательно опубликована она будет в 4 часа утра 3 августа.

Источник

Заметки Лёвика

web программирование, администрирование и всякая всячина, которая может оказаться полезной

WordPress запись просрочена, не работает отложенная публикация

Вместо немедленной публикации записи иногда требуется отложенная публикация. Не все знают, что можно запланировать запись на более позднее время — достаточно вместо кнопки опубликовать нажать ссылку “Изменить” рядом с ней. К примеру, перед отпуском можно написать несколько статей, либо желательно опубликовать статью в заранее определённое время, когда не сможешь находиться у компьютера.

Но, не всё так гладко..

Решив воспользоваться данной возможностью, я понадеялся на автоматическую публикацию записей wordpress. Однако, заглянув чуть позже в админку, увидел несколько записей с пометкой “Запись просрочена“.

Проблему с отложенной публикацией (а точнее с непубликацией) помогает решить WordPress плагин WP Missed Schedule. Установить можно непосредственно из админки wordpress (не забываем активировать после установки).

Плагин может опубликовать все ранее запланированные и просроченные посты. Публикация происходит каждые 5 минут, при этом обновляется не более 5 постов. Для посетителей работа плагина на быстродействии не сказывается (по крайней мере, не ощутимо).

Конечно, вариант с плагином может быть далёк от идеального (разве WP из коробки не должен “нормально” работать с отложенными записями?), но вполне подойдёт для тех, кто не хочет разбираться “почему не работает”

Опубликовано Суббота, Май 5, 2012 в 12:03 в следующих категориях: Без рубрики. Вы можете подписаться на комментарии к этому сообщению через RSS 2.0. Вы можете оставить комментарий. Пинг отключен.

Автор будет признателен, если Вы поделитесь ссылкой на статью, которая Вам помогла:
BB-код (для вставки на форум)

html-код (для вставки в ЖЖ, WP, blogger и на страницы сайта)

ссылка (для отправки по почте)

Комментарии (2) к записи “Wordpress запись просрочена, не работает отложенная публикация”

Если функция запланированной публикации заложена, значит должна работать. И не надо спихивать на плагин, если не знаете решение проблеммы.
[!SPAM DECTECTED somemoreinfo.ru]

Николай, благодарю за внимание к блогу, и к этой заметке в частности.

значит должна работать. И не надо спихивать на плагин, если не знаете решение проблеммы.

Конечно, должна!

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

Поскольку разбираться с настройками хостинга готовы не все.. То вариант решения с плагином вполне приемлемый.

Есть предположение, что в последних версиях WordPress проблемы с отложенной публикации нет…

Если отложенная публикация не работает:

Проверьте часовой пояс (Settings -> General page)
Была ли сохранена заметка в черновики перед тем. Следует опубликовать кнопкой Shedule.
Возможно, на блоге не было посетителей. Следует осуществить выход из учётной записи и открыть главную страницу.
Если запланирована публикация большого количества записей (более 100) — также возможна некорректная работа.

Источник

Как публиковать статьи по расписанию в WordPress

Здравствуйте дорогие читатели seoslim.ru! Многие из вебмастеров предпочли выбрать в качестве движка сайта платформу WordPress, и неудивительно так как это одна из самых популярных CMS в мире.

Сейчас Вордпресс активно используют не только блоггеры, но и владельцы статичных сайтов, каталогов, портфолио и интернет-магазинов.

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

Получится так что вы пишите пост, а вот публикуете его в то время, когда запланируете.

Об этой функции WP знают многие, но не все ей пользуются.

В каких моментах публикация статей по расписанию на сайте будет полезна:

  1. Вы размещаете посты на сайте строго в определенное время, например, в пик захода максимального числа пользователей. Если так случилось, что такой период приходится на 5 часов утра, поэтому чтобы каждый раз не вставать рано, после небольших настроек CMS сама опубликует контент.
  2. Вы уехали в отпуск, но хотите, чтобы на блоге записи выходили с той же периодичностью. Посетители и поисковые системы будут видеть, что сайт растет и развивается постоянно.
  3. Вас попросили (например, рекламодатель) опубликовать обзор в определенный день.

Думаю, вы поняли, ситуации бывают разные, поэтому ниже давайте посмотрим, как это происходит на деле.

Настройка запланированных публикаций в WP

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

Переходим в меню админки «Настройки» — «Общие» далее из выпадающего списка выбираем свой часовой пояс. Для того чтобы время сайта соответствовало тому, которое у вас в регионе.

Если не знаете в каком часовом поясе проживаете, тогда вбейте в поиске Google запрос «Часовой пояс город . ».

С 26 октября 2014 года изменился часовая зона столицы Российской Федерации и теперь он соответствует UTC+3 (англ. Coordinated Universal Time).

Теперь что касается публикации поста в заданное время.

Переходите в редактор записей и находим виджет «Опубликовать», где видно, что публикация по умолчанию задана сразу, поэтому жмем ссылку изменить.

Появятся окошки, в которых надо указать месяц, день, год и время. Не забываем нажать «ОК».

После этого статус опубликовать пост изменится на запланировано в заданное вами время.

Дабы применить настройки по времени к текущей записи жмем «Запланировать», после этого статья будет размещена автоматически на сайте в указанный период.

Если посмотреть на список всех постов сайта, то запланированные невозможно спутать с другими, так как WordPress их выделяет, дабы администратор смог без проблем все найти и изменить.

Чем еще полезно не сразу размещать посты на сайте?

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

Жмите на кнопку «Посмотреть» (виджет где устанавливали время публикации) и WordPress откроет временную ссылку этой статьи, доступную только вам, а не поисковыми системам и посетителям.

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

Достаточно воспользоваться одним из специальных плагинов Publish to Schedule , Drafts Scheduler задачей которых является публикация статей согласно заданному расписанию.

На этом все, а вы пользуетесь данной функцией движка на своих сайтах?

Источник

Как исправить ошибку отложенной публикации в WordPress

В WordPress есть замечательная функция, которая позволяет вам запланировать записи в блоги, чтобы те автоматически публиковались в указанное вами время. Она является спасательным кругом для тех блоггеров, которые много путешествуют, или блоггеров, ушедших на каникулы. Когда вы, к примеру, находитесь в другом часовом поясе, вам не нужно будет просыпаться с утра пораньше, чтобы опубликовать пост в блог. Вы можете просто расслабиться и получать удовольствие, в то время, как функция WordPress по планированию записей сделает всю работу за вас. И все это будет хорошо до того момента, как вы поймете, что все ваши запланированные публикации были пропущены и ни один из ваших постов «на будущее» не были опубликованы в ваше отсутствие. Если с вами случались подобного рода неприятноости, или вы — один из тех блоггеров, которые часто отправляют свои мысли в отложенные публикации, значит вы сделаете то, о чем пойдет речь в статье: как исправить ошибку отложенной публикации в WordPress.

Первым делом устанавливаем и активируем плагин, который исправит нашу ошибку — WP Missed Schedule. Ничего сложного в нем нет, в том числе и потому, что у плагина нет настроек как таковых.

Плагин работает следующим образом: он ищет записи, которые пропустили свое запланированное время публикации. Если WP Missed schedule найдет такую, то он опубликует ее должным образом в нужное время. Для того, чтобы снизить нагрузку на сервер, плагин осуществляет проверку раз в 5 минут и исправляет 5 записей за «обход».

Недавно один из читателей написал, что функция отложенной публикации у него не срабатывает. После небольшого исследования, выяснилось, что не он один столкнулся с подобной проблемой (именно в версии 3.5), она озвучена в багтрекере ВП. Разработчики исправят ситуацию в ближайшем обновлении.

Возможно вы удивитесь: если проблема появилась только в последних версиях, то откуда у плагина более 48 тысяч скачиваний? Ну, плагин написан совсем не недавно, т.к. проблема, описываемая в этой статье, не нова. Она встречается и тогда, когда ваш сервер не очень дружит со стандартным WP Cron. Однако, группа людей выявила этот баг в WordPress 3.5, и он будет исправлен в ближайшем времени. Во всех остальных случая, скорее всего проблема в вашем хостинге.

А вы сталкивались с таким? Если так, то надеемся, что вышеописанное решение вам помогло. Если же нет, или вы нашли другое решение проблемы, поделитесь с нами в комментариях.

Источник

Оцените статью