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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在自定义.php文件中包含WordPress功能?相关的知识,希望对你有一定的参考价值。

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

答案

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

require_once("../../../../wp-load.php");
另一答案

如果WordPress是文档根,那么没有点的东西就更专业:

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

好吧,如果有人安装了较新的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";

我想这是一个更直接,更干净的方法,并不涉及手动添加斜线和更改由..的diretories。

希望这有助于某人。

另一答案
require_once(dirname(__FILE__) . '/options.php');

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

另一答案

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

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

资料来源:How to access WordPress functions in external file

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

如何在自定义 PHP 脚本中调用 WordPress 函数

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

如何在 Wordpress 自定义帖子类型查询中包含分页

PHP 在functions.php中的WordPress中包含和注册Javascript文件

在WordPress中包含并注册Javascript文件函数.php

在 functions.php (WordPress) 中包含 ACF