it-swarm.com.de

Erläuterung zur Funktion apply_filters und ihren Variablen

Ich lerne, wie man HTML-Formulare mit PHP erstellt, indem ich ein Beispiel aus dem Plugin "simplr form registration" nehme.

Ich schaue mir diesen Code an:

$form .= apply_filters('simplr-reg-instructions', __('Please fill out this form to sign up for this site', 'simplr-reg'));

Kannst du bitte erklären, was hier passiert - was die Funktion macht, warum 'simplr-reg-Anweisungen' und 'simplr-reg' erforderlich sind?

Warum kann diese Zeile nicht einfach sein:

$form .= 'Please fill out this form to sign up for this site' ;

Ich habe die Funktionsreferenz gelesen, kann sie aber immer noch nicht herausfinden.

15
Ash

Diese Zeile verwendet zwei verschiedene Funktionen, für die zwei separate Erklärungen erforderlich sind.

__ ()

Dies ist eine Übersetzungsfunktion. Wenn die Einstellungen richtig vorgenommen werden, wird der erste Parameter aus einer Liste vorübersetzter Zeichenfolgen übersetzt. Wenn eine Installation eine Datei mit einer kompilierten Übersetzung für diese Funktion enthält, wird diese verwendet. Natürlich muss das Plugin seine eigene Übersetzung packen, daher der zweite Parameter. simplr-reg teilt __() mit, dass sich die Übersetzung des Strings 'Please fill out this form to sign up for this site' in der Übersetzungsdatei befinden soll, die mit 'simplr-reg' verknüpft ist (dies wird im Plugin zuvor mithilfe der Funktion load_plugin_textdomain() ausgeführt).

Die Funktion gibt dann die Übersetzung zurück. Wenn keine Übersetzung zurückgegeben werden muss (z. B. die aktuelle Sprache verfügt nicht über eine kompilierte Übersetzung, die Zeichenfolge verfügt nicht über eine kompilierte Übersetzung für dieses Paket usw.), wird die ursprüngliche Eingabe zurückgegeben.

Für eine WordPress-Site in englischer Sprache entspricht __( 'This', 'simplr-reg' ) funktional 'This'. Weitere Informationen zu l10n (Lokalisierung) finden Sie im Codex:

http://codex.wordpress.org/I18n_for_WordPress_Developers

apply_filters ()

Mit dieser Funktion können Sie die vom Plugin verwendeten Werte nach Bedarf filtern. Dies ist eines der Hauptkonzepte, die man als Plugin-Entwickler versteht. WordPress wird durch Hooks erweitert, die im Grunde genommen Zugangspunkte sind, über die Sie die Ausführung der Aktionen Ihres Plugins zeitlich festlegen und/oder Informationen/Daten bearbeiten können, die WordPress verwendet usw.

Um Daten wie den Code-Ausschnitt zu manipulieren, nach dem Sie gefragt haben, verwenden Sie die Funktion add_filter(). Hier ist ein einfaches Beispiel, wie das funktioniert:

add_filter( 'simplr-reg-instructions', 'wpse16573_my_filter' );

Sie werden dort wahrscheinlich das erste Argument erkennen. Es ist das gleiche, das oben in add_filter verwendet wurde. Dies ist der Hook-Name. Das zweite Argument ist der Filter-Callback. Es muss ein gültiger Rückruf für eine Funktion sein ( Weitere Informationen zu Rückrufen finden Sie hier ). In dieser Codezeile steht: "Wenn der Hook 'simplr-reg-instructions' ausgeführt wird, führen Sie die Funktion mit dem von mir angegebenen Rückruf aus." apply_filters() führt den im ersten Argument gefundenen Hook aus und bedeutet im Wesentlichen "Alle für diesen Hook registrierten Funktionen ausführen". apply_filters übergibt dann alle anderen Argumente (in diesem Fall 'Please fill out this form to sign up for this site') an die Funktionen dieses Filters. Der oben verwendete Rückruf sollte also so aussehen:

function wpse16573_my_filter( $text ){
  $text = "<strong>$text</strong>";
  return $text;
}

Es gibt zwei Arten von Hooks in WordPress: Filter (die Art, die wir hier verwenden) und Aktionen. Der Hauptunterschied zwischen beiden besteht darin, dass Filter erwarten, dass Sie etwas zurückgeben, und dass Aktionen dies nicht tun. In meinem obigen Beispiel wird für diesen Filter also HTML um 'Please fill out this form to sign up for this site' hinzugefügt und zurückgegeben.

Lesen Sie hier mehr über Aktionen und Hooks:

http://codex.wordpress.org/Plugin_API

21
John P Bloch

Sie haben hier zwei verschiedene Funktionen: apply_filters und __()

mit der Funktion apply_filters können Sie in WordPress den Wert von Variablen mithilfe Ihrer eigenen Rückruffunktionen und der Funktion add_filter ändern/bearbeiten. Es akzeptiert viele Argumente, aber die wichtigsten sind die ersten beiden:

$something = apply_filters( $tag, $value, $var ... );

$ tag ist der Name des Filter-Hooks, der in add_filter verwendet wird, zB:

add_filter($tag,callback_function);

$ value ist der tatsächliche Wert, den Sie ändern oder bearbeiten können.

$ var ist eine oder mehrere Variablen, die Ihre Rückruffunktion verwenden kann.

Die Funktion __() wird für Übersetzungen verwendet:

__($message,$text_domain);

$ message ist die zu übersetzende Nachricht.

$ text_domain ist das Tag der Textdomäne, das zum Laden des Plugins oder der Theme-Übersetzung mit load_plugin_textdomain() verwendet wird.

Was es macht?

Es durchsucht das Lokalisierungsmodul nach der Übersetzung von $ message und übergibt die Übersetzung an die return-Anweisung PHP. Wenn für $ message keine Übersetzung gefunden wird, wird nur $ message zurückgegeben.

Damit die beiden Funktionen in Ihrem Fall auf dieselbe Weise funktionieren, senden die apply_filters alle Rückruffunktionen, die mit dem simplr-reg-instructions-Filter verknüpft sind, den übersetzten Wert (falls vorhanden) von "Bitte füllen Sie dieses Formular aus, um sich für diese Site anzumelden" anhand des Texts -domain von simplr-reg

5
Bainternet