In der WordPress-Dokumentation zum Ermitteln von Plugin- und Inhaltsverzeichnissen heißt es:
WordPress verwendet die folgenden Konstanten, um den Pfad zu den Inhalts- und Plugin-Verzeichnissen zu bestimmen. Diese sollten nicht direkt von Plugins oder Themes verwendet werden. Der Vollständigkeit halber werden sie hier aufgeführt.
Es folgt eine Liste WP_CONTENT_DIR
und eine Liste der WP_PLUGIN_DIR
Konstanten, die Theme- und Plugin-Entwickler nicht verwenden sollten, vermutlich aus folgendem Grund:
Mit WordPress können Benutzer ihr WP-Inhaltsverzeichnis an einer beliebigen Stelle platzieren. Sie dürfen also niemals davon ausgehen, dass sich Plugins in WP-Inhalten / Plugins befinden oder dass sich Uploads in WP-Inhalten / Uploads befinden oder dass sich Themen in WP-Inhalten / Uploads befinden. Inhalt / Themen.
Mark Jaquith bemerkt hier auch, dass diese Konstanten nicht verwendet werden sollten:
Verwenden Sie nicht WP_PLUGIN_URL oder WP_PLUGIN_DIR - Plugins befinden sich möglicherweise nicht im Plugins-Verzeichnis.
Was ist die akzeptierte Methode, um den vollständigen Pfad zu den Ordnern für Plugins, WP-Inhalte und Designs zu referenzieren, ohne diese Konstanten zu verwenden?
Als einfaches Beispiel, um den vollständigen Pfad aller installierten Plugins auszugeben, kann ich dies tun:
<?php
$plugins = get_plugins();
foreach ($plugins as $file => $details) {
echo WP_PLUGIN_DIR . '/' . $file . '<br>';
}
Was ergibt eine Liste wie folgt:
/var/www/wp-content/plugins/akismet/akismet.php
/var/www/wp-content/plugins/debug-bar/debug-bar.php
/var/www/wp-content/plugins/hello.php
(Ich möchte dies möglicherweise tun, wenn ich ein Plugin geschrieben habe, damit der Benutzer Plugins zum Beispiel als Teil einer Site-Sicherung selektiv archivieren kann.)
Wenn die Verwendung WP_PLUGIN_DIR
falsch ist, welche Alternative wird empfohlen? Es gibt keine Entsprechung wp_upload_dir()
für den Ordner plugins, themes und wp-content, den ich finden kann, was das Verweisen auf die möglicherweise umherirrenden Themes und Plugins-Stammverzeichnisse problematisch macht.
WP_PLUGIN_DIR
, daher meine Frage hier.Antworten:
Referenzdatei im aktuellen Pfad oder tiefer verschachtelt
Den aktuellen Pfad referenzieren
das funktioniert in Plugins und Themes .
Referenz URl / URi in einem Plugin
Verwenden Sie, um auf ein Plugin oder eine Designdatei zu verweisen
das funktioniert nur in plugins
Referenz URl / URi im
wp-admin
OrdnerZeigen Sie immer auf
admin_url( 'some/path' );
. Das gibt esget_admin_url()
auch.Referenz URl / Uri im
wp-includes
OrdnerZeigen Sie sie auf
includes_url( 'some/path' );
Ein URl / URi in Bezug auf die Site-Startseite
Es gibt
home_url( 'etc' );
oderget_home_url()
dafür. Ähnlich istget_site_url()
undsite_url()
. Dann ist da auch nochnetwork_home_url()
. Und du hastnetwork_admin_url()
wp-content
oder das umbenannte VerzeichnisSie können den
wp-content
Ordnernamen neu definieren . Deshalb benutzt ducontent_url()
dort.Wie bekomme ich die URL des Plugins-Ordners?
Einfach
plugins_url()
ohne Parameter verwenden.Wenn Sie es für ein Plugin verwenden, funktioniert es auch für MU-Plugins.
BEARBEITEN 1 Wenn Sie sich für den Pfad zum aktuellen Plugin interessieren, verwenden Sie
plugin_basename();
.BEARBEITEN 2 Wenn Sie an allen seitlich aktiven Plugins interessiert sind, verwenden Sie
wp_get_active_network_plugins();
.Wenn Sie nicht auf Multisite sind, gehen Sie mit
wp_get_active_and_valid_plugins();
. Dies wird Multisite / Netzwerk berücksichtigen. Denken Sie daran, dass dies sie berücksichtigt, wenn Sie nicht auf Multisite sind, aber einsunrise.php
Drop-In haben.Sie können sie auch über abrufen
get_option( 'active_plugins' );
, was nicht empfohlen wird, da Filter und Plugin-Validierung nicht berücksichtigt werden, was häufig vorkommt.Weitere Lektüre
Diese Liste geht weiter und weiter. Weitere Informationen finden Sie in den Suchergebnissen auf QueryPosts.com .
Dieser Artikel geht in absoluter Tiefe auf alle Pfade ein.
quelle
plugins_url()
die URL zum Ordner plugins zurück, nicht den vollständigen Pfad zum Verzeichnis auf dem Server. Gibt es ähnliche Funktionen für den Umgang mit Verzeichnissen, die mir nicht bekannt sind? Oder ist der Rat, dieWP_PLUGIN_DIR
Konstante nicht zu verwenden, einfach falsch?WP_PLUGIN_DIR
.Dies gibt den Serverpfad des aktuellen Plugin-Verzeichnisses zurück:
Siehe: https://codex.wordpress.org/Function_Reference/plugin_dir_path
Nicht zu verwechseln mit:
(Beachten Sie den Plural „Plug - s “ auf das.)
Da der Name des Plugin-Verzeichnisses nicht zurückgegeben werden soll, müssen wir ihn entfernen. Hier ist eine Funktion, die das Plugin-Verzeichnis und den Dateinamen zurückgibt:
Aber wir wollen natürlich auch nicht den Dateinamen des Plugins, also müssen wir diesen zuerst entfernen
plugin_basename(__FILE__)
. So geben Sie den Dateinamen des Plugins zurück:Um diese zu verwenden, um einen Pfad zum Plugin- Verzeichnis zu erstellen , können wir die folgende
str_replace()
Funktion verwenden:Bei Bedarf kann diese letzte Zeile natürlich einer Variablen zur wiederholten Verwendung zugewiesen werden.
Anstatt von:
Verwenden Sie etwas wie:
Und später, wenn nötig:
quelle