So fügen Sie jedem WordPress-Plugin WP-CLI-Unterstützung hinzu

Veröffentlicht: 2018-08-14

Das Anpassen eines Plugins an die Bedürfnisse des Benutzers ist eine der Hauptagenden, die jeder Plugin-Besitzer befolgen muss. Für einen Frontpage-Slider bedeutet das mehr Farbwähler, Schriftarten und ähnliche visuelle Optionen. Wenn Sie jedoch früher oder später Entwickler, Administratoren und andere Power-User bedienen, werden diese CLI-Unterstützung wünschen. Sie werden die Maus loswerden und nur noch mit der Tastatur arbeiten wollen. Dank des WP-CLI-Projekts ist das Hinzufügen von CLI-Unterstützung zu Ihrem Plugin ein Kinderspiel.

Indem Sie @wpcli-Unterstützung zu Ihrem #WordPress-Plug-in hinzufügen, öffnen Sie es für Entwickler, Power-User und Administratoren.

KLICKEN, UM ZU TWEETEN

Der ewige Kampf zwischen GUI und CLI

Lassen Sie uns etwas aus dem Weg räumen: GUI (Graphical User Interface) ist nicht besser als CLI (Command Line Interface) und umgekehrt: CLI ist nicht besser als GUI. Die Leute bevorzugen das eine gegenüber dem anderen. Es ist eine Frage der persönlichen Präferenz oder Gewohnheit. „Sind sie gleich, sind sie austauschbar?“ Mit einigen Kompromissen können sie es sein, aber niemand wählt gerne Farben in einer Schwarz-Weiß-Befehlszeilenschnittstelle aus. Das ist einfach kontraproduktiv. Sie dienen jeweils einem speziellen Zweck.

„Warum brauchen wir beides? Ist WP nicht eher GUI-orientiert?“ Es ist, WP ist mehr GUI-orientiert. Aber nicht für alle Benutzer. Einige Leute verwenden WP auf eine Weise, die besser für CLI geeignet ist, und es ermöglicht ihnen, viel schneller damit zu arbeiten. Außerdem, warum nicht beides haben? Es bläht nichts auf oder stört.

WP-CLI ist also ein Plugin, richtig?

Nein, es ist kein Plugin. Sie müssen einer WordPress-Installation nichts hinzufügen, damit WP-CLI funktioniert. Sie benötigen nur WP-CLI auf Ihrem Betriebssystem. WP-CLI ist in PHP geschrieben und in ein Phar gepackt. Es ist eine Möglichkeit, eine ganze PHP-Anwendung in einer einzigen Datei, einem „phar“ (PHP-Archiv), zur einfachen Verteilung und Installation auf verschiedenen Betriebssystemen zusammenzufassen. Der Installationsprozess hängt von Ihrem Betriebssystem ab, ist aber einfach und im WP-CLI-Handbuch gut dokumentiert – oder wenn Sie mehr auf Videos stehen, hier ist eines der WP-CLI-Installation unter Windows.

Ich werde keines der obigen Materialien wiederholen. Es ist detailliert genug und sollte Sie in wenigen Minuten mit WP-CLI zum Laufen bringen. Wenn Sie es ausgeführt haben, ändern Sie Ihr Arbeitsverzeichnis in die WP-Installation, mit der Sie arbeiten möchten, und führen Sie wp option get home aus, um sicherzustellen, dass Sie sich auf der richtigen WP-Installation befinden und dass WP-CLI funktioniert.

Arbeiten mit WP-CLI unter Windows 10 – Ausgabe für unsere benutzerdefinierten „Site-Info“-Befehle

Es ist einfacher als es aussieht

