<译>10 Useful RSS-Tricks and Hacks For WordPress 10个在WordPress下有用的RSS技巧和修改
作者 Jean-Baptiste Jung
原文 http://www.smashingmagazine.com/2008/12/02/10-useful-rss-hacks-for-wordpress/
译 Donald
RSS是一项非常简单同时非常强大的技术。如今,RSS是Blog内容联合的事实标准,它被同时广泛应用于个人和商业环境中;比如,在Blog中。而且因为这些Blog中的很大一部分是运行于WordPress,我们将在本文中涉及到一些(也许)相对而言不为人所知但是有用的RSS相关技巧和修改,希望藉由这些技巧可以帮助你更有效的使用RSS — 而不用使用一些不必要和臃肿的WordPress插件。
让我们看看10个有用但不为人所知的WordPress RSS技巧。这篇文章的每个部分提出一个问题,建议一个解决方案以及对这个解决方案的解释,这样不仅解决了你的RSS相关问题,同时让你了解你究竟在做什么,据此,你可以确定你的WordPress主题仍然在你的控制之中,而并没有被一些不安全的源代码充斥。
1.当你的新文章通过RSS发布时,控制它

问题. 你有没有过当发表文章时突然发现了一个错误?当然,你可以编辑它,但是还有个问题:这篇文章已经在你的RSS feed里发布了。为了避免这样的问题,使用下面的代码来给文章发布和发布到RSS feed之间创建一个延迟。
解决方案. 复制下面的代码到你的主题的functions.php文件中来应用修改。如果你的主题不包含这个文件,创建即可。
function publish_later_on_feed($where) {
global $wpdb;
if ( is_feed() ) {
// timestamp in WP-format
$now = gmdate('Y-m-d H:i:s');
// value for wait; + device
$wait = '5'; // integer
// http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timestampdiff
$device = 'MINUTE'; //MINUTE, HOUR, DAY, WEEK, MONTH, YEAR
// add SQL-sytax to default $where
$where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";
}
return $where;
}
add_filter('posts_where', 'publish_later_on_feed');
Code explanation代码解释. 上面的代码会在文章发布到Blog和出现在RSS feed之间制造一个5分钟的延迟。如果你想修改延时的长短,请修改第九行的$wait的值。
2. 将WordPress Feed重定向到FeedBurner Feeds上。

问题. 初级Blogger们常常是这样的:通常只有在他们看到很多其他Blog都在使用FeedBurner的服务,和认识到这个工具是多么有用和酷之后才会使用它。 他们注册和开始使用FeedBurner,但是他们的早期读者们却已经订阅了WordPress缺省的Feed。
另一个问题: 你经常修改你的主题吗?如果答案是”是”,你肯定厌倦了把每个bloginfo(‘rss2_url’)都替换为你的FeedBurner Feed地址的工作。
解决方案. 对上述两个问题的解决方案很简单:使用服务器重定向。
- 创建你的.htaccess文件备份,它在你的服务器的根目录。
- 编辑.htaccess文件并添加下面的代码。别忘了把代码中的Feed地址替换成你自己的。
# temp redirect wordpress content feeds to feedburner RewriteEngine on RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC] RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC] RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds.feedburner.com/wprecipes [R=302,NC,L]
- 保存文件,完事儿。
代码解释. 每当有人点击指向 “http://www.yourblog.com/feed的链接时,他/她会被重定向到http://feeds.feedburner.com/yourblog。这样你就永远不会丢失你的RSS订阅者,或者即使你一天修改你的主题两次,也不用再手工编辑你的RSS feed地址了。
来源:Redirect WordPress feeds to FeedBurner via htaccess (Redux)
How to: redirect WordPress RSS feeds to FeedBurner with .htaccess
3. 添加广告(或任何内容)到你的RSS Feed

问题. 让RSS Feed赚钱现在已经成为很普通的一件事,很多blog所有者都在利用这项技术将他们的收入最大化。 利用FeedBurner,你可以添加Adsense到你的Feed中,但是你需要至少500个订户并且不能再使用除了Feedburner提供的Adsense之外的任何其他广告才能启用它。
解决方案. 当然,还是有办法把其他的广告插入到你的RSS feed之中的。比如,你可以专门为你的RSS订阅者准备一个指向免费WordPress主题的链接
通过下面的几个简单步骤来达到这个目的:
- 编辑你的主题的functions.php文件。如果你的主题不包含这个文件,创建之。
- 将下面的代码复制到你的functions.php文件中:
Have you visited WpRecipes today?
'; return $content; } add_filter('the_excerpt_rss', 'insertAds'); add_filter('the_content_rss', 'insertAds'); ?> - 保存文件。现在你就可以在你的RSS feed中显示广告啦!
代码解释. 我见到过很多类似的修改,但是它们全部需要你编辑WordPress的核心文件来达到同样的效果。当然,编辑WordPress核心文件是个非常不好的主意,因为你需要在每次升级Blog之后再次编辑这些文件。而这次的这个替代方案使用了add_filter() 这个WordPress功能来向RSS feed中插入内容,而不用编辑任何核心文件。
来源:How to: insert ads in your RSS feed
WordPress, ajouter du contenu dans son flux RSS !
4. 为Feed阅读器排版你的图片

问题. 你花费了大量的时间写文章和排版来让它们看起来整洁又美观。在你的Blog上看这些内容真是帅呆了。但遗憾的是,当文章出现在Google Reader或是其他RSS阅读器上时,它就不是这回事儿了。
解决方案. 这是由于大多数feed阅读器都将图片直接插入到文本中导致的:

为了避免这个问题的出现,添加一个CSS class让图片以一个区块的方式显示。WordPress提供内建的class”center“:

来源:How to format images for feed readers
5. 为你的每篇文章准备一个单独的Feed

问题. 当一篇文章有大量的评论时,对读者来说加入讨论是非常困难的事。大多数WordPress用户并不清楚这个问题,但我们的最佳Blog引擎其实有一个内建的功能来为每篇文章的评论提供一个RSS feed。
解决方案. 其实,这并不能算是严格意义上的修改或是什么别的:实现给特定文章提供一个RSS feed,只需使用comment_rss_link() 功能:
来源:WordPress how to: provide an RSS feed for the comments in each post
6. 从你的RSS Feed中排除分类
问题. 你是否使用了一个博客分类来让读者了解你的网站新闻,或是你的Blog的有一个分类对其余的内容来说一点用也没有?如果是,那么把它包括在你的RSS feed中就不是一个好主意。
解决方案. 怎样从你的RSS feed中去掉一个分类:
- 首先,找到你要排除掉的分类的数字ID。如果你不知道怎么找到一个特定分类的ID,你可以先看看这篇文章。
- 当你知道了你要从RSS feed中排除的ID,编辑你的主题的functions.php文件。如果它不存在,创建之。
- 将下面的代码复制进去:
function myFilter($query) { if ($query->is_feed) { $query->set('cat','-5'); //Don't forget to change the category ID =^o^= } return $query; } add_filter('pre_get_posts','myFilter'); - 保存文件,搞定!
代码解释. 这次修改实际上和之前说的那个一样:创建一个自动以的功能来排除那个你不想让它出现在RSS feed中的类别,然后使用非常有用的add_filter() 功能来让它在这个WordPress核心功能pre_get_posts() 上提交。
来源:Excluding posts from your WordPress feed
How to: exclude categories from your RSS feed
7. 在你的WordPress Blog上显示任意RSS

问题. 你是否有好几个Blog,或者你还管理着一个论坛?如果是,你可能需要在你的WordPress Blog上显示各种RSS feed。
解决方案. 很多插件都能实现这个功能,但是其实没必要用它们。WordPress有一个可以利用的内建RSS 阅读器,比如,在你的Dashboard上显示新闻。你要做的就是把它用到你的主题上。
- 将下面的代码复制到你的主题中的任何地方(我个人将它放到了侧边栏之中,页脚也行,或者,放到页面模板里面):
- 保存,搞定,就这么简单!
代码解释. 首先我们从WordPress核心中把rss.php文件包括进来。这个文件允许我们使用wp_rss() 功能,此功能有两个参数,一个是RSS feed的地址,另一个是要显示的RSS条目的数量。
来源:How to: Display any RSS feed on your WordPress blog
8. 使用指定分类RSS Feeds

问题. 很多Blog都在谈论大量不同的话题:设计,变成,Blog技巧等等。你是否遇到过一个你只喜欢其中一个分类文章的Blog?如果是,你绝对应该考虑为你自己的读者准备各分类单独的Feed。
解决方案. 你应该会喜欢订阅TheGridSystem的工具部分。分类地址是:
http://www.thegridsystem.org/categories/tools/
获得这个分类的RSS feed,只需在这个URL的结尾添加/feed:
http://www.thegridsystem.org/categories/tools/feed
很简单对吧?但是我认为非常有用。
9. List RSS Feeds by Category 将RSS Feeds按分类列出
问题. 如果你喜欢上面这样的样式,你也许会想将你所有的分类feed按列表为你的读者列出。
解决方案.
- 编辑你的主题的任意文件,把你想列出的分类和它的feed编辑到任何你想放置的位置对应文件之中。
- 复制下列代码:
- 保存文件,现在你的分类就可以和它们对应的feed一起显示了!
代码解释. 这个修改只用了带两个参数的功能。第一个是feed_image,它允许我们将指定URL显示为一个feed图片。第二个参数是feed,它用来指定feed格式。
10. 干净的去掉RSS Feeds

问题. 比如你在把WordPress作为一个CMS来用,用来管理你的在线文件夹或是你的公司网站。在这种情况下,RSS feed就不再那么有用了。有些人也许会想移除它。
解决方案. 我看过网上很多”修改”是说,你只需移除WordPress核心文件wp-settings.php中的include。我并不认为你需要编辑核心文件。取而代之的,下面的修改会完成这件事。只需将下面的代码复制到你的主题的functions.php中:
function fb_disable_feed() {
wp_die( __('No feed available,please visit our homepage!') );
}
add_action('do_feed', 'fb_disable_feed', 1);
add_action('do_feed_rdf', 'fb_disable_feed', 1);
add_action('do_feed_rss', 'fb_disable_feed', 1);
add_action('do_feed_rss2', 'fb_disable_feed', 1);
add_action('do_feed_atom', 'fb_disable_feed', 1);
关于作者
这篇文章的作者是Jean-Baptiste Jung,一个26岁的比利时Blogger。他在两处写博,一处是WpRicepes上写关于WordPress的,另一处则是在Cats Who Code上写任何有关于博客和编程的文章。你可以通过Follow Jean的Twitter来和他联系。
本人严正声明:Cuptool分类/WordPress分类/COMODO分类文章均为原创,在全世界只有一个作者。本人是该分类文章的唯一合法代表。自古以来本人一直对该分类文章行使主权。该分类文章的标题出处是文章正文不可分割的一部分,任何企图转载此分类文章不留出处,或恶意采集修改该分类文章的行为,都必将遭到包括中国人民在内的全世界人民的反对!各族人民反对文章标题出处与正文分裂、维护原文统一、维护原文稳定的决心是坚定不移的,任何破坏原文完整性、恶意采集转载的图谋都是不得人心的,是注定要失败的。
如需转载请按照 署名-非商业性使用-禁止演绎方式,并请注明: 转载自作甚@ZUOSHEN.COM
本文链接地址: <译>10 Useful RSS-Tricks and Hacks For WordPress 10个在WordPress下有用的RSS技巧和修改


沙发?
嗯,从上午发文到现在的很长一段时间处于无法发表评论状态,我也是刚发现的…哈哈…中午换了个反垃圾插件,结果连我也发不了评论了,真囧
呃,原来如此,我说呢 :)
这篇文章我好像见别人翻译过……
嗯,是滴。不过再翻一遍也不是坏事
恁么地了?你有意见??!!!
这个挺实用的~
嗯,都是很简单实用的小技巧
提起RSS,rss订阅已经让我快要疯掉了。信息太多。
嗯,打开阅读器铺天盖地的未读文章也是挺麻烦的
这篇文章很有看头 呵呵
还是那句:smashingmagazine出品必属佳品
是啊,Smashing Magazine的文章都非常不错
油长也不来道个喜!
油长叫你去论坛领豆子呢!
看我对你多好!记得多上MM报答我的大恩大德!
以后一定多贴MM~
恩,有些反垃圾评论确实有点过份了,我记得我在一个博客的留言板里申请友情链接,一直无法提交,说是有非法信息,我一个一个词的尝试,结果发现所谓的非法词汇竟然是:com.cn,我郁闷……
我现在一直在找准确率高且不给评论者添麻烦的反垃圾手段,现在用的这还行…至少最近没人再反映发不了评论了
靠,俺怎么又来了,都是MM惹的祸!发克
最近吃肉多了,想过来看看有没有什么新鲜的蔬菜
蔬菜啊,嗯,最近得找找。这两天打算写点正经的文章。我也是个正经人。
你这贴的代码有问题,至少第三条的好多代码似乎被吞掉了…
别提了,我这一旦在所见即所得和源代码编辑方式之间一切换就要有这个高亮的代码消失,太囧了…所以,代码部分请参照原文…
估计是尖括号的问题,要用转义的,就是 < 这样的,呵呵
btw,我给你发 trackback 还是不显示啊…
trackback被Simple Spam Filter挡住了。哈哈。一会儿我顶住压力再去修改一下文章。怕了…
晕,转义符被转义了…… 是这样的: & l t ; (把中间的空格去掉)
嗯,又编辑了一下,这回好象是好了…