Ich frage mich, wie ich den Slug von Plugins finden kann (slug = interner Name, der von WordPress verwendet wird, um Plugin-Updates durchzuführen und festzustellen, welche Plugins derzeit aktiv sind). Es ist normalerweise der Ordnername des Plugins, aber wenn ein Plugin keinen Ordner hat, ist es sein Dateiname (wie hello.php). Gibt es noch andere Ausnahmen?
- Sind Klein- und Großbuchstaben wichtig?
- Kann ein Plugin einen anderen Slug als seinen Ordnernamen haben? Was ist, wenn es ein Plugin namens hello.php und ein anderes /hello.php/hello.php gibt?
Antworten:
Die in WordPress verwendete Zeichenfolge zur Identifizierung des Plugins lautet:
... wo
$file
ist eine Datei mit dem Plugin - Header .Also, wenn Sie in Ihrem Plugin sind, holen Sie sich den Slug mit:
quelle
dirname(plugin_basename(__FILE__))
.Wenn Sie WP-CLI installieren , können Sie die Liste der Plugins mit ihrem Slug und ihrer Version über die Befehlszeile abrufen:
> wp plugin list
Ich weiß, dass Sie das wahrscheinlich nicht wollen, wenn Sie den Slug-in-Code finden müssen, aber es hat mir bei der Arbeit mit dem TGM-Plugin-Activation-Plugin geholfen.
Ich finde es schwierig, mit WordPress ohne die WP-CLI zu arbeiten. Im Allgemeinen ist es ein sehr nützliches Werkzeug für viele allgemeine Aufgaben im Zusammenhang mit WordPress.
quelle
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 :)
quelle
Nur um das seit dem ursprünglichen Beitrag zu verdeutlichen.
Ich habe den Plugin-Slug gefunden, indem ich zuerst zu Ihrem Plugin-Ordner navigiert, dann den mit dem Plugin verknüpften Ordner geöffnet und schließlich die Datei gefunden habe, die den folgenden Code enthält. Sobald Sie diese Datei gefunden haben, sollte der Dateiname abzüglich der Erweiterung Ihr Plugin-Slug sein.
Wenn ich zum Beispiel den folgenden Code in einer Datei mit dem Namen advanced-plugin-awesomeness.php gefunden habe, wäre mein Slug advanced-plugin-awesomeness.
Hoffe das hilft!
quelle
Leider wird der Slug über die Update-API zurückgegeben. Die Antwort auf diese Frage ist nur dann so offensichtlich, wenn Sie die API selbst abfragen. Wenn Sie jedoch eine Liste Ihrer aktuellen Plugin-Slugs und zugehöriger Plugin-Daten anzeigen möchten, können Sie einfach Folgendes tun:
Da dies jedoch für weitere 12 Stunden keine Informationen zu einem neu installierten Plugin enthält, müssten Sie für diese etwas anderes tun, z. Verwenden Sie eine modifizierte Version des Codes von
wp_update_plugins
inwp-includes/update.php
...Nachdem dies getan wurde, um es zu testen, scheint es zu bestätigen, dass es unabhängig vom Dateinamen oder Speicherort oder Großbuchstaben des Plugins tatsächlich
Plugin Name
derjenige ist , der den Update-Slug generiert, höchstwahrscheinlich übersanitize_title
. Daher glaube ich, dass die richtige Antwort lauten sollte:quelle
Sie können den Ordnernamen des Plugins (PHP5.3 +) erhalten, indem Sie DIR an plugin_basename () übergeben, wie folgt:
quelle
Versuche dies:
quelle
Bei den meisten Plugins entspricht der "Slug" dem Verzeichnisnamen. Obwohl die .org-Leute den Verzeichnisnamen auf alles setzen können, was sie wollen.
quelle