web-dev-qa-db-fra.com

La sortie du shortcode apparaît avant le corps du message

Duplicate possible:
sortie du code abrégé trop tôt

Comment puis-je insérer mon code de plugin via un shortcode à l'intérieur du corps du message en position exacte?

Le problème est que wp engine insère le code du pluginAVANTpost body tout le temps. Peut-il être réparé?

Par exemple: J'ai un [shortcode option="value"] qui génère du texte avec une image dans un conteneur div. Quand je le mets dans le postAPRÈSle texte, wp affiche ce code:

<div> here is my plugin code </div> <p> here is the text of the post </p>

… Et ça tombe donc dans le haut du poteau.

Où est ma faute?

3
drake2300

J'ai déjà eu ce problème auparavant: les shortcodes ne devraient pas afficher tout contenu (en utilisant print ou echo), au lieu return du contenu à afficher.

Si la conversion de toutes vos instructions de sortie pose trop de problèmes ou si vous devez utiliser une fonction qui affichera toujours la sortie, vous pouvez utiliser output buffering . Un tampon va "attraper" tout contenu echo 'd ou print' d et vous permettre de l'écrire dans une variable.

function my_awesome_shortcode( $atts, $content = null ) {
    // begin output buffering
    ob_start();

    // output some text
    echo 'foo' . "bar\n";
    $greeting = 'Hello';
    printf( '%s, %s!', $greeting, 'World' );

    // end output buffering, grab the buffer contents, and empty the buffer
    return ob_get_clean();
}

add_shortcode( 'awesome', 'my_awesome_shortcode' );

En savoir plus sur Output Buffering Control et les différentes Fonctions de contrôle de sortie que vous pouvez utiliser.

11
shea