Как-то раз на одном из моем хостинге, при разворачивании нового сайта, вызов wp-cron.php из wordpress не работал. Все бы было хорошо, если бы мне не понадобился плагин WP Super Cache для корректной отдачи HTTP заголовков, который при активации проверяет доступность wp-cron.php вот этим кодом:
$cron_url = get_option( 'siteurl' ) . '/ wp-cron.php?check=' . wp_hash('187425'); $cron = wp_remote_get($cron_url, array('timeout' => 0.01, 'blocking' => true)); if( is_array( $cron ) ) { if( $cron[ 'response' ][ 'code' ] == '404' )
Мдя. У меня аккурат 404 и возвращало. Ну как сие обойти, догадаться не сложно, но вот как мусор подчищать в кэше было не очевидно. Обкурившись интернета до полной нирваны, решил устроить дерганье wp-cron.php средствами сервера хостинга, благо у меня такая возможность есть.
В процессе по наступал на россыпь маленьких граблей, о них тут и расскажу. Первое что надо сделать, это сказать wordpress, что мы сами знаем как часто нам крон дергать. Для этого в файле wp-config.php рисуем строку:
define('ALTERNATE_WP_CRON', true);
повыше директивы
require_once(ABSPATH . 'wp-settings.php');
После того, как это прописалось, я взял голыми руками wp-cron.php и скопировал его в файл vasya_forever.php и положил рядом с файлом wp-cron.php в тот же каталог.
Этого глумления мне показалось мало, поэтому я вместо прав 644 выдал файлу vasya_forever.php права 755. Мне его надо будет посторонними вещами дергать, для этого и сыр-бор. Если выставить 755 на wp-cron.php то любой шланг из интернета сможет дергать ваш wordpress cron когда угодно, и в общем-то нагрузить сервер от души, если запросов будет много. Соответственно, настоящее имя файла вася-форевер я не скажу, и вы ни кому не говорите.
После этих манипуляций я в DirectAdmin для крона прописал следующую команду запуска:
*/15****/usr/bin/wget -O tempo http://myenotes.ru/vasya_forever.php > /dev/null
Это извращение заставляет wget, с сервера хостинга, каждые 15 минут обращаться к файлу vasya_forever.php, который будет выполнять крон-задания вордпресс. Все, что wget получит, он будет аккуратно складывать в файл tempo, затирая его при каждом вызове. Директива >/dev/null заставляет cron писать не мне на почту, как это принято в Unix системах, а сразу все письма умножать на ноль, чтоб не отвлекали. Продолжаться этот бардак, как вы понимаете, будет до тех пор, пока мне не надоест.