76

如何在自定义 .php 文件中包含 WordPress 函数?

详细说明:我的主题(构造函数)下有一个名为报告的目录。这些包含 .php 文件,这些文件使用 DOMPDF 从站点的数据生成报告以供下载。对于这些,我想使用 WordPress 引擎提供的功能,例如get_the_author_meta( 'user_firstname', $user_id ). 如果我使用这些,我(自然)会得到以下错误:

致命错误:在第 15 行的 ROOT/public_html/wp-content/themes/constructor/reports/testreport.php 中调用未定义函数 get_the_author_meta()

我被引导相信我需要包含 wp-blog-header.php 。我用require_once("../../../../wp-blog-header.php");. 有了这个我得到以下404错误:

没有找到该网址的网页:ROOT/wp-content/themes/constructor/reports/testreport.php

(需要指向正确的路径。如果我摆弄它,我会收到警告:require_once(../../../wp-blog-header.php): failed to open stream... 所以路径必须是正确的。)

有什么我忽略的吗?为什么我不能包含这个 wp 文件?包含 wp 函数的正确方法是什么?

感谢您的帮助,西罗

4

6 回答 6

140

你在正确的轨道上。试试这个:

require_once("../../../../wp-load.php");
于 2013-03-09T03:00:01.880 回答
30

要在自定义 .php 文件中使用 wp 函数,您必须将其包含wp-load.php在您的文件中。您可以通过添加以下行来做到这一点:

require_once(PATH_TO.'/wp-load.php');

如果 WordPress 在文档根目录中,请改为添加:

require_once($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
于 2016-05-23T06:20:12.877 回答
4

好吧,如果有人安装了较新的 PHP 版本(ver >= 5.5.x),那么他们也可以在 WordPress 网站目录本身的根脚本中尝试以下代码:

<?php
define("WP_ROOT", __DIR__);
define("DS", DIRECTORY_SEPARATOR);
require_once WP_ROOT . DS . "wp-load.php";

或者

<?php
define("WP_ROOT", __DIR__);
define("DS", DIRECTORY_SEPARATOR);
require_once WP_ROOT . DS . "wp-blog-header.php";

我想这是一种更直接和更干净的方法,不涉及手动添加斜杠和更改目录..

希望这可以帮助某人。

于 2017-08-22T09:10:24.493 回答
3
require_once(dirname(__FILE__) . '/options.php');

这是在 WordPress 中包含文件的更好方法。

于 2014-02-05T09:13:14.063 回答
2

外部文件可以轻松访问 WordPress 功能。您只需要将文件包含wp-load.php在您的外部文件中。该wp-load.php文件位于 WordPress 安装的根目录中。示例:假设您的文件test.php位于 WordPress 安装的根目录。

<?php
require_once('wp-load.php');
// Your custom code
?>

来源:如何在外部文件中访问 WordPress 函数

于 2018-11-13T16:29:13.283 回答
1

我使用这种方法在 WordPress 之外加载 WordPress 环境。

  if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/wp-load.php')) {

      /** Loads the WordPress Environment and Template */
      require_once($_SERVER['DOCUMENT_ROOT'] . '/wp-load.php');

  }
于 2020-04-14T04:54:54.297 回答