如何在自定义.php文件中包含WordPress功能?

时间:2013-03-08 23:14:21

标签: php wordpress include

如何在自定义.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

6 个答案:

答案 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.phpwp-load.php文件位于WordPress安装目录的根目录中。 示例:假设您的文件test.php位于WordPress安装的根目录中。

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

来源:How to access WordPress functions in external file

答案 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');

  }