web-dev-qa-db-fra.com

Afficher un widget personnalisé, ajouté sous forme de shortcode au bon endroit

J'ai créé un widget personnalisé et j'aimerais l'ajouter au contenu de la page sous forme de shortcode.

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

et j'utilise mon shortcode dans le contenu du message comme suit

[custom-widget]

En conséquence, mon widget est affiché, mais il apparaît toujours en haut du contenu de l'article, pas à l'endroit où j'ai utilisé le shortcode. Comment faire apparaître mon widget au bon endroit?

1
gniewleone

La sortie d'un shortcode doit être renvoyée et non renvoyée en écho. Faire écho à la sortie d'un shortcode aura une sortie inattendue, comme vous le voyez. the_widget() renvoie sa sortie qui est à l'origine du problème. Malheureusement, il n’existe pas de fonction similaire pour renvoyer la sortie wdget.

Heureusement, vous pouvez utiliser un tampon de sortie pour résoudre ce problème. Vous pouvez essayer quelque chose comme ceci: ( CAVEAT: Untested )

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