Окружение:
У меня есть сайт WordPress, но отключен wp_cron
иметь полный контроль над cron.
define('DISABLE_WP_CRON', true);
В crontab -e
, У меня есть следующая работа cron:
*/2 * * * * /usr/bin/php /var/www/cron/mycron.php init >> /var/log/error.log 2>&1
mycron.php
имеет простую функцию
if (!empty($argv[1])) {
switch ($argv[1]){
case 'init':
cron_test();
break;
}
}
function cron_test() {
$time = date(DATE_RFC822, time());
write_log("Start:" . $time); //outputs debug to my own log file
};
function write_log($log){
if ( true === WP_DEBUG ) {
if ( is_array( $log ) || is_object( $log ) ) {
write_log( print_r( $log, true ) );
} else {
write_log( $log );
}
}
};
Обратите внимание, что я объявил mycron.php
в functions.php
для wp:
require_once('parts/mycron.php');
Журнал ошибок:
В моем error.log
для cron у меня следующая ошибка:
PHP Warning: Use of undefined constant WP_DEBUG - assumed 'WP_DEBUG'
Итак, я предполагаю, что между cron и wp существует какая-то разъединенность, что является моей лучшей догадкой.
Что я пытаюсь сделать:
mycron.php
будет иметь много функций WordPress, которые мне понадобятся. Как заставить cron распознать wp function
такие как WP_DEBUG
?
Любая помощь будет высоко ценится.
Спасибо!
Вам нужно загрузить функции WordPress вручную, чтобы использовать их в пользовательском скрипте.
require_once("../../../../wp-load.php");
Также подробно ответил здесь,
Как включить функции WordPress в пользовательский файл .php?
Других решений пока нет …