Ich bin ziemlich neu in PHP und lerne immer noch, wie einige der Funktionen include/require funktionieren. Ich arbeite an einem Plugin, und ich versuche, die Hauptvorlage in ein paar Dateien aufzuteilen, um das Lesen/Verwalten zu erleichtern (wenn das eine schlechte Idee ist, ist das eine ganz andere Diskussion). Mein Plugin für öffentliche Ordner sehen irgendwie wie folgt aus:Warum schließt meine PHP-Anweisung fehl, wenn ich das Verzeichnis in den relativen Pfad einschließe?
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
In meinen Klasse-Ressourcen-Kurz codes.php Datei, ich habe drei Arbeits Aussagen enthalten:
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 -->";
});
Dann in dem Kind Vorlage Ressourcen-filters.php, ich habe eine andere umfasst das soll in dem HTML-Code aus den Ressourcen-query.php Datei ziehen:
<?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>
Meine Frage ist - warum funktionieren zwei dieser Methoden, aber die anderen beiden nicht? Ich weiß, ich bin ein wenig verwirrt darüber, wie Dateipfade bestimmt werden, wenn Sie verschachtelte Include-Anweisungen verwenden.
PHP-Version: 5.3.3 Wordpress Version: 4.2.2
Dank!
Das Starten eines Pfades mit '/' bedeutet Start an der Wurzel. – j08691
Ich weiß nicht, wie das letzte Beispiel funktionieren könnte. Klammern sind falsch. Änderung: 'include (dirname (__FILE__)). "/ Ressourcen-Abfrage.php ";' auf: (. dirname (__FILE__) 'umfassen "/resources-query.php");' – manassehkatz
@manassehkatz Dies ist definitiv ein Tippfehler in meinem Code als auch, so ich habe keine Ahnung, warum es funktioniert, aber es wird angezeigt. – kauffee000