WordPress verwendet echo vs return in der Shortcode-Funktion

Lesezeit: 4 Minuten

Wordpress verwendet echo vs return in der Shortcode Funktion
kabirbaidhya

Beides ist mir aufgefallen echo und return funktioniert gut für die Anzeige von Inhalten aus einer Shortcode-Funktion in WordPress.

function foobar_shortcode($atts) {
    echo "Foo Bar"; //this works fine
}

function foobar_shortcode($atts) {
    return "Foo Bar"; //so does this
}

Gibt es einen Unterschied zwischen der Verwendung eines dieser beiden? Wenn ja, was ist der empfohlene Ansatz für WordPress? Ich benutze normalerweise echo in diesem Fall – ist das in Ordnung?

  • einer gibt sofort aus, der andere gibt den Text an die aufrufende Funktion zurück und überlässt es dieser aufrufenden Funktion, die Ausgabe zu verarbeiten. Sie sind NICHT gleich und NICHT funktional gleichwertig.

    – Markus B

    3. Februar 2014 um 21:31 Uhr

Wordpress verwendet echo vs return in der Shortcode Funktion
Muhammad Mehran Khan Attari

Wenn Sie viele Inhalte ausgeben, sollten Sie verwenden:

add_shortcode('test', 'test_func');

function test_func( $args ) {
  ob_start();
  ?> 
  <!-- your contents/html/(maybe in separate file to include) code etc --> 
  <?php

  return ob_get_clean();
}

  • Exzellent! Das war genau das, was ich brauchte. Output Buffering (ob_start) in PHP ist etwas, von dem ich nichts wusste. Einige nützliche Informationen zur Erläuterung dieser Antwort finden Sie hier: stackoverflow.com/questions/2832010/what-is-output-buffering

    – Steve C.

    5. April 2017 um 17:26 Uhr

  • Nun, es funktioniert! Jetzt kann ich den Inhalt meines Shortcodes genau dort ausgeben, wo ich ihn erwarte.

    – Lukas Bustamante

    30. August 2017 um 20:10 Uhr


1646396947 890 Wordpress verwendet echo vs return in der Shortcode Funktion
Nathan Dawson

Echo kann in Ihrem speziellen Fall funktionieren, aber Sie sollten es definitiv nicht verwenden. Shortcodes sollen nichts ausgeben, sie sollten nur Inhalte zurückgeben.

Hier ist eine Notiz aus dem Codex zu Shortcodes:

Beachten Sie, dass die vom Shortcode aufgerufene Funktion niemals irgendeine Ausgabe erzeugen sollte. Shortcode-Funktionen sollten den Text zurückgeben, der verwendet werden soll, um den Shortcode zu ersetzen. Das direkte Produzieren der Ausgabe führt zu unerwarteten Ergebnissen.

http://codex.wordpress.org/Function_Reference/add_shortcode#Notes

Ausgangspufferung

Manchmal sind Sie mit einer Situation konfrontiert, in der die Ausgabe schwierig oder umständlich zu vermeiden ist. Möglicherweise müssen Sie beispielsweise eine Funktion aufrufen, um ein Markup in Ihrem Shortcode-Callback zu generieren. Wenn diese Funktion direkt ausgeben würde, anstatt einen Wert zurückzugeben, können Sie eine Technik verwenden, die als Ausgabepufferung bekannt ist, um damit umzugehen.

Durch die Ausgabepufferung können Sie alle von Ihrem Code generierten Ausgaben erfassen und in eine Zeichenfolge kopieren.

Starten Sie einen Puffer mit ob_start() und stellen Sie sicher, dass Sie den Inhalt packen und löschen, wenn Sie fertig sind, ob_get_clean(). Jede Ausgabe, die zwischen den beiden Funktionen erscheint, wird in den internen Puffer geschrieben.

Beispiel:

function foobar_shortcode( $atts ) {
    ob_start();

    // any output after ob_start() will be stored in an internal buffer...
    example_function_that_generates_output();

    // example from original question - use of echo
    echo 'Foo Bar';

    // we can even close / reopen our PHP tags to directly insert HTML.
    ?>
        <p>Hello World</p>
    <?php

    // return the buffer contents and delete
    return ob_get_clean();
}
add_shortcode( 'foobar', 'foobar_shortcode' );

https://www.php.net/manual/en/function.ob-start.php

  • Danke! das wollte ich wissen

    – Kabirbaidhya

    3. Februar 2014 um 21:44 Uhr

Wenn Sie „echo“ im Shortcode verwenden, werden die Informationen dort angezeigt, wo der Shortcode verarbeitet wird, was nicht unbedingt dort ist, wo Sie den Shortcode tatsächlich hinzugefügt haben. Wenn Sie “return” verwenden, werden die Informationen genau dort zurückgegeben, wo Sie den Shortcode innerhalb der Seite hinzugefügt haben.

Wenn Sie beispielsweise ein Bild haben, dann Shortcode, dann Text:

Echo: wird über dem Bild ausgegeben
Return: wird nach dem Bild und vor dem Text ausgegeben (wo Sie tatsächlich den Shortcode hinzugefügt haben)

  • Das Beispiel verdeutlicht es gut. Danke

    – Kabirbaidhya

    26. Oktober 2015 um 4:58 Uhr

Ich würde … benutzen:

function foobar_shortcode($atts) {
    return "Foo Bar"; //so does this
}

Es ist einfacher, wenn Sie Dinge tun wie:

$output="<div class="container">" . do_shortcode('foobar') . '</div>';
echo $ouput;

Später..

1646396948 509 Wordpress verwendet echo vs return in der Shortcode Funktion
Anonym

Der Unterschied ist das echo sendet den Text direkt an die Seite, ohne dass die Funktion beendet werden muss. return Beide beenden die Funktion und senden den Text zurück an den Funktionsaufruf.

Zum Echo:

function foobar_shortcode($atts) {
    echo "Foo"; // "Foo" is echoed to the page
    echo "Bar"; // "Bar" is echoed to the page
}
$var = foobar_shortcode() // $var has a value of NULL

Für Rücksendung:

function foobar_shortcode($atts) {
    return "Foo"; // "Foo" is returned, terminating the function
    echo "Bar"; // This line is never reached
}
$var = foobar_shortcode() // $var has a value of "Foo"

1646396949 157 Wordpress verwendet echo vs return in der Shortcode Funktion
HashHazard

Es ist nicht so, dass Echo und Return dasselbe sind. Es ist nur so, dass nach Abschluss des Echos in Ihrer ersten Funktion nichts mehr zu tun ist … also kehrt es zurück

Im zweiten fx beenden Sie die Funktion explizit und geben den Wert an die aufrufende Funktion zurück.

934720cookie-checkWordPress verwendet echo vs return in der Shortcode-Funktion

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

Privacy policy