我對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