Bloc-note d'un développeur web
Dans : Développement Web
17 juil 2009Dans son article Mastering WordPress Shortcodes, Smashing Magazine nous invite dans son 4ème exemple à intégrer le contenu d’un flux RSS dans vos billets WordPress à l’aide d’un shortcode.
Reprenons le code donné dans l’article :
1 2 3 4 5 6 7 8 9 10 11 12 13 | //This file is needed to be able to use the wp_rss() function. include_once(ABSPATH.WPINC.'/rss.php'); function readRss($atts) { extract(shortcode_atts(array( "feed" => 'http://', "num" => '1', ), $atts)); return wp_rss($feed, $num); } add_shortcode('rss', 'readRss'); |
Si vous le testez, comme @Fran6 par exemple, vous constaterez que le résultat n’est pas celui escompté : le flux de syndication précède le contenu de votre article au lieu d’être inséré là où vous l’attendiez.
La raison ? À la ligne 10, le résultat de la fonction wp_rss() est retourné au moteur de WordPress pour remplacer le shortcode dans le contenu du billet. Or, la fonction wp_rss() ne retourne rien mais affiche directement le résultat. Ainsi, tout appel du shortcode entraîne l’envoi au client du flux RSS (sous la forme d’une liste non-ordonnée) suivi du contenu du billet.
On corrige le shortcode en capturant la sortie de la fonction wp_rss() à l’aide d’une tamporisation de sortie.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | //This file is needed to be able to use the wp_rss() function. include_once(ABSPATH.WPINC.'/rss.php'); function readRss($atts) { extract(shortcode_atts(array( "feed" => 'http://', "num" => '1', ), $atts)); ob_start(); wp_rss($feed, $num); return ob_get_clean(); } add_shortcode('rss', 'readRss'); |
[…] http://pioupioum.fr/developpement/shortcode-wordpress-integrer-flux-rss.html […]
Merci de partager l’astuce. ça me fait gagner un temps précieux….