Was ist der Unterschied zwischen Aktionshaken und Filterhaken in WordPress?

Lesezeit: 5 Minuten

Ich habe gelesen, dass der Action-Hook zum Aufrufen der Funktionen und der Filter-Hook zum Filtern des Inhalts vor dem Speichern oder Anzeigen auf der Website verwendet wird. Können Sie mir einige Arbeitsphasen des Projektbeispiels nennen, in denen wir Aktions- und Filterhaken verwenden. So wird es besser, mehr zu verstehen.

Was ist der Unterschied zwischen Aktionshaken und Filterhaken in WordPress
MD. Shafayatul Haque

Aktion: Neues machen. Ex. Hinzufügen von CSS und JS.

Filter: Etwas tun, das bereits in WordPress vorhanden ist. Einige Dinge hinzufügen oder entfernen. Angenommen, Sie fügen nach dem Inhalt des Beitrags etwas Text hinzu. Es bedeutet, etwas mit WordPress zu tun.

Was ist der Unterschied zwischen Aktionshaken und Filterhaken in WordPress

Beispielcode:

add_action('admin_menu','my_func',8,2);
function my_func($one, $two){
    //Something here …
}

Was ist der Unterschied zwischen Aktionshaken und Filterhaken in WordPress
Andy Tschiersch

Zusamenfassend:

Filterhaken: Wird verwendet, um einen Wert zu ändern (filtern).

Aktionshaken: etwas tun, genau in diesem Moment


Beispiel für Filterhaken:

$name = "Smith";
$gender = "female";

echo apply_filter('form_of_address', $name, $gender );



// somewhere else
add_filter( 'form_of_address', function( $name, $gender ) {
    
    if ( "female" == $gender ) {
        $name = "Mrs. " . $name;
    } else if ( "male" == $gender ) {
        $name = "Mr. " . $name;
    }
    
    return $name
    
}, 10, 2 );

1646318958 669 Was ist der Unterschied zwischen Aktionshaken und Filterhaken in WordPress
Hallo von Tonya

Sie möchten wissen, was der Unterschied zwischen einer Aktion und einem Filterereignis (Hook) ist.

Beginnen wir damit, zu verstehen, was ein Hook oder Event in WordPress ist.

Was ist ein Hook (Ereignis)?

Über die Plugin-API stellt uns WordPress die Mittel zur Verfügung um unseren Code auszuführen, wenn Ereignisse eintreten.

Programme werden in einer bestimmten Reihenfolge von oben nach unten ausgeführt. Linie 1 fährt und dann Linie 2 und so weiter. Wenn WordPress Dateien lädt, werden diese ausgeführt und so weiter.

Während die Webseitenanforderung verarbeitet wird, führt WordPress Core die Codezeilen aus und erledigt Dinge. Aber was ist, wenn Sie Ihren Code an einem bestimmten Punkt im Anfragezyklus ausführen müssen? Angenommen, Sie möchten die Verfasserzeile des Beitrags von der Standardeinstellung des Themas ändern. Mit einem Filterereignis (Hook) erhalten Sie:

  • Zugriff auf den tatsächlichen Wert oder HTML Vor Es wird an den Browser gesendet
  • die Möglichkeit, diesen Wert oder HTML zu ändern
  • die Möglichkeit, anderen Code an einem bestimmten Punkt im Webseiten-Anforderungszyklus auszuführen.

Warum gibt es Hooks (Ereignisse)?

WordPress läuft sofort ohne unsere benutzerdefinierten Themen oder Plugins. Aber die Plugin-API gibt Ihnen und mir sowie allen Entwicklern die Möglichkeit, WordPress anzupassen, das Standardverhalten zu ändern und WordPress zu erweitern.

Es ermöglicht uns, unseren Code bei Bedarf auszuführen, dh an bestimmten Punkten im Webseiten-Anforderungszyklus.

Voranmeldung

Damit unser Code ausgeführt werden kann, müssen wir unseren Callback vorregistrieren, d. h. die Funktion oder Methode, die wir an diesem bestimmten Punkt ausführen möchten. Sie verwenden add_action() um einen Action-Event-Callback vorzuregistrieren. Sie verwenden add_filter() um einen Filterereignis-Callback vorzuregistrieren.

Wenn Sie Ihren Rückruf vorregistrieren, wird er einer Registrierungs-Nachschlagetabelle hinzugefügt, bei der es sich um ein Array handelt.

