it-swarm.com.de

Unterschied zwischen Filter- und Aktionshaken?

Ich habe mir die Plugin-API in letzter Zeit etwas genauer angesehen und mich gefragt, welche wirklichen Unterschiede zwischen Action- und Filter-Hooks bestehen . Sie sind beide Ereignisse, die Daten als Parameter empfangen, und sie scheinen beide in der Lage zu sein, die gleichen Dinge zu tun.

Offensichtlich sehe ich, dass Aktionen aufgerufen werden, wenn Aktionen stattfinden, und Filter aufgerufen werden, wenn Daten bearbeitet werden, aber es scheint nur ein semantischer Namensunterschied zu sein.

Welche wirklichen Unterschiede gibt es zwischen ihnen, abgesehen von der Semantik und wofür sie verwendet werden?

49
Sruly

Wenn Sie sich die Quelle für die add_action()-Kernfunktion ansehen, handelt es sich nur um einen Wrapper für die add_filter()-Funktion ...

Und wenn Sie sich die do_action()-Kernfunktion ansehen, ist sie der apply_filters()-Kernfunktion sehr ähnlich, mit einem entscheidenden Unterschied: Sie gibt keinen Wert zurück.

Also, was bedeutet das? Aktionen ähneln Filtern, mit der Ausnahme, dass eine Aktion keinen Wert zurückgibt und Sie daher keine Daten ändern können. Es zeigt, dass es einfach war, den Aktionsmechanismus von WordPress zu erstellen, indem einfach der Filtermechanismus kopiert und kein Wert zurückgegeben wurde. Grundsätzlich können Sie mit einer Aktion nur eine Funktion ausführen, ohne einen Wert zu ändern.

11
trusktr

In einfachen Worten.

Actions sind die PHP Funktionen, die die Ausgabe ausführen.

Filter sind die PHP -Funktionen, die die Ausgabe zurückgeben.

Aktualisiert: Wir können jedes Plugin erweitern, das die Aktionen und Filter verwendet, ohne den dortigen Code zu ändern. Durch Hinzufügen von Filtern und Aktionen in unserem eigenen Theme oder Plugin.


Wie benutzt man?

Aktion:

Überprüfen Sie die folgenden einfachen Beispiele in der functions.php-Datei Ihres Themas.

  1. Beispiel Eins: (Einfaches PHP Beispiel)
 Funktionstest () {
 Echo "Ausgabe"; 
} 
 
 Test (); 

Über dem Programm drucken Sie die Ausgabe:

Ausgabe

[HINWEIS: test () ruft hier einfach die Funktion auf. Und führen Sie die Rückruffunktion 'test' aus.]


  1. Beispiel 2: (einfache Verwendung von Action)
 Funktion test1 () {
 echo "Output"; 
} 
 add_action ('test', 'test1'); 
 
 do_action ('test'); 

Über dem Programm drucken Sie die Ausgabe:

Ausgabe

[HINWEIS: Hier funktioniert do_action('test') wie das Aufrufen einer Funktion. Und führen Sie die Rückruffunktion 'test1' aus.]


  1. Beispiel 3: (Eine andere Verwendung von Aktionen)
 function test2 () {
 echo "Test 2"; 
} 
 add_action ('test', 'test2', 1); 
 
 function test1 () {
 echo "Test 1"; 
} 
 add_action ('test', 'test1', 2); 
 
 do_action ('test'); 

Über dem Programm drucken Sie die Ausgabe:

 Test 2Test 1 

[HINWEIS: Hier funktioniert do_action('test') wie das Aufrufen einer Funktion. Und Rückruffunktionen auf seine Prioritäten ausführen.

Callback-Funktion 'test1' hat Priorität 2 und 'test2' hat Priorität 1.]

Wenn sich die Prioritäten wie 'test1' mit Priorität 1 und 'test2' mit Priorität 2 ändern, wird Folgendes ausgegeben:

 Test 1Test 2 

  1. Beispiel 4: (Unterstützung von Drittanbietern) Fügen Sie den folgenden Code in functions.php hinzu
 Funktion test1 () {
 do_action ('test_before'); 
 Echo "Test 1"; 
 do_action ('test_after'); 
 } 
 add_action ('test', 'test1'); 
 
 do_action ('test'); 

Über dem Programm drucken Sie die Ausgabe:

 Test 1 

Erstellen Sie nun ein Beispiel-Plugin, um zu überprüfen, wie es für Entwickler von Drittanbietern funktioniert.

  1. Erstellen Sie den Ordner 'simple' im Verzeichnis /wp-content/plugins/.
  2. Erstellen Sie eine Datei mit dem Namen 'simple.php' und fügen Sie den folgenden Code hinzu.
/* 
 * Plugin-Name: Simple Plugin 
 */
 Function test_callback_function () {
 Echo "From plugin"; 
} 
 add_action ('test', 'test_callback_function'); 

Aktivieren Sie jetzt unser Einfaches Plugin aus dem WordPress-Admin-Dashboard.

Gehe zum Menü Plugin und aktiviere es.

Nach dem Aktivieren des Plugins über dem Programm wird die Ausgabe gedruckt:

 Test 1Von Plugin 

[HINWEIS: Wenn wir die Priorität für unsere Plugin-Aktion von 1 bis 9 hinzufügen, wird die Ausgabe wie folgt gedruckt:

 Aus pluginTest 1 

Weil WordPress den 10 priority by default für alle hinzugefügten Aktionen berücksichtigt.]

Filter

Überprüfen Sie die folgenden Beispiele:

Einfaches PHP Beispiel:

 $ data = Array ('eins', 'zwei'); 
 print_r ($ data); 

Über dem Programm drucken Sie die Ausgabe:

 Array ([0] => eins [1] => zwei) 
  1. Beispiel eins: (einfache Verwendung von Filter)
 $ data = apply_filters ('my_filter_name', array ('one', 'two'); 
 print_r ($ data); 
 
 add_filter (' my_filter_name ', function ($ old_data) {
 return array (' drei ',' vier '); 
}); 

Über dem Programm drucken Sie die Ausgabe:

 Array ([0] => drei [1] => vier) 

Hier haben wir den Filter my_filter_name hinzugefügt und die vorhandene Ausgabe array( 'one', 'two' ) mit array( 'three', 'four' ) geändert, ohne die Theme/Plugin-Dateien zu ändern.


4
maheshwaghmare