Scheint es Ihnen nicht, dass einige Wordpress-Plugins sind glücklich? WooCommerce, Einfache Digit herunterladen, Gravity Forms : Jedes dieser Plugins wird von einem ganzen Unternehmen betrieben, mit Dutzenden von Erweiterungen von Drittanbietern und immer mehr Funktionen, die das Potenzial des Plugins erhöhen. Während dieser Zeit können die meisten anderen Plugins nicht weiterentwickelt werden.

Wie kann ein einzelnes Plugin zur Basis eines florierenden Tech-Ökosystems werden? Es gibt viele Antworten: Seien Sie der Erste, der auf den Markt kommt, schaffen Sie ein großartiges Produkt, vermarkten Sie gut und alles dazwischen. Aber heute werden wir uns auf einen wichtigen Teil der technischen Antwort konzentrieren, nämlich die Erweiterbarkeit durch das WordPress-Hook-System.

Heute verwenden wir ein Beispiel für WordPress Plugin um die beiden Schlüsselfunktionen abzudecken, die einem Plugin den Erweiterbarkeitsstatus verleihen, nämlich: apply_filters() und do_action().

Erweiterungen: Erweiterungen für Plugins

Es ist daher klar, dass wir uns, wenn wir von "Erweiterungen" sprechen, auf Plugins beziehen, die für andere gemacht wurden. Nehmen wir ein Beispiel: " Streifen für WooCommerce ".

Diese Erweiterung tut nichts, wenn Sie es nicht bereits getan haben WooCommerce. Wenn Sie installieren WooCommerce, dann kaufen und installieren “ Streifen für WooCommerce Als separates Plugin erweitert es die Funktionalität von WooCommerce, sodass Sie Zahlungen über das Stripe-Zahlungsgateway akzeptieren können.

Sie haben also ein Plugin, das ein anderes Plugin auf bestimmte Weise verbessert. Es ist eine Erweiterung. Dies sind Adverbien aus dem WordPress-Ökosystem.

Wie funktionieren die Funktionen: apply_filters () und do_action ()?

Die nächste Frage: Wie kommt WooCommerce zu seiner erweiterten Funktionalität? Schließlich kann man sich leicht vorstellen, ein E-Commerce-Plugin zu schreiben, das „ funktioniert nur mit wenigen Zahlungs-Gateways “. Wenn Sie wirklich Stripe verwenden möchten, müssen Sie WooCommerce vollständig modifizieren und möglicherweise Ihr eigenes Tool namens StripeCommerce erstellen, das entweder zu einem Konkurrenten von WooCommerce wird oder einfach auf der Website eines Ihrer Kunden lebt, der es sich leisten kann, zu zahlen persönliche Betreuung.

Es ist ein Durcheinander, darüber nachzudenken, aber zum Glück macht WooCommerce etwas viel besser. Dabei werden zwei Funktionen verwendet: apply_filters () und do_action (). Mit diesen beiden Funktionen können Sie Klammern in WordPress erstellen. Dies ist ein grundlegender Bestandteil des WordPress Hooks-Systems im Allgemeinen.

apply_filters () und do_action () Ein ziemlich einfacher Unterschied:

  • Mit apply_filters () können Sie Filter mit Funktionen verbinden.
  • Mit do_action () können Sie Aktionen mit Funktionen verbinden.

Lassen Sie uns ein Beispiel betrachten, um zu sehen, wie sie funktionieren.

Beispiel für die Verwendung von WooPress-Hooks.

In unserem Beispiel verwenden wir ein Plugin "Zitat des Tages" sowie eine Erweiterung, die dieses Plugin auf eine bestimmte Weise ändert. Laden Sie die Plugins als ZIP-Datei https://wpshout.com/media/2016/10/plugins.zip herunter, um den vollständigen Code zu sehen.

Die Original-Plugin

Dieses Plugin verwendet die API, die von einer externen Angebotsbibliothek bereitgestellt wird, und speichert das resultierende Angebot als vorübergehende WordPress-Daten, die alle 24 Stunden aktualisiert werden. Kommen Sie jederzeit auf diesen Artikel zurück und Sie werden ein zufälliges Zitat von diesem Tag zum Thema "Leben" sehen, das breit genug sein sollte.

Plugin-Erweiterung

Wie wir wissen, besteht das Problem bei den meisten Zitaten darin, dass sie nicht von "Carl Sagan" gesagt werden. Unsere Erweiterung behebt dieses Problem mithilfe einer Reihe von Tools:

  • Ein großer Briefkopf mit dem heutigen Datum und dem Zitat stammt von Carl Sagan.
  • Einige spezifische Wortersetzungen, um ein Zitat in das zu verwandeln, was Carl Sagan gesagt haben könnte
  • Die Autoren der ursprünglichen Zitate wurden geändert und die Zitate werden nun korrekt Carl Sagan zugeordnet.

