chrisallenlane
  • 0
Новичок

Необычная проблема с пользовательским шаблоном RSS

  • 0

Я пытаюсь создать собственный шаблон RSS-канала для сайта, которым управляет моя компания, и столкнулся с очень запутанной ошибкой, о которой хотелось бы узнать.

Во-первых, в качестве фонового контекста, после долгих поисков в Google, это метод, который я выбрал для создания шаблона RSS. (Если есть лучший подход, я весь в ушах):

  1. Скопируйте /wp-includes/feed-rss2.php в папку моей темы
  2. Укажите этот файл в качестве шаблона страницы и измените его по желанию.
  3. В бэкэнде WordPress создайте новую страницу, использующую приведенный выше шаблон.

Оттуда вы получаете XML-канал, отформатированный для RSS. Этот процесс, кажется, работает нормально, даже если он немного неуклюж.

Вот проблема, которая у меня возникла. Выведенный XML выглядит примерно так:

<?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> 


...

(Я обрезал вывод для релевантности.)

Когда я пытаюсь просмотреть вышеуказанное в Google Chrome, я получаю следующее сообщение об ошибке:

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

Мое предположение состоит в том, что амперсанд вызывает проблемы, хотя, честно говоря, на данный момент это все еще предположение.

OK. Так вот тут начинаются странности. Я вошел в шаблон PHP и вставил этот заголовок в тег CDATA. Как ни странно, я не увидел, что это изменение отразилось на выводе, когда я обновил страницу.

Пытаясь сделать что-то попроще, я просто убил весь PHP в шаблоне внутри тегов заголовков и заменил его статическим текстом, например «Это тест». Когда я обновил страницу, я все еще не видел никаких изменений в выводе.

В тот момент я заподозрил, что какой-то кеш где-то должен работать против меня. Я отключил плагин W3 Total Cache, очистил кеш браузера (я использую Chrome) и перезапустил Apache на всякий случай. Я снова перезагрузил страницу, но изменений не увидел.

Сейчас в качестве эксперимента поменял <title></title> теги на чтение <test></test> и перезагрузил. На этот раз я увидел изменения.

Итак, в этот момент я подумал: «Окей, круто, наконец-то я разобрался с кешем». Я изменил строку обратно на: <title>This is a Test</title>, но увидел вывод <title>New Grocery Coupons & Online Coupons Added Daily</title> .

Так вот где я. Я буквально понятия не имею, в чем может быть проблема на данный момент.

Однако следует знать еще одну странную вещь. Когда я изменил <title> теги на <test> и увидел изменение, сделанное в строке 12, следующие теги заголовков (в канале->элемент->заголовок в строке 22) изменились на чтение — т. е. неприятный вывод из строки 12!<title>New Grocery Coupons & Online Coupons Added Daily</title>

Мое лучшее предположение состоит в том, что есть какой-то фильтр WordPress, о котором я не знаю, который работает с этим выводом, но я действительно в тупике. Любой свет, который вы, ребята, могли бы пролить на эту проблему, был бы очень признателен!

Заранее спасибо.

Share
  1. Во-первых, в качестве фонового контекста, после долгих поисков в Google, это метод, который я выбрал для создания шаблона RSS. (Если есть лучший подход, я весь в ушах):

    Второй раз это всплывает сегодня. 🙂 Вы должны использовать add_feed() ( источник ), а не эмулировать этот материал со страницей.

    Что касается проблемы, которую вы описываете, я не уверен. Если задействовано кеширование, я бы попытался протестировать материал на отдельной локальной тестовой установке.

    • 0

Оставить ответ

You must login to add an answer.