Shortcode wird immer zuerst angezeigt. Noch einmal

OK, ich hatte ein Problem mit Echos in meinem letzten shortcodem, aber alles funktioniert jetzt gut.

Aber ich habe noch eins:

function myWidget_shortcode( $atts ) { extract( shortcode_atts( array( 'title' => 'My Widget', 'value' => '5', ), $atts ) ); return the_widget(myWidget,'title='.$title.'&value='.$value); } add_shortcode('myWidget', 'myWidget_shortcode'); 

Kannst du mir sagen, dass dieser Shortcode immer zuerst auf den Seiten angezeigt wird? Es gibt kein Echo usw., alle Daten werden zurückgegeben …

[gefunden die Antwort – bearbeiten]

Dies triggers das Problem:

 ob_start(); the_widget(popularPosts,'title='.$title.'&number='.$number); return ob_get_clean(); 

Jedenfalls verstehe ich nicht, warum es in diesem Fall immer zuerst geht. Weil das Widget eine function ist und etwas wiedergibt? :>

Solutions Collecting From Web of "Shortcode wird immer zuerst angezeigt. Noch einmal"

Ja, schau dir die widget() -Methode in deiner MyWidget class an. Echo es? Höchstwahrscheinlich, weil Widgets normalerweise so geschrieben werden. In der Tat wäre ich überrascht, ein Widget zu sehen, das keine Ausgabe in seiner widget() -Methode ausgegeben hat.

Und wenn Sie the_widget() aufrufen, the_widget() es eine Instanz des $widget_obj->widget($args, $instance); und ruft $widget_obj->widget($args, $instance); . Es echo und gibt nichts zurück.