Intereting Posts
Установка постоянных ссылок в файле wp_config или файлах? Как я могу создать форму поиска, которая может искать таксоны и сообщения? Ajax загружает дубликат сообщения Переопределение файлов шаблонов плагинов с детской темой как изменить постоянную ссылку на конкретное место? Как настроить WordPress для нескольких блогов, не используя multisite? Проверьте версию внешней библиотеки Enqueue'd Использовать обычную категорию с пользовательскими типами сообщений Setcookie работает с администратором, но не с интерфейсом SELECT max (meta_value) FROM wp_postmeta WHERE meta_key = 'price' … перестает работать, когда значение превышает 999 Отображать предстоящие события в течение следующих 30 дней, запрашивая сообщения с меткой времени в пользовательских мета Как отобразить Facebook как счет в теме WordPress Изменение цвета заголовка сообщения add_option _ {$ option} action hook не вызывается Множество параметров для короткого кода

Что заставляет wp_schedule_single_event срабатывать?

Это не так просто, как вы думаете. В основном у меня есть программа на C #, которая попадает на сайт worpdress, и wp_schedule, похоже, не срабатывает. Если я пойду на сайт с моим браузером firefox, то он, похоже, сгорит. Soooo, в чем тут разница? Что именно заставляет cron стрелять? Это HTTP GET? Или есть какой-то скрипт или функция внутри страницы, загружаемой браузерами?

Функции WP-Cron на самом деле не являются функциями cron. Вместо запуска cron и выполнения задач точно по расписанию, он ждет, пока загрузится интерфейс или админ, проверяет, запланированы ли какие-либо задания, а затем срабатывает по мере необходимости. Для выполнения заданий cron WP загружает wp-cron.php , который находится в корневой папке. Я понимаю, что когда вы посещаете сайт и запланирован cron, запрос направляется на http://yourdomain.com/wp-cron.php , который инициирует запланированные задания (cron). Я не знаю точно, как это работает (я читал об этом раньше, но не могу найти ресурс снова), но этот запрос выполнен таким образом, что не все серверы могут справиться с этим, в результате чего он не будет работать. Интересно, ваша проблема в том, что этот запрос не сделан с запросом GET на ваш сайт.

В качестве альтернативы я бы рекомендовал использовать запрос GET для http://yourdomain.com/wp-cron.php . На самом деле, в отличной разработке профессионального WordPress Plugin , они рекомендуют следующее:

Общим методом является использование wget для загрузки wp-cron.php по расписанию. Если ваш сервер основан на Linux, cron уже существует и может быть запланирован с помощью команды crontab. Если ваш сервер находится на базе Windows, вы можете установить wget и создать запланированную задачу для его выполнения. Команда wget будет работать следующим образом: wget http://www.example.com/wp-cron.php Когда wget-запросы wp-cron.php WordPress ищет все запланированные задания cron и выполняет по мере необходимости. Настройка подлинного cron на вашем сервере гарантирует, что ваши задания cron будут работать отлично по расписанию без пропусков.

Наряду с этим вам необходимо отключить стандартный способ обработки cron:

 define('DISABLE_WP_CRON', true); 

Другое обсуждение этого можно найти здесь:

http://caramboo.com/2010/03/wordpress-remote-cron-scheduling/

Вы следуете за переадресацией?

В cron.php вы можете видеть, что функция spawn_cron делает

  wp_redirect( add_query_arg('doing_wp_cron', '', stripslashes($_SERVER['REQUEST_URI'])) ); 

Я не очень много работал с WP crons, но, возможно, это наводит вас на правильный путь

Если вы хотите удалить необходимость опроса C #, то этот бесстыдный плагин (в 🙂 может решить вашу проблему:

Улучшенный Cron

Павел