【问题标题】:Wordpress functions don't work in php script ran in bashWordpress 函数在 bash 中运行的 php 脚本中不起作用
【发布时间】:2019-02-11 13:43:18
【问题描述】:

我有一个 PHP 脚本(目前是一个 WP 页面),它使用 WP 查询循环自定义帖子类型,更新一些值以及将一些图像上传到媒体库。这个脚本作为一个页面可以正常工作,但是由于它很重并且必须作为 cronjob 运行,所以我决定对其进行调整以在 cli 中运行,但它只是拒绝工作。

目前,我需要在我的脚本之前使用 wp-load.file 来获取 WP 核心,并解析 args,将它们放入 $_REQUEST 数组中。 该脚本确实运行但不返回任何输出(如果有任何错误除外),或者执行实际工作,因此我无法以这种方式对其进行调试。

可能是什么问题以及为什么它不起作用?

(我在 WHM centos 上使用 WordPress 4.9.8 运行 PHP 7.2)

编辑:我已经能够使用 error_log 调试脚本,使其正确运行并在适当时返回输出(必须填充 wp 初始化所需的 $_SERVER 数组的一些成员),但是 wordpress 循环查询简单的自定义帖子类型时为空。这可能是什么问题?

【问题讨论】:

  • 你的error_log 说什么?
  • 您是否在正确的位置包含 wp-load.php 文件?
  • 您是否尝试过使用wp cron 构建事件?您可以从系统cron 触发wp cron 或远程ssh 命令执行到cd wpinstallrootfolder; wp cron event run --due-now;
  • 我需要能够从 shell 运行这个脚本,因为它是一个繁重的脚本,需要很长时间才能完成(比我在 apache 中的 php 最大执行时间长)
  • 我已经能够使用 error_log 调试脚本,使其能够正确运行并在适当时返回输出(必须填充 wp 初始化所需的 $_SERVER 数组的一些成员),但是查询简单的自定义帖子类型时,wordpress 循环为空。这可能是什么问题?

标签: php linux wordpress bash


【解决方案1】:

您需要在页面顶部包含wp-load.php 文件。

require_once("wp-load.php");

或者

require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');

【讨论】:

  • 正如问题中提到的,我已经需要 wp-load.php,但它无论如何都不起作用。
猜你喜欢
  • 2011-07-29
  • 1970-01-01
  • 2020-11-27
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 2013-04-30
  • 2017-04-11
  • 2011-09-19
相关资源
最近更新 更多