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?
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.