Der Unterschied zwischen der Plugin- (Haupt-) Datei und dem Plugin-Slug ist ein Ort, an dem der WordPress-Codex viel besser abschneiden könnte. Ich verstehe Ihre Verwirrung, wie ich sie in letzter Zeit gespürt habe (gemischt mit Frustration).
Dies habe ich gelernt, indem ich einige "Detektivarbeiten" am WordPress-Kerncode durchgeführt habe.
Die Plugin-Datei
Dies ist die einzigartige Art und Weise, wie WordPress ein Plugin identifiziert und aufzeichnet. Es besteht aus dem Verzeichnis des Plugins UND der Haupt-Plugin-Datei (die mit dem Dateikopf, der die verschiedenen Plugin-Details wie Version, Autor usw. enthält).
Es würde ungefähr so aussehen: your-plugin-directory/main-file.php
Wenn Sie sich die aktiven Plugins-Daten ansehen (zurückgegeben von get_option( 'active_plugins' )
), werden Sie feststellen, dass WordPress diese Plugin-Datei nur benötigt, um Plugins richtig zu identifizieren.
Sie können sich vorstellen, dass dies der relative Pfad der Hauptdatei Ihres Plugins ist (relativ zum wp-content/plugins/
Verzeichnis). Sie könnten den absoluten Pfad der Haupt-Plugin-Datei mit so etwas "komponieren":trailingslashit( WP_PLUGIN_DIR ) . $plugin_main_file
Der Kern selbst generiert die Plugin-Datei wie folgt:
$plugin_main_file = plugin_basename( trim( $plugin_main_file_absolute_path ) );
Der Plugin Slug
Man würde erwarten, dass das Plugin "slug" eine Art standardisierte ID für das Plugin ist, wie der Post-Slug für Posts - also könnten Sie diesen "Slug" verwenden, um es für WordPress-Kernfunktionen bereitzustellen und die Dinge in Gang zu bringen.
Nicht wirklich. Nachdem ich den Kern nach Verweisen auf Plugin-Slugs (oder Themen für das Wesentliche) durchsucht und fast nichts gefunden habe, denke ich, dass ich es verstanden habe.
Die einzigen echten Slugs sind solche für Dinge, auf die über eine eindeutige URL zugegriffen werden kann: Posts, Seiten, Taxonomien usw. Das ist der springende Punkt, wenn Sie den Namen von etwas (wie einen Post-Titel) nehmen und eine URL-freundliche Version davon generieren: verwenden es in einer URL.
Aber wo verwenden wir Theme / Plugins "Slugs" in URLs?
Wir machen das nicht bei einzelnen WordPress-Installationen - weder im WP-Admin noch im Frontend.
Es gibt jedoch einen Ort, der sehr stark mit dem WordPress-Code verstrickt ist, die WordPress.org-Site. Es fällt den Leuten schwer, zwischen den beiden zu unterscheiden, einschließlich der Tatsache , dass es unter Entwicklern irgendwie üblich wurde, zu berücksichtigen, dass das WordPress.org-Thema oder Plugin-Slugs genauso funktionieren sollten wie ein Post- oder Page-Slug.
Sie dienen demselben Zweck, jedoch auf separaten Websites. Auf WordPress.org werden sie verwendet, um ein Thema von anderen und ein Plugin von den anderen eindeutig zu identifizieren (in URLs wie https://wordpress.org/plugins/akismet/
).
Bei einzelnen WordPress-Installationen kann jedoch nicht die gleiche Einzigartigkeit garantiert werden, da keine Berechtigung zur Durchsetzung besteht (wie bei WordPress.org). Es könnte funktionieren, wenn alle Plugins und Themes von WordPress.org stammen, aber zum Glück ist das nicht der Fall.
Was macht der WordPress-Code mit Theme / Plugin-Slugs?
Der WordPress-Kerncode basiert nicht auf Themen- / Plugin-Slugs , um beispielsweise Themen oder Plugins zu installieren, zu aktivieren, zu aktualisieren, zu löschen.
Bei Themen hängt es vom Themenverzeichnis ab, da der Haupteinstiegspunkt in ein Thema die style.css
Datei ist (Sie können keine andere CSS-Datei verwenden, um Ihren Kopf für Themendetails zu speichern).
Für Plugins wird das Plugin-Verzeichnis UND die Haupt-Plugin-Datei verwendet , da Plugins ihre Hauptdatei nach Belieben aufrufen können.
Das einzige, wofür der Kern Theme / Plugins-Slugs verwendet, ist, wenn er Themes und Plugins aus dem WordPress.org-Verzeichnis verarbeitet: Abrufen von Plugin-Listen, Suchen nach Updates, Zurückmelden an die Verzeichnisnutzungsdaten usw.
Um alles über Plugin-Slugs zusammenzufassen: Wenn Sie Plugin-Daten mit dem slug
Eintrag finden, wird in 99% der Fälle auf den WordPress.org-Slug des Plugins verwiesen.
Wie identifizieren wir Plugins?
Wenn Sie ein bestimmtes Plugin in einer WordPress-Installation programmgesteuert aktivieren, aktualisieren, deaktivieren oder löschen möchten, müssen Sie die Plugin-Datei verwenden. Sie können es so aus der Hauptdatei Ihres Plugins herunterladen:
$plugin_file = plugin_basename( __FILE__ );
Wenn Sie ein bestimmtes Plugin von einem anderen Plugin aus anvisieren möchten, wird es etwas schwieriger, da Sie sich auf ein bisschen "Rätselraten" verlassen müssen.
Sie können den Plugin-Namen fest codieren, das Plugin in der Liste aller Plugins durchsuchen ( siehe get_plugins () ) und die Plugin-Datei von dort abrufen .
Wenn Sie eine Klasse oder Funktion kennen, die von diesem Plugin definiert wird, können Sie Reflection verwenden (siehe diese Antwort für Klassen und diese für Funktionen).
Ich hoffe, dies hilft Ihnen und anderen, die Schwierigkeiten haben könnten, mit "Plugin-Slugs" umzugehen. Es hätte mir ein paar Stunden ersparen können :)