WordPress 默认是会带有 Feed 输出功能的,也就是咱们常说的 RSS。虽然是有这么个功能,但是博主我觉得并不是特别的好用,所以我根据自己的需要简单的添加了几个功能,也分享给大家看一下,既简单也能提高博客订阅用户的体验。

PS:这篇文章可能会因为博主对 Feed 的折腾而不断完善内容,目前我修改的也就一点点东西。

一、在博客 head 处输出 Feed 订阅链接

WordPress 虽然默认会输出 Feed,不过如果用户想先订阅的话,需要先知道博客的订阅地址才可以。而前面我介绍了个插件却能帮助我们快速发现网站的 Feed 订阅地址,我看了下作者的思路,貌似是通过寻找网页源代码里特定的内容来发现的 Feed 地址的。然后我找了一圈,发现现在很多订阅平台之所以能在用户只输入网站网址的情况下发现 Feed 订阅地址,也是靠的寻找源代码里的特定内容做到的,貌似是有着类似的标准,在网页源代码里输出如下这样的内容就会被识别发现出来:

<link rel="alternate" type="application/rss+xml" title="24点半 » Feed" href="https://24dian30.com/feed">

然后我找了找发现 WordPress 其实是可以直接帮我们来做到的,不需要弄什么复杂的代码,只是这个功能默认没设置而已。要做到在 head 里输出像上面这样的内容,只需要简单的在自己主题 function.php 里加入下面这么一行代码就可以做到了:

add_theme_support( 'automatic-feed-links' );

添加之后,你会发现不仅你的主页源代码里会显示整站的订阅地址,在文章页也会有文章的订阅地址,分类页会有分类的订阅地址什么的。

二、给 Feed 源里的文章添加特色图片

现在大家都喜欢没事配个图,而 WordPress 默认是不会输出文章的特色图片到 Feed 订阅源里的,虽然用户的订阅工具一般会在文章有图片时自动给你匹配一张图片当缩略图用,但是如果你的订阅输出设置的不是全文输出,大概率订阅源文章里只有简介不会有图片的存在,自然就不会显示出来缩略图了。因此,我觉得很有必要给自己的网站订阅源里文章加上特色图片,有就显示,没有就不显示,这样在用户的订阅工具里看起来的效果会好很多。

针对这个功能有很多种的做法,可以使用插件也可以使用代码,在说这个之前,我们先要了解下在 Feed 订阅工具里显示特色图片的两种方法(代码)。

一种是前面说的,因为订阅工具一般会查找订阅文章里是否有图片存在,如果有就会匹配第一张来当作文章的特色图片(缩略图)来用,因此要给订阅源插入特色图片的一种做法就是额外给订阅源的文章插入一张顶部图片链接,让订阅工具选择这张图片当特色图片用。这种做法好处是兼容性好,但是如果你选择的特色图片本身在订阅源里有插入的话,会出现重复图片的问题(因为插入的图片实际是在文章的 content 里的,content 存储的是文章的内容),同时这也不是标准的做法。

另外一种是通过 RSS 2.0 额外的一个标签<media:content>,来设置订阅文章的特色图片,这个算是比较合理的做法,但是有一定的兼容问题,当然现在已经 2019 年了,兼容问题应该基本不存在了,所以我下面也主要是针对第二种方法来说的。

1.代码的实现方法

将下面这段代码复制到你主题的 function.php 文件里就可以了:

// Add namespace for media:image element used below
add_filter( 'rss2_ns', function(){
  echo 'xmlns:media="http://search.yahoo.com/mrss/"';
});

// insert the image object into the RSS item (see MB-191)
add_action('rss2_item', function(){
  global $post;
  if (has_post_thumbnail($post->ID)){
    $thumbnail_ID = get_post_thumbnail_id($post->ID);
    $thumbnail = wp_get_attachment_image_src($thumbnail_ID, 'medium');
    if (is_array($thumbnail)) {
      echo '<media:content medium="image" url="' . $thumbnail[0]
        . '" width="' . $thumbnail[1] . '" height="' . $thumbnail[2] . '" />';
    }
  }
});

上面的代码不是我自己写的,来自 StackExchange 的好心网友 Vick,大家可以自己到这个问答链接里去看。还有别的实现方式(方法一的做法):https://wordpress.stackexchange.com/questions/159397/how-to-add-image-to-wordpress-rss-feed-with-no-plug-in

