【问题标题】:How to init WordPress from a cronjob?如何从 cronjob 初始化 WordPress?
【发布时间】:2019-11-12 16:50:56
【问题描述】:

我曾经在我的 cronjobs 中通过调用以下命令来启动 WordPress:

$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 调用而主动失败?

【问题讨论】:

标签: php wordpress cron


【解决方案1】:

好的,所以我假设您有更长的工作要做,或者需要在公众视野之外发生一些事情;这就是为什么你试图从它的主目录之外实例化 WP,而不是使用 wget 通过普通的 wp-cron.php 访问 WP。

如果是这样的话

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";
}

【讨论】:

    【解决方案2】:

    我能够将问题追溯到我在 init 操作挂钩期间处理 WP 登录身份验证的方式。所以,这不是 WordPress 或 cronjob 的错。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-05
      • 2020-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      • 2019-08-08
      相关资源
      最近更新 更多