Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
Coupe WPB
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

Comment créer des flux RSS personnalisés dans WordPress

WordPress est livré avec un flux RSS par défaut qui partage automatiquement le contenu de votre site, ce qui permet aux abonnés de rester facilement informés.

Toutefois, si vous souhaitez partager uniquement des types de contenu spécifiques, tels que des publications de blog, des mises à jour de produits ou des annonces d’événements, vous pouvez mettre en place des flux RSS personnalisés. Vous pourrez ainsi proposer à votre public un contenu adapté à ses centres d’intérêt.

Cela améliore l’engagement car les abonnés reçoivent des mises à jour plus significatives pour eux. De plus, cela vous permet de mieux contrôler la manière dont votre contenu est partagé et l’endroit où il l’est.

Dans cet article, nous allons vous afficher comment créer facilement un flux RSS personnalisé dans WordPress.

Create custom RSS feed in WordPress

Pourquoi créer un flux RSS personnalisé dans WordPress ?

WordPress est doté d’un flux RSS intégré, auquel vous pouvez facilement ajouter du contenu personnalisé ou des miniatures.

Cependant, si vous avez un type de contenu spécifique ou un type de publication personnalisé sur votre site WordPress, vous pouvez créer un flux RSS personnalisé pour ce type de contenu.

Par exemple, si vous proposez à vos abonnés du contenu exclusif provenant d’auteurs/autrices spécifiques, vous pouvez créer un flux RSS personnalisé pour tenir vos abonnés/abonnées informés du contenu. Cela peut améliorer votre classement dans les moteurs de recherche.

En outre, les flux personnalisés vous offrent plus de liberté en vous permettant d’ajouter le nom de l’auteur, les dates de publication ou toute autre information pertinente, fournissant ainsi plus de détails à vos utilisateurs/utilisatrices.

Cela dit, voyons comment créer facilement des flux RSS personnalisés dans WordPress, étape par étape.

Note : Il est conseillé de créer une sauvegarde complète de votre site WordPress avant d’apporter des modifications majeures à un site direct.

Outil de personnalisation des flux RSS dans WordPress

Vous pouvez facilement créer un flux RSS personnalisé dans WordPress en ajoutant un code personnalisé au fichier functions.php de votre thème.

Ce flux affichera le titre, le lien, la date de publication, l’auteur/autrices et des extraits des publications de votre site WordPress.

Cependant, n’oubliez pas que la moindre erreur lors de la saisie de ce code peut briser votre site et le rendre inaccessible.

C’est pourquoi nous vous recommandons d’utiliser WPCode. C’est la meilleure extension d’extraits de code WordPress sur le marché, ce qui rend sûr et facile l’ajout de code personnalisé à votre site.

Tout d’abord, vous devez installer et activer l’extension WPCode. Pour des instructions détaillées, consultez notre guide du débutant sur l’installation d’une extension WordPress.

Remarque : vous pouvez utiliser l’extension WPCode gratuite pour ce tutoriel. Cependant, passer à un plan payant permet de déverrouiller plus de fonctionnalités, comme le mode test, la bibliothèque cloud, la logique conditionnelle, et plus encore.

Une fois activé, visitez la page Extraits de code  » + Ajouter un extrait à partir de la colonne latérale de l’administrateur WordPress. Ici, cliquez sur le bouton  » Utiliser l’extrait  » sous l’option  » Ajouter votre code personnalisé (nouvel extrait) « ,

Add new snippet

Vous accédez alors à la page « Créer un extrait personnalisé », où vous pouvez commencer par saisir un nom pour l’extrait de code.

Choisissez ensuite l’option « Extrait de code PHP » dans le menu déroulant Type de code situé à droite.

Choose the PHP Snippet option to create a custom RSS feed

Ajoutez ensuite le code personnalisé suivant dans la case « Aperçu du code » :

