可以要求在“hemeFolders/unctions.php”中使用“heme文件夹/includes/widgets.php”,但widgets.php不能运行

时间:2015-08-27 作者:Wouter Vandenneucker

为了保持整洁,我使用函数。php几乎完全需要其他文件。作为功能的一部分。php如下所示:

#include types
require("includes/types.php");
#include shortcodes
require("includes/shortcodes.php");
#include widgetareas
require("includes/widgetareas.php");
#include paging navs
require("includes/paging-navs.php");
#include widgets
require("includes/widgets.php");
文件夹/包含/小部件。php如下所示:

/*columns widget*/
require("widgets/columns-widget.php");
并且在文件夹/包含/小部件/列小部件中编写了一个工作小部件。php

现在有一个奇怪的部分:这段代码没有中断或抛出任何错误。然而,在themefolder/includes/widgets中编写的代码。php不会得到处理和我的列小部件。php不加载。

另一方面,如果我重命名文件夹/包含/小部件。php到themefolder/includes/widget。php并更改函数中的相应行。php收件人

#include widgets
require("includes/widget.php"); 
代码按预期运行,并加载“我的列”小部件。

为什么会这样?这是一个bug还是预期行为?

1 个回复
最合适的回答,由SO网友:Rarst 整理而成

PHP查找相对路径的第一个位置是not 是您指定的包含在中的文件,但相对于入口点文件(index.php 或者别的什么)。

根据给定的文件路径包括文件,如果没有给定,则根据指定的include\\u路径包括文件。如果在include\\u路径中找不到该文件,include将在失败之前最终签入调用脚本自己的目录和当前工作目录。

http://php.net/manual/en/function.include.php

我猜你的代码wp-admin/includes/widgets.php (因为在管理上下文中,入口点很可能wp-admin/index.php) 而不是你的文件。

始终编写包含,如require( __DIR__ . \'/includes/widgets.php\' );

相关推荐

About wordpress child themes

我对WordPress和儿童主题有一些问题。据我所知,如果我不想在更新主题时失去任何东西,使用子主题是很重要的。我是WordPress的初学者,到目前为止,我一直在使用PageBuilder(管理面板上的板载自定义选项)自定义我的网站,并在“附加CSS”选项中加入几行CSS。所有这些都是在主主题上完成的(只是玩转尝试学习),现在我想开始使用一个儿童主题。问题如下:我不知道我是否可以像通过管理界面设计父主题那样设计我的子主题,或者我是否必须通过文本编辑器(在我的计算机上,然后通过FTP等方式上传)对所有内容