WordPress, ajouter du contenu dans son flux RSS !

Alors pourquoi ajouter du contenu dans son flux RSS ? Et bien pour plusieurs raisons, comme par exemple pour y injecter un copyright, des éléments esthétiques ou pourquoi pas de la pub !

La technique que je vais vous montrer ici vous permettra d'injecter du contenu avant et après le titre et avant et après le contenu de chaque item ! Vous aurez donc un bon contrôle de ce qui sortira de votre flux RSS.

La méthode

On va se servir du fichier functions.php qui se trouve dans le dossier de votre thème courant. Il est aussi possible de passer par un plugin ou par le fichier my-hacks.php (à mettre à la racine du blog) pour que la modification soit active pour n'importe quel thème.

La fonction d'injection pour le titre RSS

Ouvrez votre fichier functions.php, si il n'existe pas, créez-le (sans oublier les balises php <?php ?>).

Placez le code suivant dedans:

function gotitlerss($content) {
        $content = 'Texte avant le titre '.$content.' et après le titre !';
        return $content;
}
add_filter('the_title_rss', 'gotitlerss');

Vous voyez, c'est relativement simple, il vous suffit d'écrire ce que vous voulez avant et après la variable $content !

La fonction d'injection pour le contenu RSS

Ouvrez votre fichier functions.php, si il n'existe pas, créez-le.

Placez le code suivant dedans:

function gopostrss($content) {
        $content = 'Texte avant le contenu '.$content.' et après le contenu !';
        return $content;
}
add_filter('the_excerpt_rss', 'gopostrss');
add_filter('the_content_rss', 'gopostrss');

Idem que pour le titre, il vous suffit d'écrire ce que vous voulez avant et après la variable $content !
Et vous voyez qu'ici il y a 2 filtres, un pour l'extrait RSS et l'autre pour le contenu complet RSS.

/!\ Hack pour la fonction d'injection pour le contenu RSS pour WordPress 2.5-

Il semblerait qu'avec certaines versions de wordpress, le filtre "the_content_rss" ne fonctionne pas ! J'ai constaté ça sur une version 2.5. Voici un hack qui va vous permettre de contourner ce bug:

Placez le code suivant dedans:

function gopostrss($content) {
        if(is_feed()){
                $content = 'Texte avant le contenu '.$content.' et après le contenu !';
        }
        return $content;
}
add_filter('the_content', 'gopostrss');

En fait on utilise le filtre "the_content" qui agit sur tout le contenu, même dans un billet. Du coup on applique la condition is_feed() pour n'agir que sur le contenu du flux !

Exemple d'utilisation - Ajout de la catégorie après le titre

Voilà un exemple concret qui va inclure le nom de la catégorie après le titre, à titre purement informatif.

function gotitlerss($content) {
        $pcat = "";
        foreach((get_the_category()) as $cat) {
                $pcat .= ' ('.$cat->cat_name . ')';
        }
        $content = $content.$pcat;
        return $content;
}
add_filter('the_title_rss', 'gotitlerss');

Ce qui transformera vos titres "Titre du billet" en "Titre du billet (catégorie du billet)"

Exemple d'utilisation - Ajout d'une pub image en fin de contenu

Voilà qui devrait ravir vos partenaires si vous avez un grand nombre d'abonnés.

function gopostrss($content) {
        $content = $content.' <hr /> <a href="http://sitepartenaire.com/"><img src="http://sitepartenaire.com/pub.jpg alt="pub" /></a> <hr />';
        return $content;
}
add_filter('the_excerpt_rss', 'gopostrss');
add_filter('the_content_rss', 'gopostrss');

Ce que j'aime avec l'injection de pub, c'est l'effet pervers que ça peut avoir pour les voleurs de flux qui du coup diffusent vos publicités gratuitement. Bon le 2ème effet kisskool c'est que du coup les pubs de vos annonceurs risquent de se retrouver sur des sites douteux ... mais "c'est le jeu ma pauv' Lucette !"

Conclusions

Voilà une façon simple de prendre le contrôle de votre flux, ce qui n'est pas toujours évident quand on utilise un CMS ! Merci qui ? Euh ... merci WordPress 😀

-----

