Отложенная публикация и wp-cron.php. Wordpress cron
Контроль и управление системой wp cron на сайте wordpress ! — ТОП
Всем привет, подходит к концу 2015 год, но если честно, то меня это сейчас мало волнует, я озабочен лишь одним — чтобы написать ещё полезного на своём сайте. Хоть и в запасе имеется как минимум 2-3 темы, на которые мне нужно, в ближайшее время, написать статьи, но я все равно продолжаю капать. Но а сегодня я решил затронуть тему функции Cron на сайте wordpress. Просто дело в том, что я заметил не здоровую активность направленную на файл wp-cron.php. Решил разобраться, начал искать соответствующие плагины и нашёл отличный плагин — WP Crontrol.
С помощью данного плагина вы сможете управлять cron событиями на своём сайте, прямо из админ-панели wordpress. Можно будет удалять cron события, редактировать, менять временной интервал и т.д. Установить данный плагин вы сможете прямо из админ-панели wordpress. Перейдите по вкладке: Плагины — Добавить новый, введите название плагина в форму поиска, нажмите Enter, установите и активируйте плагин.
После установки и активации плагина, перейдите по вкладке: Инструменты — Cron Events.
На странице плагина, у вас будет отображаться список cron событий, которые вы сможете отредактировать.
— Edit, редактировать cron событие.
— Run Now, выполнить cron задание прямо сейчас.
— Delete, удалить cron событие.
Список основных wp cron событий:
— wp_maybe_auto_update, авто-обновление wordpress.
— wp_version_check, проверка версии wordpress.
— wp_update_plugins, обновление плагинов.
— wp_update_themes, обновление тем.
Так же у вас могут отображаться другие cron события относящиеся к тем или иным wordpress плагинам. Да же бывает такое, удаляешь плагин, а cron событие удалённого плагина остаётся и продолжает напрягать сайт. Например, если вы пользовались плагинами — Akismet и Woocommerce, а потом удалили их, то cron события этих плагинов останутся. Конечно такие cron события нужно просто удалить и всё.
Для снижения нагрузки, можно так же установить максимальный временной период для выполнения cron событий. Нажмите на вкладку: Edit, в поле Event schedule укажите максимальное значение, нажмите на кнопку — Modify Cron Event.
На этом у меня всё, жду ваших комментариев. До новых встреч !
info-effect.ru
Проблема с неработающей отложенной публикацией записей.
Больше не работает!
Собираясь уехать на недельку отдохнуть, я решил опробовать такую функцию WordPress, как отложенная публикация записи. Написал несколько статей, распределил даты публикации на неделю вперед и попробовал испытать эту возможность блога на одной из статей. Однако WordPress отказался публиковать статью в назначенное время, а счетчик минут, оставшихся до публикации стал почему-то увеличиваться. Воспользовавшись поиском, я узнал, что такая проблема возникает у многих блогеров, а путей ее решения никто не знает. После долгих изысканий на англоязычных форумах я узнал почему WordPress не хочет публиковать статьи в заданное время и нашел способ как это исправить.
Любые действия, которые регулярно повторяются WordPress выполняет через использование псевдо-крона в wp-cron.php, однако существует вероятность того, что у вашего хостера неправильно настроен сервер для работы этого файла. В частности, в настройках сервера должно быть прописано разрешение для функции fsockopen использовать локальные адреса. Если же на локальные адреса прописан запрет скрипт в файле wp-cron.php выполняться не будет. Можно, конечно, попросить хостера изменить настройки сервера, но большинство хостеров вам в этом откажет. Поэтому используем обходной путь. Открываем на редактирование файл wp-cron.php и комментируем (добавляя в начало символ #) строчки:
23 24 | if ( $_GET['check'] != wp_hash('187425') ) exit; |
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 |
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 августа.
Внимание! Информация, изложенная в данной статье больше не актуальна!
www.wordpressplugins.ru
WordPress Cron менеджер. Часть 1
Если перед вами стоит необходимость периодически выполнять на блоге какую либо задачу, то этот WordPress плагин Crony Cronjob Manager поможет в создании и управлении расписаниями заданий. Все что вам нужно это установить и активировать плагин, задать расписание интервалов запуска определенных заданий (функций, скриптов) и они будут выполняться без вашего вмешательства. И хотя сейчас доступна бета-версия, но она вполне работоспособна. Но нужно учитывать, что выполнение заданий происходит не от системного таймера и в этом случае нельзя сравнивать cron WordPress с планировщиком задач cron в UNIX системах. И если вам нужно выполнение задачи в строгих промежутках времени, то придется применять другой способ.
Активация плагина произойдет тогда, когда на блог зайдет посетитель, будет сформирован HTML код и отправлен браузеру клиента, в этот момент плагин Crony Cronjob Manager проверит, наступило ли время срабатывания и запустит задачу на выполнение. Поэтому при использовании cron в WordPress с короткими промежутками времени и низкой посещаемостью фактические промежутки времени между выполнениями задачи трудно заранее определить.
После установки и активации плагина слева в меню появится иконка будильника с надписью Cronjobs. После клика по ней попадаем на страницу с единственной кнопкой – Add New Cronjob. Кликаем по ней для того, чтобы создать первое задание и попадаем в окно установки параметров:
Рассмотрим параметры по порядку:
- Name – задаем название задачи
- Disable – ставим галочку, если нужно будет приостановить выполнение задания
- Start On – задаем время выполнения для задания в первый раз, если указать время в будущем и оно окажется больше, чем
- во параметре Next Run On, то второй параметр будет проигнорирован
- Next Run On – устанавливать его не нужно, он будет показывает время следующего выполнения задания,
- в зависимости от Schedule
- Schedule – собственно само расписание, имеет несколько предустановленных значений начиная от «дважды в час» и «раз в год»
- E-mail Notifications – электронный ящик, на который придет уведомление о выполнении задания, в него будет вложен вывод который очуществляет ваш скрипт на экран
- Custom PHP to Run – ваш код или вызов функции самого задания
После заполнения полей, вам остается только нажать Add Cronjob и через указанное время проверить в почте отчет о выполнении. Конечно, если вам нужно выполнение задания раз в сутки, не стоит так долго ждать и для начала поставить «раз в полчаса (twice hourly)», проверить выполнение, а затем установить другой промежуток времени.
wordpresse.ru