Posted in: Website/Blog

我的 RSS 与 Follow

在 Follow 中搜索 springwood,或者直接访问此处链接即可订阅我的 RSS。

搞不懂最近为什么 Follow 火起来了,不就是一个在线 RSS 阅读器吗?不过我用的 WordPress 一直是支持 RSS 的,既然如此不妨趁机涨点热度🔥好了。

正如 Follow 官网自己说的,目前还是一个 Beta 产品,所以确实 Bug 不少。下面列举一下我为了适配 Follow 进行的 RSS 修正。

无网站头像

在 Follow 中搜索 springwood,就找到了我的 RSS,但是我发现没有头像,而其他有些网站是有头像的。查看后台发现,因为我的头像是 svg 格式,不能被 Follow 识别。于是换成 png 格式之后,就可以显示头像了。如下图所示。这明显是 bug,凭什么 svg 就不是图片呢?

用户认证

采用 RSS 认证法,即在 RSS 中添加如下标签:

<follow_challenge>
    <feedId>XXXXXXXXXXXXXXXXX</feedId>
    <userId>XXXXXXXXXXXXXXXXX</userId>
</follow_challenge>

在 WordPress 里面,是通过修改主题函数 functions.php 来实现的:

// rss claim
function add_rss_claim() {
    echo '<follow_challenge>
    <feedId>XXXXXXXXXXXXXXXXX</feedId>
    <userId>XXXXXXXXXXXXXXXXX</userId>
</follow_challenge>
';
}
add_action('rss2_head', 'add_rss_claim');

保存之后就🆗了。如果想看到即时效果的话,网站不要给 feed 设置缓存。

显示缩略图

刚开始,文章缩略图无法显示,就像下面左图一样,非常丑陋。可是我看到很多其他网站是可以显示缩略图的。经过一番研究发现问题在于 RSS 的元素。

我的文章一般写得比较长,而且混合着图片、视频,不能在 RSS 中输出全文,因此每篇文章都写了“摘要”,RSS 中只有摘要。我发现我的 WordPress 的 RSS 里面,摘要是放在 <description> 元素里面的。

<item>
  <title>这是文章的标题</title>
  <description><![CDATA[这是文章的摘要]]></description>
</item>

开始我的想法是直接在摘要里面加入缩略图的链接。尝试了一下,发现其他 RSS 阅读器就能显示图片,但是唯独 Follow 不行。

研究了一下发现 Follows 遇到 <description> 元素时只会抓取文字,但是如果遇到了 <content> 元素就会抓取里面的图片(这也是 bug,凭什么其他的阅读器可以你的不行呢?),所以我需要给每个 <item> 加入一个 <content> 元素,里面包含图片和摘要。在 WordPress 里面,也是通过修改主题函数 functions.php 来实现的:

// rss post_thumbnail
function add_post_thumbnail_to_rss() {
    global $post;
    if (has_post_thumbnail($post->ID)) {
        $thumbnail = get_the_post_thumbnail($post->ID);
		$excerpt = get_the_excerpt($post);
        $content = $thumbnail . '(Abstract)' . $excerpt;
    }
	else {
		$excerpt = get_the_excerpt($post);
		$content = '(Abstract)' . $excerpt;
	}
	echo '<content:encoded><![CDATA['.$content.']]></content:encoded>
';
}
add_filter('rss2_item', 'add_post_thumbnail_to_rss');

保存。

使得修改内容立刻生效

上面修改了 RSS 的内容,但是发现在 Follow 中并不能生效。在 GitHub 的 Issue 里面发现,这需要进行这样操作。

  1. 订阅你已经认证过的自己的 RSS。
  2. 点击 Feed 列表上方的刷新按钮。此时会刷新显示修改过的内容,全局有效(也就是别人看到的也是修改过的内容)。

欢迎朋友们踊跃订阅。

Comments (5) on "我的 RSS 与 Follow"

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注