Articles relatifs

  • jbj

    Merci beaucoup pour ces infos intéressantes 🙂
    C’est fou tout ce qu’on peut faire avec les fonctions du style add_filter…

  • Thomas

    Rahh on est déjà envahi par la pub pour un oui ou pour un non.
    Par pitié, épargnez les flux RSS 🙂

  • k-ny

    @jbj
    C’est clair, voilà comment on se retrouve avec des milliers de plugins 😉

    @Thomas
    Bah ça peut aussi permettre d’alléger les pubs d’un site, comme ça on reparti dans le flux et sut le site. Bon après c’est clair qu’adbloc ne pourras pas les bloquer ^^

  • Pingback: NicoFayet, le blog » En vrac - 24()

  • Fils RSS

    Des bijoux comme ton blog, la blogosphère en manque

  • Merci beaucoup pour l’astuce, c’est exactement ce que je cherchais ! Petite question, si je souhaite insérer du code php (genre les derniers articles de la catégorie) est-ce que tu sais comment faire ? Merci encore !

  • mustapha

    Merci beaucoup pour l’astuce,c’est exactement ce que je cherchais ! j’ai resolu un grand probleme,Merci encore !

  • Pingback: How to: Insert ads on your RSS feed()

  • Bonjour, je souhaiterais ajouter un fichier mp3 dans une des pages de notre blog, mais apparemment ce format de fichier n’est pas accepté… help!

  • Pingback: 10 Useful RSS-Tricks and Hacks For WordPress | Developer's Toolbox | Smashing Magazine()

  • Pingback: 10 Useful RSS-Tricks and Hacks For WordPress | virology.tv()

  • Pingback: Wordpress Blog Services - 10 Useful RSS-Tricks and Hacks For WordPress()

  • Pingback: 10 Useful RSS-Tricks and Hacks For WordPress | Simple Drops()

  • Pingback: 10个优化WordPress RSS Feed的技巧(1) - 幸福收藏夹()

  • Pingback: 10 Useful RSS-Tricks and Hacks For WordPress | Link Archive()

  • Pingback: 10 Useful RSS-Tricks and Hacks For WordPress | The Blog Specialist()

  • Pingback: 10 Useful RSS-Tricks and Hacks For WordPress | Viet Blog Viet dot Com()

  • Pingback: Hack: insert ads in your RSS feed()

  • Pingback: Cómo insertar anuncios en los feeds de WordPress » blogpocket()

  • Pingback: Inserta ads (o lo que quieras) en el feed RSS de tu blog Wordpress | SEO Marketing Tools()

  • Excellent tuto dude, merci. Je viens de modifier mes flux pour qu’ils soient moins bordéliques. Trop simple!

  • merci pour l’astuce! Ca fait un moment que je galérais sur ce « problème »

  • Reaves

    Merci beaucoup, ca m’a été très utile 😉

  • bonjour, je voulais savoir comment on cree un flux RRS

  • Pingback: 12 Lesser Known But Useful WordPress Hacks()

  • Pingback: 10 WordPress hacks to make more money online()

  • Pingback: How to Add Content in Your WordPress RSS Feeds()

  • Pingback: MySite4.ws — Blog — How to Add Content and Completely Manipulate Your WordPress RSS Feeds()

  • Pingback: 如何完全掌控WordPress的RSS - 中国站长帮()

  • Nor

    Hi is there maybe an English version of this post?? Merci beaucoup!

  • Pingback: Hack: insert ads in your RSS feed | IdolMasti()

  • Merci c’est exactement ce que je recherchais, merci google de m’avoir conduit à ce site que je bookmark direct 😉

    Petite question au passage :
    Savez-vous s’il est possible de changer le flux de place.
    exemple au lieu de webinventif.com/feed plutôt webinventif.com/rss

    Merci à vous.

  • David [J’annonce gratuit]

    Merci, une petite fonction bien pratique. Que j’ai modifier pour retirer la description de mon flux.
    function gopostrss($content) {
    if(is_feed()){
    $content = ‘Remplace votre description’;
    }
    return $content;
    }
    add_filter(‘the_content’, ‘gopostrss’);

    Merci a ++

  • Et hop ! Un plugin échangé contre 4 lignes de code !
    Je prends !
    Merci du tuyau 😉

  • Ca le fait, je prends aussi ! Merci pour ce bout de code.

  • Pour ma part, pour que cela fonctionne j’ai dû utiliser un return plutôt qu’un echo. A part ça, ça marche nickel. 🙂 Merci beaucoup !

  • Merci beaucoup, je vais tester ça !
    Une question : est-ce qu’il y aurait un moyen de, non pas ajouter, mais RETIRER du contenu ? Plus précisément, effacer automatiquement les 25 premières caractères de tous les titres ? Je ne vais pas expliquer pourquoi je voudrais faire ça, ça prendrait trop de temps ^^’

  • Pingback: 10 Useful RSS-Tricks and Hacks For WordPress - WebsOutFit()