Zuerst brauchen wir eine Funktion, die uns mitteilt, ob der Benutzer mit WP über CLI interagiert oder nicht. Es ist für viele Dinge nützlich, z. B. um keine HTTP-Header zu senden, während Sie sich in CLI befinden, und um CLI-Funktionen bei „normalen“ Aufrufen nicht einzuschließen. Es gibt uns auch die Möglichkeit, alte Funktionen, die ursprünglich für die GUI geschrieben wurden, mit nur einigen geringfügigen Änderungen wiederzuverwenden.

function is_cli_running() {
  return defined( 'WP_CLI' ) && WP_CLI;
}

Der nächste Schritt besteht darin, einen Namen für Ihren CLI-Befehl herauszufinden. Es gibt ungefähr 40 eingebaute Befehle. Sie können also keinen dieser Namen verwenden, und Sie sollten sich von Markennamen wie „Google“ fernhalten, da Google wahrscheinlich nicht Ihnen gehört. Idealerweise sollte es der Name Ihres Plugins oder ein Überbegriff für eine Reihe von Funktionen sein, die es ausführt, damit Sie alle Befehle unter diesem platzieren können, um den Hauptnamensraum nicht zu verschmutzen. Es ist gesunder Menschenverstand, wie bei jedem Stück Code. Lassen Sie uns site-info verwenden und einige Funktionen erstellen, die verschiedene Informationen über die Site zurückgeben.

Um die Dinge sauber und ordentlich zu halten, lege den gesamten WP-CLI-bezogenen Code in eine neue Datei – custom-wp-cli-commands.php . Wir werden diese Datei nur einschließen, wenn sie benötigt wird und wenn der gesamte CLI-bezogene Code verfügbar ist. Dafür verwenden wir die Funktion, die wir gerade gebaut haben. Legen Sie die Datei zum Testen und Lernen in den Ordner Ihres aktiven Designs und fügen Sie sie dann der Datei functions.php des Designs hinzu.

if ( is_cli_running() ) {
  require_once 'custom-wp-cli-commands.php';
}

Fügen Sie dies dann in custom-wp-cli-commands.php ein;

/**
 * Just a few sample commands to learn how WP-CLI works
 */
class cli_site_info extends WP_CLI_Command {
  /**
   * Display version information.
   * ## OPTIONS
   *
   * [--wponly]
   * : Shows only WP version info, omitting the plugin one.
   */
  function version( $args, $assoc_args ) {
    if ( !empty( $assoc_args['wponly'] ) ) {
      WP_CLI::line( 'Version of WordPress is ' . get_bloginfo( 'version' ) . '.' );
    } else {
      WP_CLI::line( 'Version of this plugin is 0.1-beta, and version of WordPress ' . get_bloginfo( 'version' ) . '.' );
    }
  }
    
    
  /**
   * Display the number of plugins.
   */
  function plugins() {
    WP_CLI::line( 'There are a total of ' . sizeof( get_plugins() ) . ' plugins on this site.' );
  }
}

WP_CLI::add_command( 'site-info', 'cli_site_info' );

Wenn Sie die Site, Homepage oder den Adminbereich in einem Browser öffnen, passiert nichts. Das ist gut. Um den neuen CLI-Befehl zu testen, gehen Sie zurück zu Ihrem Befehlszeilenfenster, führen Sie wp site-info version aus und Sie erhalten das Plugin und die Site-Version. Oder führen Sie wp site-info plugins aus und Sie erhalten die Gesamtzahl der Plugins auf der Website. Einfach richtig? Lassen Sie uns den Code durchgehen.

So einfach wie das Erweitern einer PHP-Klasse

Unsere Klasse cli_site_info erweitert die Klasse WP_CLI_Command ; nichts Besonderes da. Du kannst die Klasse nennen, wie du willst. Wichtig ist der Code in der letzten Zeile der Datei – WP_CLI::add_command( 'site-info', 'cli_site_info' ) . Es registriert unseren Befehl der obersten Ebene und bindet unsere Klasse daran. Wenn Sie den site-info Befehl in etwas anderes ändern möchten, ist dies der richtige Ort dafür.

