Как запустить WordPress из cronjob? - PullRequest
0 голосов
/ 12 ноября 2019

Я использовал для запуска WordPress в своих cronjobs, вызывая что-то вроде:

$file = dirname(__FILE__);
$file = substr($file,0,stripos($file,"wp-content"));

require($file."/wp-load.php");

Но это больше не работает. Если я использую тестовый скрипт в той же директории, например:

require($file."/testscript.php");

, он выполняется без проблем. У меня также нет проблем с запуском скрипта напрямую. Это только когда он запускается из cronjob.

Не выдается никаких ошибок, указывающих на проблему с правами доступа или путями.

Так что же происходит? Активно ли происходит сбой wp-load.php из-за вызова cronjob?

Ответы [ 2 ]

0 голосов
/ 12 ноября 2019

Мне удалось проследить проблему до способа, которым я обрабатывал аутентификацию входа в WP во время ловушки действия init. Так что, не вина WordPress или cronjob.

0 голосов
/ 12 ноября 2019

Хорошо, я предполагаю, что у вас есть более длинная работа, или что-то должно произойти вне поля зрения общественности;именно поэтому вы пытаетесь создать экземпляр WP за пределами его домашнего каталога и не используете wget для доступа к WP через обычный wp-cron.php.

Если это так

define("WP_USE_THEMES",false);
require("/path/to/wp/wp-load.php");

if (defined("ABSPATH")) {

    /** Do something */
}

... следует к работе

Если вы пытаетесь получить доступ к WP из папки плагинов, это может быть немного сложнее;в этом случае что-то вроде этого может работать:

if(!defined('ABSPATH') || !defined('WPINC')) {
    define('WP_USE_THEMES', FALSE); 

    $levels = 4; // Number of levels up, to the wp-load.php file
    require_once dirname(__FILE__, $levels)."/wp-load.php";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...