我对PHP相当陌生,现在仍在学习如何使用某些include/require函数。我正在研究一个插件,并且我正在尝试将主模板分解成几个文件,以便更易于阅读/维护(如果这是一个糟糕的主意,那么这是一个其他的讨论)。我的插件公用文件夹看起来有点像这样:当我在相对路径中包含目录时,为什么我的PHP包含语句失败?
resources-plugin
├── includes
│ ├── class-resources-short-codes.php
│ └── index.php
├── index.php
├── public
│ └── partials
│ ├── resources-banner.php
│ ├── resources-filters.php
│ ├── resources-items.php
│ └── resources-query.php
在我类资源 - 短codes.php文件,我有三个工作包括声明:
add_shortcode('example-resources-sc', function() {
// Banner
include(dirname(__FILE__) . "/../public/partials/resources-banner.php");
echo "<article class='resources flex-container'>";
// Filters
include(dirname(__FILE__) . "/../public/partials/resources-filters.php");
// Resources
include(dirname(__FILE__) . "/../public/partials/resources-items.php");
echo "</article><!-- /resources -->";
});
然后,在子模板资源-filters.php,我还有一个包括应该在HTML拉从资源,query.php文件:
<?php
// Doesn't work
// include("./resources-query.php");
// include(plugins_url("resources-plugin/public/partials/resources-query.php"));
// Works
//include("resources-query.php");
include(dirname(__FILE__)) . "/resources-query.php";
?>
<div class="slide-container">Other HTML here.</div>
我的问题是 - 为什么这些方法中的两个有效,但其他两个不行?我知道我对使用嵌套包含语句时如何确定文件路径有点困惑。
PHP版本:5.3.3 WordPress版本:4.2.2
谢谢!
用'/'开始路径意味着从根开始。 – j08691
我不知道最后一个例子如何工作。圆括号是错误的。更改: 'include(dirname(__FILE__))。 “/资源的查询。php“;' : 'include(dirname(__FILE__)。”/resources-query.php“);' – manassehkatz
@manassehkatz这绝对是我的代码中的一个错字,所以我不知道为什么它作品,但它的显示。 – kauffee000