web-dev-qa-db-fra.com

Problème bizarre avec un modèle RSS personnalisé

J'essaie de créer un modèle de flux RSS personnalisé pour un site géré par ma société et j'ai rencontré un bogue très déroutant sur lequel je souhaiterais avoir mon mot à dire.

Tout d’abord, comme contexte d’arrière-plan, après beaucoup de recherches sur Google, c’est la méthode que j’ai choisie pour créer le modèle RSS. (S'il y a une meilleure approche, je suis tout ouïe):

  1. Copier /wp-includes/feed-rss2.php dans mon dossier de thèmes
  2. Spécifiez ce fichier en tant que modèle de page et modifiez-le comme vous le souhaitez.
  3. Depuis le backend de Wordpress, créez une nouvelle page utilisant le modèle ci-dessus.

De là, vous obtenez un flux XML formaté pour RSS. Ce processus semble bien fonctionner, même si c'est un peu compliqué.

Maintenant, voici le problème que j'ai. Le XML sorti ressemble à ceci:

<?xml version="1.0" encoding="UTF-8"?> 
<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/"
    > 

<channel> 
    <title>New Grocery Coupons & Online Coupons Added Daily</title> 
    <atom:link href="http://couponkim.dev/weekly-deals-rss/" rel="self" type="application/rss+xml" /> 
    <link>http://couponkim.dev</link> 
    <description>Coupon Kim has online coupons, printable coupons, and coupon code section for Moms like me trying to save money!</description> 
    <lastBuildDate>Mon, 18 Apr 2011 14:51:44 +0000</lastBuildDate> 
    <language>en</language> 
    <sy:updatePeriod>hourly</sy:updatePeriod> 
    <sy:updateFrequency>1</sy:updateFrequency> 
    <generator>http://wordpress.org/?v=3.1</generator> 
        <item> 
        <title>coupon-code</title> 
        <link>http://couponkim.dev/soap-com-coupons/coupon-code-159/</link> 
        <comments>http://couponkim.dev/soap-com-coupons/coupon-code-159/#comments</comments> 
        <pubDate>Mon, 18 Apr 2011 13:46:18 +0000</pubDate> 


...

(J'ai tronqué la sortie pour des raisons de pertinence.)

Lorsque j'essaie d'afficher ce qui précède dans un Google Chrome, le message d'erreur suivant s'affiche:

error on line 12 at column 30: xmlParseEntityRef: no name

Mon hypothèse est que l'esperluète pose des problèmes, mais honnêtement, c'est encore une hypothèse.

D'ACCORD. C'est donc là que ça commence à devenir bizarre. Je suis allé dans le modèle PHP et ai intégré ce titre dans une balise CDATA. Étrangement, je n'ai pas vu ce changement se refléter dans la sortie lorsque j'ai actualisé la page.

En essayant quelque chose de plus simple, je viens de tuer tous les PHP du modèle à l'intérieur des balises de titre et je les ai remplacés par du texte statique du type "Ceci est un test". Lorsque j'ai actualisé la page, je toujours n'a pas constaté de changement dans la sortie.

À ce moment-là, je soupçonnais qu'une cache devait fonctionner quelque part contre moi. J'ai désactivé le plug-in W3 Total Cache, vidé le cache de mon navigateur (j'utilise Chrome) et redémarré Apache. J'ai rechargé la page à nouveau, mais je n'ai vu aucun changement.

Maintenant, à titre expérimental, j'ai changé les balises <title></title> pour lire <test></test> et rechargé. Cette fois, j'ai vu le changement.

Alors à ce stade, j'ai pensé, OK, cool, je suis enfin en train de percer le cache. J'ai refait la ligne en: <title>This is a Test</title>, mais j'ai vu <title>New Grocery Coupons & Online Coupons Added Daily</title> en sortie.

Donc c'est là que je suis. Je n'ai littéralement aucune idée de ce que le problème pourrait être à ce stade.

Voici encore une chose étrange à savoir, cependant. Lorsque j'ai changé les balises <title> en <test>, et que voyait le changement effectué à la ligne 12, le signe suivant balises de titre (à channel-> item-> title à la ligne 22) modifiées pour lire <title>New Grocery Coupons & Online Coupons Added Daily</title> - c'est-à-dire la sortie gênante de la ligne 12!

Ma meilleure hypothèse est qu'il existe un filtre Wordpress dont je ne sais pas qu'il fonctionne sur cette sortie, mais je suis vraiment perplexe à ce stade. Toute lumière que vous pourriez apporter sur ce problème serait très appréciée!

Merci d'avance.

1
Chris Allen Lane

Tout d’abord, comme contexte d’arrière-plan, après beaucoup de recherches sur Google, c’est la méthode que j’ai choisie pour créer le modèle RSS. (S'il y a une meilleure approche, je suis tout ouïe):

C'est la deuxième fois que cela se présente aujourd'hui. :) Vous devriez utiliser add_feed() ( source ) plutôt imiter ce genre de choses avec page.

En ce qui concerne le problème que vous décrivez, je ne suis pas sûr. Si la mise en cache est impliquée, j'essayerais de tester des éléments sur une installation de test locale distincte.

0
Rarst