Bizarres Problem mit benutzerdefinierten RSS-Vorlage

Ich versuche, eine benutzerdefinierte RSS-Feedvorlage für eine Website zu erstellen, die von meiner Firma verwaltet wird, und ich habe einen sehr verwirrenden Fehler festgestellt, auf den ich gerne zugreifen möchte.

Zunächst einmal, als Hintergrund Kontext, nach viel Googeln, das ist die Methode, die ich gewählt habe, um die RSS-Vorlage zu erstellen. (Wenn es einen besseren Ansatz gibt, bin ich ganz Ohr):

  1. Kopiere /wp-includes/feed-rss2.php in meinen Themenordner
  2. Geben Sie diese Datei als Seitenvorlage an und ändern Sie sie wie gewünscht
  3. Erstellen Sie im WordPress-Backend eine neue Seite, die die obige Vorlage verwendet

Von dort erhalten Sie einen XML-Feed, der für RSS formatiert ist. Dieser process scheint gut zu funktionieren, auch wenn es ein bisschen klatschig ist.

Nun, hier ist das Problem, das ich habe. Das ausgegebene XML sieht ungefähr so ​​aus:

   New Grocery Coupons & Online Coupons Added Daily  http://couponkim.dev Coupon Kim has online coupons, printable coupons, and coupon code section for Moms like me trying to save money! Mon, 18 Apr 2011 14:51:44 +0000 en hourly 1 http://wordpress.org/?v=3.1  coupon-code http://couponkim.dev/soap-com-coupons/coupon-code-159/ http://couponkim.dev/soap-com-coupons/coupon-code-159/#comments Mon, 18 Apr 2011 13:46:18 +0000 ... 

(Ich habe die Ausgabe aus Gründen der Relevanz gekürzt.)

Wenn ich versuche, das oben genannte in Google Chrome anzuzeigen, erhalte ich die folgende Fehlermeldung:

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

Meine Annahme hier ist, dass das Ampersand Probleme verursacht, obwohl das ehrlich gesagt immer noch eine Vermutung ist.

OK. Hier fängt es an komisch zu werden. Ich ging in die PHP-Vorlage und beteiligte diesen Titel innerhalb eines CDATA-Tags. Seltsamerweise habe ich diese Änderung in der Ausgabe nicht gesehen, als ich die Seite aktualisiert habe.

Etwas einfacher ausgedrückt, habe ich einfach das gesamte PHP in der Vorlage innerhalb der Titel-Tags gelöscht und es durch statischen Text wie “Dies ist ein Test” ersetzt. Als ich die Seite aktualisiert habe, habe ich immer noch keine Änderung in der Ausgabe gesehen.

Zu diesem Zeitpunkt vermutete ich, dass irgendein Cache irgendwo gegen mich arbeiten musste. Ich habe das W3 Total Cache Plugin deaktiviert, den Cache meines Browsers gelöscht (ich benutze Chrome) und Apache neu gestartet. Ich lud die Seite erneut ein, sah aber keine Veränderung.

Als Experiment habe ich nun die Tags geändert, um zu lesen und neu zu laden. Diesmal sah ich die Veränderung.

An diesem Punkt dachte ich, OK, cool, ich brich endlich den Cache durch. Ich änderte die Zeile zurück zu: This is a Test , aber sah ausgegeben New Grocery Coupons & Online Coupons Added Daily .

Da bin ich also. Ich habe buchstäblich keine Ahnung, was das Problem an diesem Punkt sein könnte.

Hier ist noch eine seltsame Sache zu wissen. Als ich die </code> Tags zu <code></code> <em>änderte</em> und die Änderung in Zeile 12 sah, änderten sich die <em>nächsten</em> title tags (unter channel-> item-> title in Zeile 22) zu <code><title>New Grocery Coupons & Online Coupons Added Daily – also die lästige Ausgabe aus Zeile 12!

Meine beste Vermutung ist, dass es einen WordPress-Filter gibt, von dem ich nicht weiß, dass er mit dieser Ausgabe arbeitet, aber ich bin an dieser Stelle wirklich ratlos. Jedes Licht, das Sie auf dieses Problem casting könnten, würde sehr geschätzt werden!

Danke im Voraus.

Solutions Collecting From Web of "Bizarres Problem mit benutzerdefinierten RSS-Vorlage"

Zunächst einmal, als Hintergrund Kontext, nach viel Googeln, das ist die Methode, die ich gewählt habe, um die RSS-Vorlage zu erstellen. (Wenn es einen besseren Ansatz gibt, bin ich ganz Ohr):

Das zweite Mal kommt das heute auf. 🙂 Du solltest add_feed() ( source ) verwenden, um dieses Zeug mit der Seite zu emulieren.

Was die Frage betrifft, die Sie beschreiben, bin ich mir nicht sicher. Wenn das Caching involviert ist, würde ich versuchen, Dinge auf einer separaten lokalen Testinstallation zu testen.