Feed 是 Web 2.0 时代一种重要的网站阅读手段,它让读者可以订阅自己喜欢的网站,不需要登录网站就可以了解到网站的更新。现在的 Rss 阅读器正在接受这微博、微信和 APP 的巨大冲击,Google Reader 已然失去,鲜果也在转型,但起死回生的 TheOldReader 和新生的 Feedly 还是打破了这汪死水,让我们能看到更多优秀的 RSS 服务。到目前为止,对于热爱阅读和交流的人来说,Rss 订阅任然不失为现代阅读的一个好方法,一个可靠和值得保留的信息获取方式。
WordPress 作为一个流行的博客程序,默认提供 FEED 订阅接口,其原始 FEED 地址有:
http://example.com/?feed=rss
http://example.com/?feed=rss2
http://example.com/?feed=rdf
http://example.com/?feed=atom
这几种地址分别针对不同的协议进行优化,以适应不同的订阅设备。不过大多数人会使用 WordPress 的固定链接,于是 FEED 地址会变成这几个:
http://example.com/feed/
http://example.com/feed/rss/
http://example.com/feed/rss2/
http://example.com/feed/rdf/
http://example.com/feed/atom/
可是这些地址显示的内容并不友好,于是人们就采用第三方网站烧录 Feed,不但提供友好的订阅界面,还方便统计订阅人数,本博客也曾介绍了Feed 托管服务商的选择与使用技巧。不过,目前许多人都使用的 FeedSky 和 FeedBurner 都有着让人担忧的未来,所以今天我们就来动手美化自己的原生 Feed 地址,将不友好的 XML 文档转换成可读性更强的 HTML。
一、美化 WordPress Feed
1、下载 feed.zip(点击下载),解压后得的 feed 文件夹,修改里面的 transform.xsl,找到下面一句:
<xsl:variable name="ThemesUrl">http:// 你的网站 /wp-content/themes/ 你的主题</xsl:variable>
将其中提示的内容替换成你的 wordpress 网站对应的;
2、复制一份 WordPress 目录里 /wp-includes/feed-rss2.php 文件作为 Feed 模板,命名为 feed.php 并放到刚才的 feed 目录下;修改第一个<?php……….?> 最后的部分,并填充 FireFox 等浏览器所需的大于等于 512 个字节的内容:
echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; echo '<?xml-stylesheet href="'.get_stylesheet_directory_uri().'/feed/transform.xsl" type="text/xsl"?'.'>'; ?> <!-- // 根据 https://developer.mozilla.org/en-US/docs/XSL_Transformations_in_Mozilla_FAQ 的解释,FireFox 等浏览器必须在 rss 或 feed 标签之前有大于等于 512 个字节的内容,才会使用自定义 XSLT,否则将会使用浏览器自带的 XSLT 覆盖。所以请在这里凑够 512 个字节内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容 -->
文件编码记得用 UTF-8 NO-BOM 格式的,这个是我用的(feed.php),可以直接下载使用或参考;
3、将修改好的 feed 文件夹放到你的主题目录下,然后修改主题目录中的 functions.php,合适位置添加如下语句:
// 自定义 Feed 输出 remove_all_actions( 'do_feed_rss2' ); add_action( 'do_feed_rss2', 'simgrey_feed_rss2', 10, 1 ); function simgrey_feed_rss2( $for_comments ) { $rss_template = get_template_directory() . '/feed/feed.php'; // 根据情况修改,仅当地址为 /feed/ 时才使用自定义 feed 输出 if( $_SERVER["REQUEST_URI"] == '/feed/' && file_exists( $rss_template ) ) load_template( $rss_template ); else do_feed_rss2( $for_comments ); }
这里的限定条件是:只有在输出最新文章且格式为 RSS 2.0 时才使用自定义模板;
4、大工告成,赶快到你的 feed 地址下去看看吧。
二、订阅统计 WordPress Feed
经过美化的 WordPress Feed 具有原生 Feed 稳定高效的特点,但却无法像第三方 Feed 托管平台那样提供强大的 Feed 订阅统计情况,包括数量,访问量等等。那么能不能像用 Google Analytics 或百度统计那样查看网站统计的方法来查看 Feed 情况呢?
要搞清楚这个问题,首先应该了解,出于安全的考虑,大部分阅读器都不支持 RSS Feed 中使用 JavaScript 代码,因此 RSS Feed 的流量统计和网站的统计是不一样的,它无法使用类似 Google Analytics 这样基于 JavaScript 代码的网站统计工具,不过,方法还是有的,就是使用图片方式统计代码。
目前了解的几个支持图片方式的免费网站统计服务有:量子恒道、SiteMeter和StatCounter,其中量子恒道就是原来的雅虎统计,提供不可见的统计图片,速度快并且有中文界面,推荐大家使用。
注册量子恒道添加网站后,我们就可以在获取统计代码的界面找到统计图片的信息。
然后,我们编辑 WordPress 主题目录下的 functions.php 文件,在合适的位置上添加如下内容(图片地址换成上面步骤看到的信息):
/* Feed 订阅统计 */ function feed_copyright($content) { if(is_feed()) { $content.= "<br>"; $content.= '<img src="https://img.tongji.linezing.com/ 换成你的 /tongji.gif" border="0"/>'; } return $content; } add_filter ('the_content', 'feed_copyright');
当订阅的文章被点击打开时,统计工具就可以通过统计图片的加载来进行统计,不打开则不统计。这样,你在统计工具中看到的 IP 数,PV 数都是有效阅读过文章的人,而那些只订阅了博客而没有阅读的“死用户”是不会被统计进来的。另外,相比 FeeBurner 和 FeedSky 等的统计,这些专业的统计工具统计的内容更加详尽全面,可以查看访问入口分析,访问地区分析等等。
参考文章:
1、用 XSLT 美化 WordPress 的 Feed 输出
2、如何统计 Feed 订阅情况?
欢迎转载,转载请注明出处:蔓草札记 » WordPress Feed 美化及订阅统计