如何在自定义.php文件中包含WordPress功能?
详细说明:我的主题(构造函数)下有一个名为reports的目录。它们包含.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):无法打开流......所以路径必须正确。)
有什么我忽略的吗?为什么我不能包含这个wp文件?包含wp函数的正确方法是什么?
感谢您的帮助,Sziro
答案 0 :(得分:91)
你走在正确的轨道上。试试这个:
require_once("../../../../wp-load.php");
答案 1 :(得分:16)
如果WordPress是文档根目录,那么没有点数的更专业的方式:
require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
答案 2 :(得分:2)
require_once(dirname(__FILE__) . '/options.php');
这是在WordPress中包含文件的更好方法。
答案 3 :(得分:2)
如果有人安装了较新的PHP版本(ver> = 5.5.x),那么他们也可以在WordPress网站目录本身的根脚本中尝试以下代码:
Person
或者
<?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 :(得分:1)
外部文件可以轻松访问WordPress功能。您只需要在外部文件中包含文件wp-load.php
。
wp-load.php
文件位于WordPress安装目录的根目录中。
示例:假设您的文件test.php
位于WordPress安装的根目录中。
<?php
require_once('wp-load.php');
// Your custom code
?>
答案 5 :(得分: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');
}