Jede öffentliche Methode (Funktion) in der Klasse ist ein Unterbefehl in WP-CLI. Schauen Sie sich unbedingt die Anatomie eines Befehls an, um den richtigen WP-CLI-Jargon zu lernen. Es besteht keine Notwendigkeit, die Methode irgendwo zu „registrieren“ oder irgendetwas extra zu tun. Wie wir es für plugins() und version() getan haben – erstellen Sie eine Standardfunktion, und das war's. WP-CLI wird wissen, was damit zu tun ist.

Sobald Sie sich in der Methode befinden, können Sie jeden benötigten Code ausführen. Die Interaktion mit der CLI erfordert jedoch einige benutzerdefinierte Funktionen, da Dinge wie echo nicht wie erwartet funktionieren. Statt echo gibt es WP_CLI::line() . Die interne WP-CLI-API deckt alles ab, was Sie brauchen, und alle Funktionen sind gut dokumentiert sowie in die Kategorien Eingabe, Ausgabe, Verschiedenes, System und andere Kategorien unterteilt, wodurch sie superleicht zu finden sind.

Neben dem Drucken von Text möchten Sie wahrscheinlich (assoziative) Befehlsargumente verwenden, damit Sie Dinge wie wp site-info version --wponly (probieren Sie es aus) aufrufen können, die nur die WP-Versionsinformationen ausgeben. Assoziative Argumente werden im zweiten Funktionsargument der Methode gespeichert. In unserem Fall heißt es $assoc_args . Das Einzige, was übrig bleibt, ist, den Array-Schlüssel auf einen bestimmten Wert zu testen und den Code entsprechend anzupassen, wie wir es in function version( $args, $assoc_args ) .

Dokumentation und In-CLI-Hilfe

WP-CLI hat ein eingebautes Hilfesystem. Es ist ziemlich praktisch. Es wird nie eine externe Dokumentation für einen Befehl benötigt, wenn der Entwickler etwas Zeit investiert, um den Befehl in seinem Code zu beschreiben. Die Dokumentation schreibt sich (leider) nicht von selbst, aber wenn Sie beim Erstellen Ihrer Befehle das Nötigste investieren, werden die Benutzer ewig dankbar sein, da Sie alle Dokumente unter einem Dach zusammenfassen.

Sie schreiben die Dokumente in Ihrer Klasse als Kommentare im PHPDoc-Format. Weitere Informationen finden Sie im CLI-Handbuch. Wenn Sie wp help site-info ausführen, erhalten Sie eine Liste und Beschreibung unserer Unterbefehle, und wenn Sie in den Code schauen, sehen Sie, woher er kommt. Sehr selbsterklärend. Für weitere Details zum Unterbefehl version führen Sie wp help site-info version aus und Sie erhalten auch Details zu den Optionen.

Obwohl nicht von einer großen Anzahl von Menschen verwendet, wird @wpcli oft von denen verwendet, die die Zukunft von #WordPress und die Meinung vieler Benutzer prägen. Das Hinzufügen von CLI zu Ihrem Plugin könnte ein kluger Schachzug sein

KLICKEN, UM ZU TWEETEN

Machen Sie Ihre Benutzer glücklich

Sicher, wenn Sie ein Wetter-Widget entwickeln, klingt das Hinzufügen von WP-CLI-Unterstützung nicht nach dem richtigen Schritt. Jedes Tool, das von eingefleischten Entwicklern und Administratoren verwendet wird, wie WP Reset, wird jedoch stark von WP-CLI profitieren. Benutzer können Befehle verketten, Bash-Skripte schreiben und im Allgemeinen mehr Dinge schneller und einfacher erledigen. Das führt zu besseren Bewertungen, zufriedeneren Benutzern, mehr Benutzern und am Ende zu mehr Geld für Sie, unabhängig davon, welches Monetarisierungsmodell Sie verwenden.