Aktionen & Filter
Der imho beste Weg ist , um eine Aktion zu bringen Plugin - Funktionen in Themen zu verwenden.
Beispiel 1
Hier ist ein kleines Plugin, um dies zu testen.
<?php
/** Plugin Name: (#68117) Print Hello! */
function wpse68117_print_hello()
{
echo "Hello World!";
}
add_action( 'wpse68117_say', 'wpse68117_print_hello' );
Innerhalb des Themas:
<?php
/** Template Name: Test »Print Hello!« Plugin */
get_header();
// Now we call the plugins hook
do_action( 'wpse68117_say' );
Was jetzt passiert / Das koole Kind
Auf diese Weise müssen wir nicht die Existenz einer Funktion, einer Datei, einer Klasse, einer Methode oder vielleicht sogar eines (mach das nicht!) Globalen überprüfen $variable
. Der WP intern global übernimmt dies bereits für uns: Er prüft, ob der Hook-Name der aktuelle Filter ist und hängt ihn an. Wenn es nicht existiert, passiert nichts.
Beispiel 2
Mit unserem nächsten Plugin fügen wir eine Rückruffunktion hinzu, die ein Argument akzeptiert.
<?php
/** Plugin Name: (#68117) Print Thing! */
function wpse68117_print_thing_cb( $thing )
{
return "Hello {$thing}!";
}
add_filter( 'wpse68117_say_thing', 'wpse68117_print_thing_cb' );
Innerhalb des Themas:
<?php
/** Template Name: Test »Print Thing!« Plugin */
get_header();
// Now we call the plugins hook
echo apply_filter( 'wpse68117_say_thing', 'World' );
Dieses Mal bieten wir dem Benutzer / Entwickler die Möglichkeit, ein Argument hinzuzufügen. Er kann entweder echo/print
die Ausgabe oder sogar weiter verarbeiten (falls Sie ein Array dafür erhalten).
Beispiel 3
Mit dem dritten Plugin fügen wir eine Rückruffunktion hinzu, die zwei Argumente akzeptiert.
<?php
/** Plugin Name: (#68117) Print Alot! */
function wpse68117_alot_cb( $thing, $belongs = 'is mine' )
{
return "Hello! The {$thing} {$belongs}";
}
add_filter( 'wpse68117_grab_it', 'wpse68117_alot_cb' );
Innerhalb des Themas:
<?php
/** Template Name: Test »Print Alot!« Plugin */
get_header();
// Now we call the plugins hook
$string_arr = implode(
" "
,apply_filter( 'wpse68117_grab_it', 'World', 'is yours' )
);
foreach ( $string_arr as $part )
{
// Highlight the $thing
if ( strstr( 'World', $part )
{
echo "<mark>{$part} </mark>";
continue;
}
echo "{$part} ";
}
Mit diesem Plugin können wir jetzt zwei Argumente einfügen. Wir können es in einem speichern $variable
und weiterverarbeiten.
Fazit
Durch die Verwendung von Filtern und Aktionen erzielen Sie eine bessere Leistung, indem Sie unnötige Überprüfungen vermeiden (vergleichen Sie die Geschwindigkeit function_*/class_*/method_*/file_exists
oder die Suche nach einem globalen in_array()
Filter mit ~ 1k (?) Filtersuchen). Sie vermeiden auch all diese unnötigen Hinweise für nicht gesetzte Variablen usw., da sich das Plugin darum kümmert.