WordPress的Feed

本篇文章并不是用来介绍WP的Feed的新手教程,更不会是歌颂WP的优秀功能,而是批判WP对Feed的近乎可憎的'优秀'易用程度

简单的说,WP用户都多少会发现WP的Feed遍布任何角落,附件,文章,页面,分类,链接分类,标签,每个东西都有一个Feed,而我并不希望它存在,确切的说,它很让我反感,因为无论你希望用户订阅你哪一个固定的Feed,你都没办法阻止,你都没办法统计到底有多少用户订阅了哪些不该订阅的,在统计外的Feed,这很讨厌,所以我决定砍死它,结果发现砍死它的结果无论你希望砍死哪一只,你都会让它全军覆没,从此不再提供Feed功能给你

WP对Feed的支持真的是够彻底,而且彻底到让我恨它,因为我没有任何办法定制它,首先说如果你希望打开一个WPblog的Feed有这样几个办法

/post|page|cat|tag|att|/feed/
/post|page|cat|tag|att|/feed/feed|rdf|rss|rss2|atom/
/wp-commentsrss2.php
/wp-atom.php
/wp-feed.php
/wp-rss.php
/wp-rss2.php
/wp-rdf.php
当然还有最重要的,/index.php?********&feed=
最后这个可以让你在任何单个feed文件被删除,rewrite被屏蔽或破坏的情况下,任意的显示你想要的feed

然后我考虑一件事,如何迫使用户订阅我希望的Feed?!

之后我尝试过了,最后发现我尝试了一个没可能性的方向..

WP对Feed请求的处理过程是由rewrite.php匹配最后决定要输出什么内容的,我想文章看到这里,除了第一天用WP的都知道/任意内容/feed/可以显示一个feed内容,而这个feed四个字母,是WP内定的,不允许更改,它是$WP_Rewrite->$feed_base, 唯一的定制方式是在插件中载入$WP_Rewrite来修改它, 而对于分类,你却可以在后台随意定制, 但即便你载入了$WP_Rewrite, 并且修改了它, 但你还需要让这份新规则被添加到数据库中-_-, 必须先清空数据库里的规则才能生效

接着, 即便把/post/feed/feed灭了,/post/rss|rss2|rdf|feed/都可以完好的显示, 原来还有个$WP_Rewrite->feeds, 最后我真的败了, 我发现即便我改了这些, 最终, 用户是可以用index.php访问一切的...

完全没有任何定制可言, 我真的很无奈, 最终, 我选择从核心破坏feed, 让所有人都看不到它, 而不是改变成我想要的路径或结构, 然后选择一个白名单来输出feed内容, 再交给我自己的程序来选择性的输出特定的feed给用户

接下来的事情就是让用户来考虑是否订阅这个网站的新feed地址了

Update: 2008.05.06

也许的确是我要求太苛刻了, WP提供了generate_rewrite_rules和一个rewrite_rules_array

前一个用于用户自己添加新的URL地址规则,第二个用于定制现有规则,但由于定制好的规则是一个大面积的数组,而这个东西我觉得更应该提供一个片段的修改能力,所以一直没碰它, 今天尝试了处理它, 最后把自己搞烦了, 把大把的规则自己重写, 还不如全删-_-, 但无论如何, 最终我都无法阻止index.php直接访问到feed, 所以还是放弃了这个玩法, 转而从feed的模板载入这个阶段添加filter, 限制来访的人, 除了特定ip/ua之外, 都被跳转到特定地址

This entry was posted in WordPress. Bookmark the permalink.

4 Responses to WordPress的Feed

  1. Black-Xstar says:

    feed多的确是麻烦事,我以前用pjblog的时候就发现有很多人喜欢订阅我的分类feed
    现在我尽量要求大家用绑定到feedsky的那个域名
    或者用默认的/feed这个地址,已经被转向到feedsky了

    至于其他,我就没办法了,随便吧……

  2. MoontoC says:

    feed多的确是麻烦事,我以前用pjblog的时候就发现有很多人喜欢订阅我的分类feed
    现在我尽量要求大家用绑定到feedsky的那个域名
    或者用默认的/feed这个地址,已经被转向到feedsky了

    至于其他,我就没办法了,随便吧……

    所以还是统一下好, 过两天我发个毁灭wp的feed的插件

  3. Amai says:

    最后“毁灭”的那词儿看我一哆嗦~用词还真生猛~
    wp的feed一直以来让人不爽,但相比之下外包的feed服务似乎更不爽,不是feedsky三天两头怠机,就是feedburner三天两头撞墙~
    反正我索性把主要的feed全摆上了,爱订哪个订哪个~省得闹心~

  4. Anonymous says:

    有时的确要毁灭FEED。。。

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>