it-swarm.com.de

Wie kann ich die _e () - Funktion richtig verketten?

Ich versuche, eine Funktion für den Titel in meiner functions.php zu erstellen. Ich habe ein Problem mit dem Teil des Suchtitels. Hier ist der Teil mit den folgenden Problemen:

elseif (is_search()) {
_e('Search for ', 'textdomain') . '"' . esc_html(the_search_quey()) . '$quot; - '; }

dieser gibt einen Titel wie diesen: Suche nach Suchbegriff

keine Anführungszeichen und der Suchbegriff wird an den Site-Namen angehängt.

Ich habe es versucht:

elseif (is_search()) {
_e('Search for ' . '"' . esc_html(the_search_quey()) . '$quot; - ', 'textdomain'); }

es funktioniert auch nicht, dieser gibt aus: searchtermSearch for "" sitename

es ist besser als das erste, aber die Suchanfrage ist vorher und kann nicht herausfinden, warum.

also jede hilfe und danke im voraus.

4
Pierre

the_search_query() gibt ein Echo von sich. Wenn Sie es also in eine andere Echo-Funktion einfügen (was _e() ist), erhalten Sie das Ergebnis wie im zweiten Beispiel.

Es wird nicht empfohlen, Variablen oder Funktionen in l18n-Funktionen zu verwenden, da diese nicht übersetzt werden können. Weitere Informationen finden Sie unter Ottos: Internationalisierung: Möglicherweise machen Sie es falsch .

Sie sollten also folgenden Code verwenden:

printf( __( 'Seach for "%s", 'textdomain' ), get_search_query() );

Beachten Sie, dass ich get_search_query() verwende, da es einfach einen Wert zurückgibt, anstatt ihn wiederzugeben, und auch Query Sting durch esc_attr() leitet und esc_html() nicht benötigt wird.

5
Mamaduka

Der Schlüssel besteht darin, %s-Platzhalter in Kombination mit der Funktion sprintf oder printf zu verwenden.

printf(__('Search for “%s”', 'textdomain'), esc_html(get_search_query());

http://php.net/sprintf

Beachten Sie auch, dass the_search_query() das Ergebnis direkt ausgibt . Sie benötigen get_search_query(), das das Ergebnis zurückgibt .

3
Geert