Відповідь, очевидно, ТАК, я повинен хвилюватися . Після деяких досліджень я виявив, що, схоже, попередження пов'язане з неправильними конфігураціями на сервері, на якому розміщено WordPress (тобто проблема з моїм сервером, а не WordPress).
Поширені неправильні налаштування:
- Сервер не має DNS, і тому він не може з'ясувати, хто такий "example.com", навіть якщо це сам.
- Адміністратори сервера, під час спроби безпеки, заблокували запити "зворотного звороту", тому він фактично не може передзвонити собі.
- Сервер виконує щось, що називається "mod_security" або подібне, що активно блокує виклик через конфігурацію "мертвих".
Проблема в моєму випадку була насправді викликана моїм брандмауером (pfSense), який за замовчуванням має "Вимкнути NAT-відображення" (вказаний як загальна причина №2).
На самому сервері я намагався дійти до себе за допомогою telnet, і результат був такий:
$ telnet external.server.hostname.com 19235
Спроба XXX.XXX.XXX.XXX ...
telnet: Не вдається підключитися до віддаленого хоста. З'єднання вимкнено
Щоб виправити це, мені довелося зняти прапорець Відключити відображення NAT на брандмауері. У моєму випадку це було у веб-інтерфейсі pfSense у розділі System-> Advanced-> Firewall / NAT.
Джерело: http://forum.pfsense.org/index.php?topic=3473.0
Тепер я можу підключитися до себе (на самому сервері) через брандмауер просто чудово:
$ telnet external.server.hostname.com 19235
Спроба XXX.XXX.XXX.XXX ...
Підключено до external.server.hostname.com.
Символ втечі - '^]'.
і я більше не отримую попередження PHP про wp-cron.
Я зрозумів це, прочитавши цю детальну відповідь wp_cron
, пояснюючи, як це працює.
Коротка відповідь: додайте це до визначених у вашому файлі wp-config.php: define ('ALTERNATE_WP_CRON', true);
Дійсно довга відповідь для мазохістів: Заплановані пости зараз не є і ніколи не були "зламані". Розробники WordPress не можуть виправити це, оскільки виправити нічого.
Проблема полягає в тому, що ваш сервер чомусь не може правильно виконати процес wp-cron. Цей процес є механізмом синхронізації WordPress, він обробляє все, від запланованих публікацій до надсилання пінг-баків до пінгерів XMLRPC тощо.
Спосіб роботи досить простий. Щоразу, коли сторінка WordPress завантажується, WordPress внутрішньо перевіряє, чи потрібно їй запускати wp-cron (порівнюючи поточний час із останнім запущеним wp-cron). Якщо йому потрібно запустити wp-cron, він намагається повернути HTTP-з'єднання до себе, викликаючи файл wp-cron.php.
Це з'єднання назад до самого себе є з причини. У wp-cron ще багато роботи, і ця робота потребує часу. Затримка користувача побачити його веб-сторінку, поки вона робить купу матеріалів, є поганою ідеєю, тому, повернувши це з'єднання до себе, він може запустити програму wp-cron в окремий процес. Оскільки WordPress сам не переймається результатом wp-cron, він чекає лише секунди, а потім повертається до надання веб-сторінки для користувача. Тим часом, wp-cron, запущений, виконує свою роботу, поки не закінчиться або не закінчиться час виконання.
Це HTTP-з'єднання - там, де деякі погано налаштовані системи виходять з ладу. В основному, WordPress діє як веб-браузер. Якщо ваш сайт був
http://example.com/blog , WP зателефонує на
http://example.com/blog/wp-cron.php, щоб розпочати процес. Однак деякі сервери чомусь просто не можуть цього зробити. Серед можливих причин:
- Сервер не має DNS, і тому він не може з'ясувати, хто такий "example.com", навіть якщо це сам .
- Адміністратори сервера, під час спроби безпеки, заблокували запити "зворотного звороту", тому він фактично не може передзвонити собі.
- Сервер виконує щось, що називається "mod_security" або подібне, що активно блокує виклик через конфігурацію "мертвих".
- Щось ще.
Справа в тому, що з будь-якої причини ваш веб-сервер налаштований нестандартним чином, що заважає WordPress виконувати свою роботу. WordPress просто не може цього виправити.
Однак якщо у вас є такий стан, існує рішення. Додайте це до параметра, яке визначається у вашому файлі wp-config.php:
define ('ALTERNATE_WP_CRON', правда);
Цей альтернативний метод використовує підхід до перенаправлення, завдяки якому браузер користувачів отримує переспрямування, коли крону потрібно запустити, так що вони повертаються на сайт негайно, поки cron продовжує працювати в з'єднанні, яке вони щойно перервали. Цей метод іноді трохи іфій, тому це не за замовчуванням.
Джерело: http://wordpress.org/support/topic/scheduled-posts-still-not-working-in-282#post-1175405
Як зазначено у цій чудовій та детальній публікації, якщо у вас немає контролю над конфігурацією ваших серверів або, якщо це застосовано, навколишнім середовищем - слід вирішити проблему.
define ('ALTERNATE_WP_CRON', правда);
у вашому файлі wp-config.php.
allow_url_fopen
встановлено значення ON?