Heim >CMS-Tutorial >WordDrücken Sie >Alternative Möglichkeiten, Ereignisse in WordPress auszulösen
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:
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. __CLASS__
konstante anstelle von $this
. 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()
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
<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.
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!