add_action('init', 'customRSS');
function customRSS(){
        add_feed('Feed', 'customRSSFunc');
}function customRSSFunc(){
        get_template_part('rss', 'feedname');
/**
 * Template Name: Custom RSS Template - Feedname
 */
$postCount = 5; // The number of posts to show in the feed
$posts = query_posts('showposts=' . $postCount);
header('Content-Type: '.feed_content_type('rss-http').'; charset='.get_option('blog_charset'), true);
echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>';
?>
<rss version="2.0"
        xmlns:content="http://purl.org/rss/1.0/modules/content/"
        xmlns:wfw="http://wellformedweb.org/CommentAPI/"
        xmlns:dc="http://purl.org/dc/elements/1.1/"
        xmlns:atom="http://www.w3.org/2005/Atom"
        xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
        xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
        <?php do_action('rss2_ns'); ?>>
<channel>
        <title><?php bloginfo_rss('name'); ?> - Feed</title>
        <atom:link href="<?php self_link(); ?>" rel="self" type="application/rss+xml" />
        <link><?php bloginfo_rss('url') ?></link>
        <description><?php bloginfo_rss('description') ?></description>
        <lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></lastBuildDate>
        <language><?php echo get_option('rss_language'); ?></language>
        <sy:updatePeriod><?php echo apply_filters( 'rss_update_period', 'hourly' ); ?></sy:updatePeriod>
        <sy:updateFrequency><?php echo apply_filters( 'rss_update_frequency', '1' ); ?></sy:updateFrequency>
        <?php do_action('rss2_head'); ?>
        <?php while(have_posts()) : the_post(); ?>
                <item>
                        <title><?php the_title_rss(); ?></title>
                        <link><?php the_permalink_rss(); ?></link>
                        <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate>
                        <dc:creator><?php the_author(); ?></dc:creator>
                        <guid isPermaLink="false"><?php the_guid(); ?></guid>
                        <description><![CDATA[<?php the_excerpt_rss() ?>]]></description>
                        <content:encoded><![CDATA[<?php the_excerpt_rss() ?>]]></content:encoded>
                        <?php rss_enclosure(); ?>
                        <?php do_action('rss2_item'); ?>
                </item>
        <?php endwhile; ?>
</channel>
</rss>

Vous pouvez maintenant modifier le nom de votre flux RSS personnalisé en remplaçant le texte Outil de personnalisation après la ligne add_feed dans le code.

Une fois ce flux créé, vous pourrez le voir en allant sur l’URL du flux RSS. Elle se présentera comme suit : yourdomain.com/feed/feedname.

Type custom feed name in the code

Ensuite, défilez jusqu’à la section d’insertion et choisissez le mode « Insertion automatique ».

Le flux RSS personnalisé sera automatiquement activé lors de l’activation du code.

Choose an insertion method

Enfin, revenez en haut de la page et faites basculer le commutateur « Inactif » sur « Actif ».

Cliquez ensuite sur le bouton « Enregistrer l’extrait » pour stocker vos réglages.

Save the custom RSS feed custom snippet

Une fois que vous avez fait cela, visitez la page Réglages  » Permaliens depuis le tableau de bord WordPress.

Cliquez simplement sur le bouton « Enregistrer les modifications » pour effacer les règles de réécriture et générer de nouveaux permaliens pour votre site.

Check Permalinks

Vous pourrez désormais voir votre flux RSS personnalisé en visitant l’URL yourdomain.com/feed/feedname.

Voici un exemple de flux RSS personnalisé sur notre site WordPress de démonstration :

Custom RSS feed preview

Bonus : Dépannage des problèmes liés aux flux RSS personnalisés

Voici une liste de quelques erreurs qui peuvent se produire lorsque vous essayez de créer un flux RSS personnalisé et comment vous pouvez les résoudre.

J’obtiens une erreur 404 lorsque j’essaie de voir mon flux !

Si vous obtenez l’erreur 404 lorsque vous essayez de voir votre flux personnalisé, vérifiez si vous utilisez le bon nom de flux dans votre URL.

Il doit s’agir de celui que vous avez fourni dans la fonction add_feed. Si vous avez le bon nom de flux, il se peut que vos règles de réécriture n’aient pas été mises à jour correctement. Vous pouvez facilement y remédier en enregistrant à nouveau vos permaliens.

Si vous avez réenregistré vos permaliens et que le problème persiste, vous pouvez forcer un rinçage de réécriture en ajoutant ce code dans votre extrait WPCode à côté de la fonction add_ feed:

global $wp_rewrite;
$wp_rewrite->flush_rules();

Mon flux ne valide pas !

Le W3C propose un service de validation des flux qui vous permet de valider le flux obtenu et fournit des détails spécifiques sur les points où votre flux n’est pas validé.

Vous pouvez alors facilement modifier l’extrait de code pour résoudre ces modifications.

J’obtiens une erreur de validation <language /> !

Cette situation est fréquente lorsque la langue du RSS n’a pas été configurée dans votre installation WordPress.

Pour ce faire, vous pouvez ajouter le code suivant au WPCode pour mettre à jour l’option linguistique :

function rssLanguage(){
        update_option('rss_language', 'en');
}
add_action('admin_init', 'rssLanguage');

Une fois que vous avez fait cela, modifiez le deuxième argument de la fonction update_option pour modifier la langue à celle qui vous est nécessaire. Consultez la liste complète des codes de langue RSS.

Une fois que vous aurez enregistré l’extrait, l’erreur sera retirée et vous pourrez voir votre flux RSS personnalisé.

Nous espérons que cet article vous a aidé à apprendre comment créer un flux RSS personnalisé dans WordPress. Vous pouvez également consulter notre guide étape par étape sur la façon de créer des flux RSS distincts pour chaque catégorie de votre blog WordPress et nos astuces d’experts pour optimiser vos flux RSS WordPress.

Si vous avez aimé cet article, veuillez alors vous abonner à notre chaîne YouTube pour obtenir des tutoriels vidéo sur WordPress. Vous pouvez également nous trouver sur Twitter et Facebook.

Divulgation : Notre contenu est soutenu par les lecteurs. Cela signifie que si vous cliquez sur certains de nos liens, nous pouvons gagner une commission. Consultez comment WPBeginner est financé, pourquoi cela compte et comment vous pouvez nous soutenir. Voici notre processus éditorial.

Avatar

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

L'ultime WordPress Toolkit

Accédez GRATUITEMENT à notre boîte à outils - une collection de produits et de ressources liés à WordPress que tous les professionnels devraient avoir !

Reader Interactions

68 commentairesLaisser une réponse

  1. Jonathan

    Following this tutorial, for some reason changing the $postCount does not work.

    Eg,
    $postCount = 20; // The number of posts to show in the feed

    Only by changing the default number inside of Wordpress Reading settings does it work. Very weird. How do we overwrite the wordpress settings, or stop the wordpress settings from overriding our code?

    • WPBeginner Support

      Your specific theme may be overriding the number of posts to show, we would first recommend checking with the support for your specific theme and they should be able to assist.

      Administrateur

  2. Shahid

    Hi.
    How i can add custom post types and custom fields in feed?

  3. Dexter Nelson

    Is there any way to make this permanent? I keep having to repeat this step every few weeks when the theme is updated.

      • Dexter Nelson

        Thanks. But doesn’t that mean when the theme is updated I’ll have to update the child theme? If that’s the case and I have to put in the work either way, I might as well put in the work to create and maintain a plugin and help out others instead of just myself, right?

        • WPBeginner Support

          Child themes should not be affected by updates to the parent theme but if you have the ability to create a plugin then you can certainly go down that path to help others as well.

  4. Thommy Kusbin

    is there any plugin to do this kind of custom rss feed XML? I want to use my own tag xml.

    • WPBeginner Support

      We do not have a recommended plugin at this time, we will be sure to keep an eye out.

      Administrateur

  5. MOOSA

    How can I use « wp_get_shortlink() » Instead of « the_permalink_rss() »

  6. John Snyder

    I need to create an XML feed for a specific page on my Wordpress website. Here is the page will I have to edit my functions.php file or is there an easier way?

  7. Alok Shrestha

    Hello,

    This article is very helpful but I got some issue.

    I did exactly like in your code. But it gives me an error as
    This page contains the following errors:

    error on line 1 at column 7: XML declaration allowed only at the start of the document
    Below is a rendering of the page up to the first error.

    Could you please help me out what could possibly go wrong here?
    This is very important for me.

    Thank you.

    • Nathan

      I got the same error. Did you figure out the fix?

      • Rich

        Use ob_clean(); after php tag

  8. Guillermo

    Hi, is it possible to change de order of the posts in my feeds without creating a new custom feed? I want to use the current feed files but just want to change the displayed order of theme. Using PHP queries as an example, changing order from DESC to RAND()

    I will appreciate you help. Thanks.

  9. Jeremy

    Great post! I definitely fall under the rookie status. Many feed readers/aggregators don’t seems to like the /feed/ URL structure, even through the xml returned validates. Is there a way to append the url to end with rss.xml?

    • Dave

      Did you get this to work with .xml at the end?

  10. JDURAN

    Sorry to say, however, implementing the codes for custom rss has effectively wiped out my entire blog. Having to do a restore and it is taking a long time to get my blog back up. Any advise?

    • Mark

      You need to connect to your site via FTP or your hosting’s file browser in cPanel, and simply remove what you added. If you added the code as a custom plugin, then just rename the plugin folder. If you added the code in functions.php, edit the file and remove the code. Don’t forget to backup the file before editing. Hope this helps for the next time.

  11. jim

    Fantastic! This works as advertised!

  12. DrLightman

    Never mind, it does. I had a bug with YOAST SEO that with the /category/ prefix removal. I have warned them of it I hope they will fix it.

  13. DrLightman

    Hello, thank you for the article, but it seems this will only work for the main site feed, not for the specific catgories feeds:

    mysite.com/category/mycat/feed/feedname/

  14. Manuel

    Doesn’t work anymore.
    I got a 404 error, so I activated debug mode. Debug mode says « Notice: The Called Constructor Method For WP_Widget Is Deprecated Since Version 4.3.0! Use __construct() »

    • Manuel

      Ok, I think the problem was elsewhere and this notice is from a different plugin.

  15. git

    unfortunately this is restricted in its usefulness. inserting screenshots and sample pages would be very helpful, particularly for amateurs/rookies like me.

  16. Tiffany

    Great article. Any way to add the featured image for the post to the feed?

  17. CT

    Please see below screenshots – what determines the « … » or « […] » or « Read More -> » etc etc in feeds?

    I’m using the default /feed in 2 different WP sites & these 2 screenshots obviously are showing something different at the end of their excerpts. Thanks!

  18. CT

    Apologizes but that code did not come through clear lol. Lets try that again. Go here to see the exact, raw code I’m looking to remove:

    • WPBeginner Support

      This code is added by Yoast SEO plugin to RSS feeds. You can turn it off by visting SEO » Advanced page.

      Administrateur

  19. Stef

    Hey, I want to exclude certain post_formats from my custom rss feed. Is that possible and if so, how?

  20. Neha

    Hello,

    When I try to view the feed I got 404 Page not found error. I am trying to add code:

    global $wp_rewrite;
    $wp_rewrite->flush_rules();

    then I also got same error. Could this be why?

  21. Jordan

    How do you add multiple feeds? Array is not working. Thanks.

  22. Jon Harvey

    How would you add multiple custom feeds? Couldn’t get an array to work.
    Thanks

    • Jon Harvey

      Got it to work neatly thanks to birgire at Stack exchange:

      add_action( ‘init’, ‘custom_feeds’ );

      function custom_feeds()
      {
      foreach( array( ‘feedname1’, ‘feedname2’ ) as $name )
      {
      add_feed( $name,
      function() use ( $name )
      {
      get_template_part( ‘rss’, $name );
      }
      );
      }
      }

  23. Neal Pope

    The « follow » button shows up at the bottom right corner when viewing posts on a personal computer, but does not appear when viewing on a mobile devise (smartphone) (unless I’m just missing it.

  24. Limbani

    Thanks for sharing it’s work perfectly…

  25. Jeff

    Sorry, but everything about this is misleading. this is not « beginner » work. and it is not worded for beginners. This is totally irresponsible and can cause major issues to people’s websites.

  26. Christine

    I got this working (kind of). The feed page exists, but will not validate and says there is an error on line 1.

    I copied the code exactly from this page and haven’t changed anything. What could be going wrong here?

    • Flávia

      W3 will not validate mine as well and says there is an error on line 17.

      And I am getting the 404 page!

      What should I do?

  27. Eugene Asiamah

    Hello,

    Please i need help in configuring my rss to show all my post content on not just an excerpt of it.

    Thank you.

  28. Georgi

    Hello,
    I need to show only date without time for pubDate. When I use

    It’s doesn’t work for firefox,IE.
    Can you help me?

    Thank you in advance!

  29. Jan-Philipp

    Hi.

    I would like to change the update pattern of the feed with

    sy:updatePeriod
    echo apply_filters( ‘rss_update_period’, ‘weekly’ );
    /sy:updatePeriod

    sy:updateFrequency
    echo apply_filters( ‘rss_update_frequency’, ‘1’ );
    /sy:updateFrequency>

    sy:updateBase
    2015-03-29T01:00:00+09:00
    /sy:updateBase

    But whatever I tried, it automatically adds a new post when I publish it and does not wait till Sunday ( as defined in the code above) to add it to the RSS.

    Do you have any suggestions? Do I maybe need to find a solution within the WP Query?

    Your help would be much appriciated.

  30. Jan-Philipp

    Hi.

    I would like to change the update pattern of the feed with

    2015-03-29T01:00:00+09:00

    But whatever I tried, it automatically adds a new post when I publish it and does not wait till Sunday ( as defined in the code above) to add it to the RSS.

    Do you have any suggestions? Do I maybe need to find a solution within the WP Query?

    Your help would be much appriciated.

  31. Issabellla

    Hi.I try to do as your mention but I’ve seen my site cannot access to the feed page.This is My site I try to use /feed and a lot of word which is mention in wordpress.com or wordpress.org even in the google.Please help me.

  32. xuamox

    What determines that the feed will be displayed at feed/feedname? I have tried to follow the tutorial, but not luck at all. The feed is not publishing at feed/feedname.php

  33. Wouter Bertels

    Following these exact steps I got this error:

    Fatal error: Cannot redeclare get_bloginfo_rss() (previously
    declared in
    /home/public_html/wp-includes/feed.php:25)
    in /home/public_html/wp-content/themes/xxx/rss-name.php on line 39

  34. George

    Hi,

    My feed is OK when this code is added:

    global $wp_rewrite;
    $wp_rewrite->flush_rules();

    and returns a 404 when it is removed.
    I only remove it as per your instructions, which is to remove it after reloading wordpress.

    At this moment I am testing it on my local server. Could this be why?

  35. ybmgryzzz

    Hi there. Thanks for this post! Really appreciated. Worked well at first go! :)

    I would also like some assistance as Brian below. For the full text in the RSS instead of the post excerpt.

    Thanks in advance.

  36. Brian

    I am trying to add a second RSS feed that is full text (my first RSS feed is summary). If I wanted this custom RSS feed to be full text instead of summary excerpt, what would I change?

    Thanks so much!

  37. Steve Marks

    Thanks for this. Just what I was looking for!

    I had an issue when I used add_feed(). I could view the RSS feed in the browser absolutely fine, but it would return a 404 when I entered the URL into a third party application (ie. MailChimp, W3C feed validator etc). I had tried flushing the permalinks etc.

    The only way I could get round the issue was to create a new blank page and select the template as the one you’ve outlined in this article.

    Not sure why it didn’t work, but hopefully this offers a viable solution for others in this situation.

    Thanks again!

  38. Josh McClanahan

    Your article is right on the path of what I was looking for. One question I have (as a noob to RSS), how can I add a link to an RSS feed?
    The site that I need this for is a church and would like to have a custom feed that would make it easier for our members to be alerted to newly posted sermon posts (that have mp3 download links).
    Currently, the feed shows the text for the links that I have created on the posts for the sermons. But it only acts as text. Any help would be appreciated.

    • Josh McClanahan

      Just noticed that I didn’t ask my question correctly.
      What I was trying to ask was, how can I display a link in the RSS Feed? The links that are in the content of my posts are broken in the feed.
      Thanks for your help and this article.

    • Josh McClanahan

      Still curious, if anyone knows why my links would be broken and only show as plain text in a feed?
      To see what I mean checkout: http://amfmchurch.com/feed
      You will see « Download » in plain text. I would like to make it so that people can click the anchor link and download the mp3. This works find on the actual site.

      Thanks for any help.

  39. Neil

    Hi, I have the default rss feed.. but I would like to be able to either reduce the size of the images from what is displayed in the post…. (to a maximujm width of 265px) OR to just use the post thumbnail in the rss.

    Is either of the above possible?

    The reason I am looking to do this is that my RSS feeds an APP and the APP will only display images up to 265px in width (before horizontal scrolling) and 265px is very limiting for online/pc blog posts…

  40. Cathy Finn-Derecki

    Thank you for this! I am making a custom RSS location part of a plugin I’m developing. As a result, I have included the text for the custom RSS in the function, not in a theme template. It’s working. However, it does not seem to work when I want to restrict the feed to a category. It gives all posts regardless. Any thoughts?

  41. Alexis

    Hello,

    Thank you, these explanations are really useful. I just used it to customize my feed so I could put an image in mailchimp’s « RSS to email » feature.

    Thank you very much !

  42. the Off

    Hello,

    Till yesterday afternoon, my Wordpress (version 3.6.1) blog http://theoff.info/wordpress/ had no problem. And I successfully added new plugins.

    In the night, problems started: (1) I could not login. (2) the RSS feed http://theoff.info/wordpress/?feed=rss2 got corrupted. The feed failed validation.

    I searched the Web and Wordpress Support Forum for solutions. I tried the following:
    (i) successfully reset the password
    (ii) deleted new plugins from ftp
    (iii) renamed Theme folder by adding « -old » and plugin folder by adding « -hold » from ftp

    Then I could login and up grade to 3.7.1 version and make changes to the blog.

    However, login is still an issue. Every time I am following method mentioned in step (iii) to login.

    RSS still does not validate.

    Could you help in resolving both login and RSS feed problems?

    Note: My webhost does not offer technical help. I am not an IT professional i.e. I have very little technical knowledge.

    Thanks

    • WPBeginner Support

      It is difficult to figure out. Here is one thing you can try.

      1. Using FTP download your plugins to your computer for backup and then delete your plugins directory.
      2. Create a new plugins directory.
      3. Install and all your plugins one by one by downloading fresh copy of the plugin from the source. After you activate each plugin log out and and log back in to see if the problem occurs again. You will probably find a plugin that may be causing the problem or you wont. This could mean that a plugin file on your site may have been compromised.

      If this process does not help you, repeat this process process with your themes as well. If you have made a lot of changes to your existing themes then you might want to back it up on your computer by downloading theme folder through FTP. Then delete themes folder from your webserver and create a new themes directory in wp-content folder on your server. From WordPress admin area download and install a fresh copy of default twenty thirteen theme.

      Let us know what happens when you do all that. Make Sure to Backup your Site first.

      Administrateur

  43. Bertrand

    Hello,

    When I try to open the new feed, I get an error message:

    Fatal error: Call to undefined function query_posts() in /xxxx/wp-content/themes/xxx/rss-feedname.php on line 6

    I tried on localhost and web hosting, it is the same…

    How can I fix it?

    Thanks

  44. ADv

    Does the php template need close tag ?> in the end?

    • ADv

      No, it doesn’t. Silly me = )

Laisser une réponse

Merci d'avoir choisi de laisser un commentaire. Veuillez garder à l'esprit que tous les commentaires sont modérés selon notre politique de commentaires, et votre adresse e-mail ne sera PAS publiée. Veuillez NE PAS utiliser de mots-clés dans le champ du nom. Ayons une conversation personnelle et significative.