Hier ist das Plugin und die Erweiterung in Aktion:

Zitat-in-Aktion

Le Code

Dazu sind zwei Schritte erforderlich:

Das ursprüngliche Plugin definiert Hooks - Action-Hooks und Filter-Hooks - damit externer Code an wichtigen Punkten seinen eigenen Code ändern oder hinzufügen kann. Das Plugin verwendet Apply_filters () und do_action (), um dies zu erreichen.

Die Erweiterung definiert Hook-Funktionen für die Aktion und Filter, die das ursprüngliche Plugin auf die erforderliche Weise ändern.

Schlüsselcode im Original Plugin

Der wichtigste Teil des Codes für uns ist, was wir tun, nachdem wir unsere Daten von der API erhalten haben. Diese Daten sind als Array mit zwei Elementen verfügbar: Text: Der Text des Zitats; und Autor: die Person, die das Zitat gesagt hat. Unser Code sieht daher folgendermaßen aus:

add_shortcode ('extensible_plugin_demo', 'bpc_output_extensible_plugin'); Funktion bpc_output_extensible_plugin () {ob_start (); // Vor der Anzeige einhaken! do_action ('bpc_before_get_qod_text'); $ qod_data = bpc_get_qod_data (); if (is_array ($ qod_data)) {echo ' '; $ qod_text = $ qod_data ['text']; $ qod_author = $ qod_data ['author']; // Inhalt filtern! $ qod_text = apply_filters ('bpc_qod_text', $ qod_text); $ qod_author = apply_filters ('bpc_qod_author', $ qod_author); echo $ qod_text; Echo ' '; echo $ qod_author; Echo ' '; } // Action Hook nach dem Rest der Ausgabe! do_action ('bpc_after_get_qod_text'); return ob_get_clean (); }}

Schlüsselcode in der Erweiterung

Das Plugin besteht nur aus Aktionen und Filtern, um das ursprüngliche Plugin zu ändern. Hier ist der Code für die Erweiterung:

add_filter( 'bpc_qod_text', 'bpc_filter_qod_text' );
// Filter: remplacer des mots spécifique
function bpc_filter_qod_text( $text ) {
    $text = str_replace( 
        array( ' I ', ' me ', ' the ', ' is ', ' am ', ' are ' ),
        array( ' I, a descendent of savannah-dwelling hominids that somehow evolved an astounding capacity for self-reflection, ', ' the cooled-off stellar matter I call "me" ', ' the trillions of atoms that make up the ', ' seems, without the mind-boggling perspective of quantum physics, to be ', ' cannot, due to the Heisenberg Uncertainty Principle, be determined not to be ', ' appear to our best scientific instruments to be ' ),
        $text
    );
    return $text;
}

// Filter: barré le texte qui précède le nom de l'auteur et ajouter Carl Sagan à la suite
add_filter( 'bpc_qod_author', 'wpshout_filter_qod_author' );
function wpshout_filter_qod_author( $text ) {
    $text = '<strike>' . $text . '</strike> Carl Sagan';
    return $text;
}

// Action: Ajouter un titre
add_action( 'bpc_before_get_qod_text', 'bpc_set_up_quote' );
function wpshout_set_up_quote() {
    echo '<h4>Carl Sagan Quote of the Day for ' . date( 'F j, Y') . ':</h4>';
}

// Action: Ajouter une image
add_action( 'bpc_after_get_qod_text', 'bpc_add_carl_boom' );
function bpc_add_carl_boom() {

    echo '<div><img class="aligncenter" src="' . plugin_dir_url( __FILE__ ) . 'carl_sagan_mind_blown.gif"></div>';
}

Wie Sie sehen können, sind dies ganz normale Verwendungen von " add_action () "Und" add_filter () "Und beide Funktionen sind in eckige Klammern eingebunden, die wir" bpc_qod_text "genannt haben.

Das Endergebnis ist, dass unser Plugin jetzt erweiterbar ist: Ein zweiter Entwickler kann beobachten, wie er das Plugin ändert und sagt "Ich wünschte, Carl Sagan sagt », Und tun Sie dies, während Sie das ursprüngliche Plugin als Basis verwenden, ähnlich wie bei übergeordneten und untergeordneten Themen in WordPress.

Dies ist ein solcher Trick, der ein Plugin wie WooCommerce sehr beliebt macht und es Ihnen ermöglicht, neue Funktionen hinzuzufügen.

Das war's für dieses Tutorial. Ich hoffe, Sie verstehen die verschiedenen Anwendungsfälle von Filtern und WordPress-Aktionen besser.