这里特别提醒一下,Vick 设置的输出特色图片尺寸大小为 medium,你可以自己修改上面那段代码里最后的’medium’来实现输出别的尺寸,如改为 large(不要随便写个名字,尺寸设定是 WordPress 多媒体设置里的那些名称):

$thumbnail = wp_get_attachment_image_src($thumbnail_ID, 'large');

PS:以上代码仅会影响到 RSS2 格式的 Feed 输出内容,由于一些历史原因 WordPress 是支持多种 Feed 格式的,最常用的就是 RSS2 了。默认的 WordPress Feed 地址为 example.com/feed,这个地址默认输出的便是 RSS2 格式的,但这里还是要提醒各位注意下,如果你喜欢用别的格式的订阅地址的话。

2.插件的实现方法

用插件来给 Feed 插入特色图片就比较简单了,WordPress 插件中心中能做到的挺多的,毕竟不是什么特别复杂的功能,这里我就不全部都说一遍了,提供下搜索关键词“RSS Image”大家可以自己去搜然后找自己喜欢的安装。

另外呢这里再介绍两个我找到的能支持方法二插入特色图片的插件吧,分别是:SB RSS feed plusRSS Featured Image。前者支持我前面说的方法一和方法二两种方法插入特色图片到订阅源里(没看过代码,不清楚除了 RSS2 是不是还会在别的格式插入),但是很久没有更新了(还能用);后者是一个非常简单的插件,只支持方法二(只会给 RSS2 格式的输出插入特色图片),没有自定义选项,唯一的一个自定义选项修改插入的图片尺寸需要自己输入代码来修改,胜在简单直接且好用。

三、给 Feed 添加 WebSub/PubSubHubbub 支持

我相信知道 WebSub/PubSubHubbub(后面就用现如今的正式名称 WebSub 来说吧)的人肯定不多,作为既是一名博客博主又是一名普通订阅者的我来说,真心希望大家能了解一下这个东西。

WebSub 我自己理解就像是一个类似中继节点的存在,当你的博客有更新时,博客会告知这个中继节点你更新了文章,而在订阅用户那边,如果使用的 Feed 阅读器支持这项功能,那么他的阅读器就不用过一段时间就来拉取下你的 Feed 源以确保没错过更新内容,而是中继节点会主动推送通知给订阅者那边,告知订阅的博客已经更新了,然后阅读器才会来拉取更新内容。

这个功能的好处我个人认为有两点,一是可以及时的获得博客的内容更新信息,二也能一定程度上减轻 Feed 源站的压力,毕竟不用频繁的来拉取源站 Feed 了。不过嘛这个功能虽然是 W3C 的推荐标准,但因为现在 Feed 本身不像以前那么流行了所以也不是什么热门的东西,我就发现我自己订阅的很多博客都是没有支持的,我的博客24点半支持不过订阅的人也基本没有就是了。_(:з)∠)_

废话不多说了,还是跟大家说说怎么让 WordPress 用上吧,目前我只找到了两个插件,可以让 WordPress 支持,用起来也没有什么难度,给大家推荐一下吧,一个就叫 WebSub/PubSubHubbub,另外一个有官方背景,不过长久没更新了,因为也不是什么特别需要更新的功能所以目测最新版还是能使用的,叫 PuSHPress

这两个插件有一点不同的地方,PuSHPress 这个看说明是让 WordPress 本身来当中继的,所以不需要依赖其它第三方的服务直接安装就可以使用了。而 WebSub/PubSubHubbub 自带有第三方的中继可以使用,也可以手动添加自己的中继,功能上来说要稍微强一些。

嘛,更具体的大家感兴趣自己安装上试试就知道了,两个的功能都很简单应该也不存在什么使用障碍。

结束

暂时就给大家介绍这三种优化小技巧了,其实真要说起来并不是什么特别重大的改变,但我觉得确实能提高用户体验,建议大家还是弄一弄呀。当然了,针对文章加入特色图片这个,如果你是网站主不介意的话,其实只需要选择全文输出订阅源就没问题了的。

说点什么
欢迎评论!不想写邮箱的请填写 [email protected] 哦!
支持Markdown语法
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...