Wenn dann das Ereignis ausgelöst wird, werden Ihr Rückruf und alle anderen der Reihe nach aufgerufen. Die Reihenfolge legen Sie mit fest priority Parameter. Die Argumente werden an Ihren Callback übergeben. Dann wird Ihre Methode oder Funktion ausgeführt.

Hier ist ein Video das erklärt das Gesamtbild dieses Prozesses und das Warum davon.

Aktion vs. Filter

Ein Filterereignis (Hook) ermöglicht Ihnen dies Filtern Sie den Rückgabewert. Es gibt Ihnen (und allen anderen registrierten Rückrufen) die Möglichkeit zu filtern, was bedeutet, den Wert zu ändern.

Denk darüber nach. Angenommen, Sie möchten den Link „Weiterlesen“ ändern. Vielleicht möchten Sie, dass es “Weiterlesen” sagt, und vielleicht möchten Sie, dass es sich um eine Schaltfläche handelt, anstatt nur um einen Hyperlink. Der Filter ermöglicht Ihnen:

  • um den aktuellen Wert zu erhalten
  • ändern Sie es, was Sie wollen
  • senden Sie es zurück, indem Sie es zurücksenden

Dass neuer Wert wird dann an alle anderen registrierten Rückrufe weitergegeben und schließlich an die Codezeile zurückgegeben, die das Ereignis ausgelöst hat.

Aktionsereignis

Das Aktionsereignis (Hook) ist dasselbe wie ein Filter, außer dass der Wert nicht zurückgegeben wird.

Das Ereignis wird ausgelöst, wie z init oder plugins_loaded. Die vorregistrierten Rückrufe werden der Reihe nach aufgerufen, und alle Argumente werden an jeden weitergegeben. Ihre Funktion oder Methode wird aufgerufen. Sie können Ihren Code ausführen.

Es gibt Ihnen die Möglichkeit, an einem bestimmten Punkt im Webseitenanforderungszyklus etwas zu tun.

Wickeln Sie es

Denken Sie an die Leistungsfähigkeit des Event-Management-Systems. Wenn Sie direkt nach dem Laden aller Plugins etwas ausführen müssen, registrieren Sie sich vorab bei der plugins_loaded Veranstaltungsname. Wenn Core das Ereignis durch Ausführen auslöst do_action( 'plugins_loaded' );wird Ihr Code auch ausgeführt.

Mit Filter- und Aktionsereignissen (Hooks) können Sie Ihren Code an einem bestimmten Punkt im Webseitenanforderungszyklus ausführen.

Der Unterschied

Mit Filterereignissen (Hooks) können Sie den Wert filtern oder ändern, bevor er verarbeitet wird. Aktionsereignisse lassen sich nicht filtern.

Wie löst man ein Event aus?

Für Aktionsereignisse können Sie verwenden do_action( 'event_name' ) oder do_action_ref_array( 'event_name', $args ).

Für Filterereignisse können Sie verwenden apply_filters( 'event_name', $value_to_filter ) oder apply_filters( 'event_name', $args );

Beispiele

Angenommen, Sie möchten dem Beitrag ein Styling-Klassenattribut hinzufügen. Sie können sich vorab anmelden post_class Veranstaltungsname. Sie erhalten eine Reihe von Klassen.

add_filter( 'post_class', 'add_my_class_attribute_to_post_class' );
/**
 * Add styling class to the post class.
 *
 * @since 1.0.0
 *
 * @param array $classes
 *
 * @return array
 */
function add_my_class_attribute_to_post_class( array $classes ) {
    $classes[] = 'some-class-attribute'; 

    return $classes;
}

Was wäre, wenn Sie dem Hauptteil der Titelseite eine Styling-Klasse hinzufügen möchten?

add_filter( 'body_class', 'add_front_page_to_body_class' );
/**
 * Add the class attribute "front-page" to the body classes.
 *
 * @since 1.0.0
 *
 * @param array $classes
 *
 * @return array
 */
function add_front_page_to_body_class( array $classes ) {
    $classes[] = 'front-page';

    return $classes;
}

Beachten Sie, wie Sie den Wert ändern und ihn dann zurückgeben.

  • @ketan-sharma hat dir das Obige geholfen, den Unterschied zwischen einer Aktion und einem Filter zu verstehen?

    – Hallo von Tonya

    16. Dezember 2016 um 17:47 Uhr

924470cookie-checkWas ist der Unterschied zwischen Aktionshaken und Filterhaken in WordPress?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy