it-swarm.com.de

Benutzerdefiniertes Widget anzeigen, das als Shortcode an der richtigen Stelle hinzugefügt wurde

Ich habe ein benutzerdefiniertes Widget erstellt und möchte es als Shortcode zum Seiteninhalt hinzufügen.

function show_custom_widget() {
    the_widget( 'WP_Custom_Plugin');
}
add_shortcode('custom-widget', 'show_custom_widget');

und ich benutze meinen Shortcode im Beitragsinhalt wie folgt

[custom-widget]

Als Ergebnis erhalte ich mein Widget, das jedoch immer am oberen Rand des Beitrags angezeigt wird und nicht an der Stelle, an der ich den Shortcode verwendet habe. Wie kann ich mein Widget an der richtigen Stelle anzeigen lassen?

1
gniewleone

Die Ausgabe eines Shortcodes sollte zurückgegeben und nicht wiederholt werden. Das Echo einer Ausgabe in einem Shortcode führt zu einer unerwarteten Ausgabe, wie Sie sie sehen. the_widget() gibt die Ausgabe wieder, die das Problem verursacht. Leider gibt es keine ähnliche Funktion für die Rückgabe der wdget-Ausgabe.

Glücklicherweise können Sie einen Ausgabepuffer verwenden, um dieses Problem zu beheben. Sie können so etwas versuchen: ( CAVEAT: Ungetestet )

function show_custom_widget() {
    ob_start(); 
    the_widget( 'YOUR CUSTOM WIDGET' ); 
    $contents = ob_get_clean(); 
    return $contents;
}
add_shortcode( 'custom-widget', 'show_custom_widget' );
1
Pieter Goosen