Générer un flux RSS en php

E
ERICSTAMANT
Générer un flux RSS en php

Pour différentes raisons, il peut être intéressant de générer un flux RSS de ces articles de blog ou toutes autres informations. Par example, dans le cas de l'utilisation d'un « CMS custom », tel qu'il est le cas sur mon site Internet.

Ce fil RSS, qui signifie « Rich Site Summary » est un type de données pouvant être consulté par des outils tels que Feedly, ou encore Buffer, pour faciliter le partage sur les réseaux sociaux. C'est un excellent moyen de rester à l'affût des dernières tendances qui nous intéressent. Vous pouvez également recueillir le flux RSS de mon blog, afin d'être informé dès la parution d'un nouvel article.

Dans ce petit tutoriel, nous verrons comment créer un flux RSS dynamique avec PHP et MySQL, puis une petite astuce d'URL rewrite avec Htaccess pour créer le document XML.

Explications

Le principe est très simple pour les habituer en programmation. Il suffit d'abord de déterminer un en-tête de document XML. Puis, d'afficher les différentes balises qui composent le flux RSS et de boucler les résultats souhaités, depuis la base de données.

L'intégralité du code PHP vous sera expliqué dans la prochaine section.

Code

Créez donc un nouveau fichier que vous nommerez « rss.php » et placerez à la racine de votre site Internet, afin qu’il soit accessible de par votresite.com/rss.php.

Incluez les balises PHP et la connexion à votre base de données.

Vous devrez donc ensuite spécifier l’en-tête du document avec la fonction « header ».

header("Content-Type: application/rss+xml; charset=UTF-8");

Suite à cela, nous ferons un « echo » des différentes balises du flux RSS, hors de notre boucle MySQL.

echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
echo "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n";
echo "<channel>\n";

echo "<title>Titre du flux RSS</title>\n";
echo "<description>Description du flux RSS</description>\n";
echo "<link>https://www.example.org/</link>\n";
// Boucle de nos articles
echo "</channel>\n";
echo "</rss>\n";

Nous avons maintenant la structure de notre fil Rss. Nous devons maintenant y ajouter le balisage de nos articles. Je ne vais pas expliquer ici comment faire une requête SQL. Simplement le principe ainsi que les différentes balises à utiliser.

Faites donc un SELECT pour récupérer les données que vous désirez insérer, puis une boucle pour chaque entrée. Je suggère de limiter le flux RSS afin de ne pas y intégrer l’intégralité de vos articles. Peut-être les 10 ou 25 derniers articles? À vous de voir.

echo "<item>\n";
echo "<title>".$row['post_name']."</title>\n";
echo "<description>".substr(strip_tags($row['post_content']),0,155)."</description>\n";
echo "<pubDate>".date('D, d M Y H:i:s',strtotime($row['post_date']))." GMT</pubDate>\n";
echo "<link>https://www.example.org/".$row['post_permalink']."/</link>\n";
echo "<guid>https://www.example.org/".$row['post_permalink']."/</guid>\n";
echo "<atom:link href=\"https://www.example.org/".$row['post_permalink']."/\" rel=\"self\" type=\"application/rss+xml\" />\n";
echo "</item>\n";

Comment inclure une image dans mon flux Rss?

Pour ce faire, vous devrez insérer celle-ci via un code d'image standard HTML, à l'intérieur de la balise de description de votre article, qui sera maintenant composé d'un commentaire CDATA.

Voici l'extrait à modifier :

echo "<description><![CDATA[<img src=\"".$row['post_image']."\" />".substr(strip_tags($row['post_content']),0,155)."]]></description>\n";

URL rewrite

Vous avez maintenant un document « rss.php » qui affiche bel et bien le contenu désire. Par contre, selon les normes, le fil rss devrait être dans un document XML accessible via « rss.xml ».

C’est alors que nous placerons une petite fonction de rewrite dans notre fichier .htaccess qui permettra de spécifier que lorsque nous accéderons à rss.xml, le contenu de rss.php y sera affiché.

À noter qu’il est également possible de faire de même pour un fichier de type « sitemap.xml ».

Voici donc le bout de code à insérer dans votre fichier .htaccess :

RewriteRule ^rss.xml$ rss.php [NC,L]

Ce qui signifie : Règle de ré-écriture : le document demandé rss.xml affichera le résultat de rss.php.

Validation

Maintenant que nous avons un feed rss Xml pour notre blog (ou autre), il serait intéressant de vérifier que celui-ci est correctement conçu!

Il existe heureusement un validateur RSS de w3.org. Simplement copier l’adresse de votre fil d’actualité rss dans le champs prévu à cet effet et appuyer sur « Check ».

Validateur de flux RSS