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

Posted

技术标签:

【中文标题】如何在自定义 .php 文件中包含 WordPress 函数?【英文标题】:How to include WordPress functions in custom .php file? 【发布时间】:2013-02-24 15:25:30 【问题描述】:

详细说明:我的主题(构造函数)下有一个名为报告的目录。这些包含 .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 指向正确的路径。如果我摆弄它,我会收到警告:require_once(../../../wp-blog-header.php): failed to open stream... 所以路径必须正确。)

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

谢谢你的帮助,西罗

【问题讨论】:

古腾堡用户:wpza.net/including-wordpress-functions-in-a-custom-php-file 【参考方案1】:

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

require_once("../../../../wp-load.php");

【讨论】:

谢谢,这就是解决方案! 这是一个很好的解决方案,但它会加载所有已安装插件和主题的 wp 站点......这违反了 yagni 原则en.wikipedia.org/wiki/You_aren't_gonna_need_it 如果他在 Wordpress 内部加载文件,这可能是正确的,但如果您阅读原始问题,他是在询问如何从外部 php 文件加载它。 清洁工:require_once(rtrim($_SERVER['DOCUMENT_ROOT'], '/') . '/wp-load.php'); $_SERVER 可能无法通过 cli 定义,请使用 __DIR__ . '/path/to/wp-load,php';【参考方案2】:

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

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

如果 WordPress 在文档根目录中添加:

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

【讨论】:

WordPress 不一定在文档根目录中。 另外,您需要 rtrim document_root 以使用正斜杠【参考方案3】:

如果有人安装了较新的 PHP 版本(版本 >= 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";

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

希望这对某人有所帮助。

【讨论】:

【参考方案4】:
require_once(dirname(__FILE__) . '/options.php');

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

【讨论】:

他没有问如何在 Wordpress 中包含文件。他想从外部 PHP 文件加载 Wordpress。你的解决方案行不通。 他知道我敢肯定。他正在加入讨论。现在我要使用这个方法+ wp-load.php。 ;)【参考方案5】:

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

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

来源:How to access WordPress functions in external file

【讨论】:

【参考方案6】:

我使用这种方法在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');

  

【讨论】:

以上是关于如何在自定义 .php 文件中包含 WordPress 函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel-4 中包含不同环境的自定义配置

magento如何调用自定义模型

PHP Wordpress作者页面在配置文件中包含自定义字段

如何在文件中包含php别名

如何在 .htaccess 中包含 php 文件?

如何在 PHP 中包含名称存储在数组中的文件?