Heim >CMS-Tutorial >WordDrücken Sie >Alternative Möglichkeiten, Ereignisse in WordPress auszulösen

Alternative Möglichkeiten, Ereignisse in WordPress auszulösen

Christopher Nolan
Christopher NolanOriginal
2025-02-15 11:12:12407Durchsuche

Alternative Ways of Triggering Events in WordPress

Detaillierte Erläuterung des WordPress -Ereignisauslösermechanismus: Erweiterte Tipps und Best Practices

Dieser Artikel ist der zweite Teil des Tutorial für die WordPress-Hook-Systemreihe. Klassenmethoden mit Aktionen und Filtern.

Schlüsselpunkte:

    Die Funktionen
  • do_action_ref_array() und apply_filters_ref_array() bieten Alternativen zum Auslösen von WordPress -Ereignissen, bei denen Arrays zum Übergeben von Parametern verwendet werden und bei der Behandlung einer großen Anzahl von Parametern effizienter sind.
  • WordPress ermöglicht die Klassenmethoden (statisch und nicht statisch) Aktionen und Filtern. Eine statische Methode verwendet einen Klassennamen oder eine __CLASS__ konstante anstelle von $this.
  • Ereignisse, die über WordPress -Plugins ausgelöst wurden, ohne Code wie Ereignis -Espresso, den Veranstaltungskalender und den Veranstalter von Events zu schreiben. Diese Plugins unterstützen auch die Integration mit Plattformen wie Facebook, Google Calendar und EventBrite.

Erweiterte Ereignisauslösermethode

im vorherigen Artikel verwendet WordPress üblicherweise do_actions() und apply_filters() Funktionen, um Ereignisse auszulösen und sie über add_action() und add_filter() zu abonnieren. Es gibt jedoch andere Möglichkeiten: do_action_ref_array() für Aktionshaken, apply_filters_ref_array() für Filterhaken.

Die Funktionen dieser beiden Funktionspaare sind gleich, der Unterschied ist die Parameterüberschreitungsmethode. do_action() und apply_filters() Übergeben Sie die Parameter direkt, während do_action_ref_array() und apply_filters_ref_array() Arrays zum Übergeben von Parametern verwenden, die klarer und leichter zu lesen sind, wenn viele Parameter vorhanden sind.

Code -Beispiel

Das folgende Beispiel zeigt, wie do_action_ref_array() und apply_filters_ref_array() verwendet werden:

do_action_ref_array() Beispiel:

user_profile_update_errors Aktionen werden ausgelöst, bevor WordPress die Benutzerprofile aktualisiert. Der folgende Code überprüft, ob das benutzerdefinierte Feld "Stadt" leer ist:

<code class="language-php">add_action( 'user_profile_update_errors', function ( $errors, $update, $user ) {
    if ( empty( $_POST['city'] ) ) {
        $errors->add( 'city_empty', __( 'City field cannot be left empty.' ) );
    }
}, 10, 3 );</code>

apply_filters_ref_array() Beispiel:

Der folgende Code ändert die Umleitungs -URL des bp_activity_permalink_redirect_url -Filters in BBPress:

<code class="language-php">add_filter( 'bp_activity_permalink_redirect_url', function ( $redirect, $activity ) {
    $redirect = 'http://website.com/custom-page/';
    return $redirect;
}, 10, 2 );</code>

Wann verwendet do_action_ref_array() und apply_filters_ref_array()

Bei der Entwicklung von Plug-Ins oder Themen sind

und do_action_ref_array() besser als apply_filters_ref_array() und do_action(), und der Code ist einfacher und leichter zu lesen, wenn eine große Anzahl von Parametern erforderlich ist. apply_filters()

Hakenklassenmethoden zu Aktionen und Filtern

Das vorherige Beispiel zeigt, wie man benannte und anonyme Funktionen an Aktionen und Filter haken. Im Folgenden wird beschrieben, wie Klassenmethoden (statisch und nicht statisch) an WordPress-Aktionen und -Filter angehängt werden.

Haken in Konstruktor hinzufügen:

Die meisten WordPress -Entwickler fügen alle add_action() und add_filter() Aufrufe zum Konstruktor der Klasse hinzu:

<code class="language-php">add_action( 'user_profile_update_errors', function ( $errors, $update, $user ) {
    if ( empty( $_POST['city'] ) ) {
        $errors->add( 'city_empty', __( 'City field cannot be left empty.' ) );
    }
}, 10, 3 );</code>

für statische Methoden verwenden __CLASS__ $this

Verwenden Sie die statische Initialisierungsmethode:
<code class="language-php">add_filter( 'bp_activity_permalink_redirect_url', function ( $redirect, $activity ) {
    $redirect = 'http://website.com/custom-page/';
    return $redirect;
}, 10, 2 );</code>

Eine andere Möglichkeit besteht darin, eine statische Methode zur Initialisierung aller Haken zu erstellen:

Zusammenfassung
<code class="language-php">class DemoPlugin {
    public function __construct() {
        add_action( 'wp_head', array( $this, 'google_site_verification' ) );
        add_filter( 'the_content', array( $this, 'we_love_sitepoint' ) );
    }
    // ... 方法定义 ...
}
new DemoPlugin();</code>

Dieser Artikel beschreibt Alternativen zum WordPress -Ereignisauslöser und die Anhängerung von Klassenmethoden an Aktionen und Filter. Nachfolgende Artikel werden weiterhin fortgeschrittene Nutzung und Vorsichtsmaßnahmen untersuchen.

Alternative Ways of Triggering Events in WordPress FAQ

(Der FAQ -Teil wird hier weggelassen, da der Inhalt des ursprünglichen FAQ -Teils schwach mit dem Thema des Artikels zusammenhängt und länger ist, sodass Sie es nach Bedarf selbst ergänzen oder selbst ändern können.)

Das obige ist der detaillierte Inhalt vonAlternative Möglichkeiten, Ereignisse in WordPress auszulösen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn