<译>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-&gt;posts.post_date_gmt, '$now') &gt; $wait ";
	}
	return $where;
}
 
add_filter('posts_where', 'publish_later_on_feed');

Code explanation代码解释. 上面的代码会在文章发布到Blog和出现在RSS feed之间制造一个5分钟的延迟。如果你想修改延时的长短,请修改第九行的$wait的值。

来源Publish your feed later

2. 将Wordpress Feed重定向到FeedBurner Feeds上。

问题. 初级Blogger们常常是这样的:通常只有在他们看到很多其他Blog都在使用FeedBurner的服务,和认识到这个工具是多么有用和酷之后才会使用它。 他们注册和开始使用FeedBurner,但是他们的早期读者们却已经订阅了WordPress缺省的Feed。

另一个问题: 你经常修改你的主题吗?如果答案是”是”,你肯定厌倦了把每个bloginfo(’rss2_url’)都替换为你的FeedBurner Feed地址的工作。

解决方案. 对上述两个问题的解决方案很简单:使用服务器重定向。

  1. 创建你的.htaccess文件备份,它在你的服务器的根目录。
  2. 编辑.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]
  3. 保存文件,完事儿。

代码解释. 每当有人点击指向 “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主题的链接

通过下面的几个简单步骤来达到这个目的:

  1. 编辑你的主题的functions.php文件。如果你的主题不包含这个文件,创建之。
  2. 将下面的代码复制到你的functions.php文件中:
     <?php
    function insertAds($content) {
        $content = $content.'<hr /><a href="http://www.wprecipes.com">Have you visited WpRecipes today?</a><hr />';
        return $content;
    }
    add_filter('the_excerpt_rss', 'insertAds');
    add_filter('the_content_rss', 'insertAds');
    ?>
  3. 保存文件。现在你就可以在你的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“:

<img class="center" src="http://78.46.108.98/images/wordpress-rss-hacks/myimage.jpg" alt="This is my image" />

来源How to format images for feed readers

5. 为你的每篇文章准备一个单独的Feed

问题. 当一篇文章有大量的评论时,对读者来说加入讨论是非常困难的事。大多数Wordpress用户并不清楚这个问题,但我们的最佳Blog引擎其实有一个内建的功能来为每篇文章的评论提供一个RSS feed。

解决方案. 其实,这并不能算是严格意义上的修改或是什么别的:实现给特定文章提供一个RSS feed,只需使用comment_rss_link() 功能:

?Download download.txt
1
<?php comments_rss_link('&raquo; Comments RSS Feed'); ?>

来源WordPress how to: provide an RSS feed for the comments in each post

6. 从你的RSS Feed中排除分类

问题. 你是否使用了一个博客分类来让读者了解你的网站新闻,或是你的Blog的有一个分类对其余的内容来说一点用也没有?如果是,那么把它包括在你的RSS feed中就不是一个好主意。

解决方案. 怎样从你的RSS feed中去掉一个分类:

  1. 首先,找到你要排除掉的分类的数字ID。如果你不知道怎么找到一个特定分类的ID,你可以先看看这篇文章
  2. 当你知道了你要从RSS feed中排除的ID,编辑你的主题的functions.php文件。如果它不存在,创建之。
  3. 将下面的代码复制进去:
    function myFilter($query) {
        if ($query-&gt;is_feed) {
            $query-&gt;set('cat','-5'); //Don't forget to change the category ID =^o^=
        }
    return $query;
    }
     
    add_filter('pre_get_posts','myFilter');
  4. 保存文件,搞定!

代码解释. 这次修改实际上和之前说的那个一样:创建一个自动以的功能来排除那个你不想让它出现在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上显示新闻。你要做的就是把它用到你的主题上。

  1. 将下面的代码复制到你的主题中的任何地方(我个人将它放到了侧边栏之中,页脚也行,或者,放到页面模板里面):
    ?Download download.txt
    1
    2
    
    <?php include_once(ABSPATH.WPINC.'/rss.php');
    wp_rss('http://feeds.feedburner.com/wprecipes', 3); ?>
  2. 保存,搞定,就这么简单!

代码解释. 首先我们从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按列表为你的读者列出。

解决方案.

  1. 编辑你的主题的任意文件,把你想列出的分类和它的feed编辑到任何你想放置的位置对应文件之中。
  2. 复制下列代码:
    ?Download download.txt
    1
    
    <?php wp_list_categories('feed_image=http://www.myblog.com/image.gif&feed=XML Feed&optioncount=1&children=0'); ?>
  3. 保存文件,现在你的分类就可以和它们对应的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 <a href="'. get_bloginfo('url') .'">homepage</a>!') );
}
 
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);

来源Disable WordPress feed

关于作者

这篇文章的作者是Jean-Baptiste Jung,一个26岁的比利时Blogger。他在两处写博,一处是WpRicepes上写关于Wordpress的,另一处则是在Cats Who Code上写任何有关于博客和编程的文章。你可以通过Follow Jean的Twitter来和他联系。

本人严正声明:Wordpress分类与COMODO分类文章均为原创,在全世界只有一个作者。本人是该分类文章的唯一合法代表。自古以来本人一直对该分类文章行使着主权。该分类文章的标题出处是文章正文不可分割的一部分,任何企图转载此分类文章不留出处,或恶意采集修改该分类文章的行为,都必将遭到包括中国人民在内的全世界人民的反对!各族人民反对文章标题出处与正文分裂、维护原文统一、维护原文稳定的决心是坚定不移的,任何破坏原文完整性、恶意采集转载的图谋都是不得人心的,是注定要失败的。
如需转载请按照 署名-非商业性使用-禁止演绎方式,并请注明:
转载自作甚@ZUOSHEN.COM

本文链接地址: <译>10 Useful RSS-Tricks and Hacks For WordPress 10个在Wordpress下有用的RSS技巧和修改

相关文章

31条留言于“<译>10 Useful RSS-Tricks and Hacks For WordPress 10个在Wordpress下有用的RSS技巧和修改”

  1. JoBru 说:

    这个挺实用的~

  2. 毛毛虫 说:

    提起RSS,rss订阅已经让我快要疯掉了。信息太多。

  3. 醉倚西风 说:

    这篇文章很有看头 呵呵

  4. MY-Hou 说:

    还是那句:smashingmagazine出品必属佳品 [cusFace:48]

  5. aunsen 说:

    油长也不来道个喜!
    油长叫你去论坛领豆子呢!
    看我对你多好!记得多上MM报答我的大恩大德! [cusFace:46]

  6. ev.code.p 说:

    恩,有些反垃圾评论确实有点过份了,我记得我在一个博客的留言板里申请友情链接,一直无法提交,说是有非法信息,我一个一个词的尝试,结果发现所谓的非法词汇竟然是:com.cn,我郁闷……

    • Donald 说:

      [cusFace:31] 估计他那儿也是被迫的,让直接留链接的垃圾评论们吓坏了。哈哈。

      我现在一直在找准确率高且不给评论者添麻烦的反垃圾手段,现在用的这还行…至少最近没人再反映发不了评论了 [cusFace:20]

  7. aunsen 说:

    靠,俺怎么又来了,都是MM惹的祸!发克 [cusFace:43]

  8. 子曰 说:

    最近吃肉多了,想过来看看有没有什么新鲜的蔬菜 [cusFace:4] [cusFace:4] [cusFace:4] [cusFace:4]

  9. Betty 说:

    你这贴的代码有问题,至少第三条的好多代码似乎被吞掉了…

  10. Betty 说:

    晕,转义符被转义了…… 是这样的: & l t ; (把中间的空格去掉)

回复

(Ctrl + Enter快捷提交)

CommentLuv Enabled
[cusFace:9] [cusFace:8] [cusFace:7] [cusFace:6] [cusFace:5] [cusFace:52] [cusFace:51] [cusFace:50] [cusFace:4] [cusFace:49] [cusFace:48] [cusFace:47] [cusFace:46] [cusFace:45] [cusFace:44] [cusFace:43] [cusFace:42] [cusFace:41] [cusFace:40] [cusFace:3] [cusFace:39] [cusFace:38] [cusFace:37] [cusFace:36] [cusFace:35] [cusFace:34] [cusFace:33] [cusFace:32] [cusFace:31] [cusFace:30] [cusFace:2] [cusFace:29] [cusFace:28] [cusFace:27] [cusFace:26] [cusFace:25] [cusFace:24] [cusFace:23] [cusFace:22] [cusFace:21] [cusFace:20] [cusFace:19] [cusFace:18] [cusFace:17] [cusFace:16] [cusFace:15] [cusFace:14] [cusFace:13] [cusFace:12] [cusFace:11] [cusFace:10] [cusFace: 1]

本站使用KeywordLuv插件为评论者提供更好的SEO效果. 将你的名字以“名字@关键词”方式填到姓名框中来获得此效果。
请尽量不要使用纯表情回复,不然有可能触发Donald的人肉反垃圾信息机制...