WordPress RSS-feeds time fix

Default featured image
ИТ и интернет експерт, инженер, предприемач, блогър и фотограф от Пловдив. Основател на OpenFest, съосновател на Trakia.Tech, няколко технологични компании и сайта за независима журналистика „Тоест“. Фен на WordPress, книгите и музиката. Вярва, че можем да направим света по-добър.

Вашият отговор на yovko Отказ

Коментирате като гост.

  1. Отделно проблемът с RSS feeds, когато локализираш WordPress, тъй като изкарва името на месеца според самия локал. За целта допълнителен нулев параметър към mysql2date() функцията върши прекрасна работа…

  2. Много благодаря за „публичния отговор“ и на мен ще ми бъде полезен (до някъде). Дървено е наистина но е чак толкова, все пак се прави 2 пъти годишно, а не всеки ден :) Ще го прежвееем някак да редактираме 2 пъти годишно един файл. Какви неща правил без да се замисляме, та това ли? :-]

  3. Само, че Валери – ти си patch-нал и на двете места функцията и така пак лъжеш горките скриптове ;) Виж pubDate на channel-секцията – времето ти е в Гринуич, а го декларираш като +0300. Това няма значение за open-culture, защото не четем датата на канала, само тази на постовете, но не знам как се отразява като цяло другаде…

  4. Точно това си мислех да променя за да видя дали в него не се крие магията, но се случи да те видя преди да пробвам. Още веднъж едно огромно благодаря за изчерпателния отговор! :)

  5. При мен с WordPress 1.2.2 и само с настройка в Options си дава правилно време на сайта и на Open-Culture. Сега видях, че всъщност в RSS файла, времето е по Гринуич, но с правилно извадени 3 часа и затови мисля, че твърдо зададения +0000 не е проблем, ако четецът разбира от часови зони ?!?

  6. В какъв смисъл времето ми е по Гринуич ? Междудругото, patch-нах wp-rss.php и wp-rss2.php така, че да взима това отместване от настройките, които ти спомена.

    Въпреки това намирам смисъл в това това отместване да е забито твърдо в PHPто: датата на публикацията се взима от MySQL във вида „2005-04-06 14:20:10“, т.е. там се съхранява без това отместването. Предполага се, че това време там съдържа отместването. Това, което трябва да се получи е, че публикациите преди „daylight saving“ трябва да са с отместване +0200, а тези след това – с +0300, а резултат всъщност е, че в RSSите всички излизат с едно и също отместване. Изходът е в базата да се съхранява и отместването.

  7. @Bashev: че не може ли да сложим една cron job веднъж на 6 месеца ;) ? Не е много трудно, доколкото ми се вижда?
    Търси +0200 или +0300 и го заменя с другото… веднъж на 6 месеца ;).

  8. Хриси, you’re welcome :)

    iko, не помня как е в 1.2.2, но в 1.5 проблемът съществува. Четецът разбира от зони, но не и когато времето e изписано по EEST, а за зона му идва +0000 (демек Гринуич), или обратното – той все пак няма гадателски способности ;)

    Валери, виж си pubDate на channel дефинициите – там имаш:

    Sat, 16 Apr 2005 20:43:39 +0300

    а после за първия item:

    Sat, 16 Apr 2005 23:43:39 +0300

    На първата дефиниция трябва да си стои +0000, защото времето ти е по Гринуич (три часа назад), а не +0300 – вгледай се хубавичко ;)

  9. В текущата svn версия на WordPress всички часове във rss feed-а са са по Гринуич. Независимо от настройките на блога.

    Това улеснява работата (и намалява странните часове на публикуване) на агрегаторите, които *не* разбират от часови зони (а такива вярвам има доста). От друга страна, това часовете да са само по Гринуич понякога ограничава *другите* агрегатори, които все пак отделят внимание на часовите разлики. Представете си, че някой иска да разбере дали нещо е пуснато вечерта или рано сутринта? Невъзможно. Просто реалното време на публикуване се губи.

    По тази причина съм съгласен с Валери, че във feed-а часът на всеки постинг трябва да бъде показван в локалната часова зона – тази, в която той е бил публикуван.

    В базата си от данни WP пази за публикациите и коментарите две времена: едното е по Гринуич, а другото е локалното – получено от това по Гринуич и потребителската настройка за разликата. Така ако в един момент решим да сменим настройката (преместим се в друга зона, дойде лято…), то постовете преди промяната няма да се повлияят от нея. За съжаление в момента явно разликата не се пази за всеки пост и ако искаме да си я пресметнем ще се набъркаме в неприятна аритметика/парсване на дати и часове.

Read Next

Sliding Sidebar