wordpress的RSS优化技巧

文章目录

添加WordPress Feed订阅(For站长或主题制作者)

作为一个WordPress站长,给你的网站添加Feed地址或订阅按钮是十分必要的。

WordPress的feed类型

WordPress 包含了多种类型的Feed地址,它们都可以通过 bloginfo() 来调用,以下就是各种类型Feed地址的调用方法:

RDF/RSS 1.0 feed地址:

<?php bloginfo(‘rdf_url’); ?>

RSS 2.0 feed地址:

<?php bloginfo(‘rss2_url’); ?>

Atom feed地址

<?php bloginfo(‘atom_url’); ?>

评论RSS 2.0 feed 地址

<?php bloginfo(‘comments_rss2_url’); ?>

一般情况下,我们常用的是 RSS 2.0 的Feed地址,最后一种是WordPress整站的评论更新的Feed地址,用来给读者订阅网站的评论的。当然,如果你想让读者订阅单独一篇文章的评论,你可以使用下面的函数来获取单一文章的评论订阅地址,这个函数通常添加在主题的 single.php 文件:

<?php post_comments_feed_link(‘RSS 2.0’); ?>

添加RSS订阅链接的方法

如果你想为你的网站添加一个RSS订阅地址,可以使用类似下面的代码(一般是添加到主题的 header.php 、sidebar.php 或 footer.php):

订阅本站

或者你可以使用一个订阅图标来替换“订阅本地”这几个字,可以使用类似下面的代码:

RSS Feed

订阅WordPress站点(For 网站读者)

如果你想订阅一个WordPress站点,而这个站点上没有显示订阅链接或图标,如何订阅呢?或者你只想订阅这个网站的某一部分的内容,又该如何?

WordPress有一个固定链接(permalinks)设置功能,可以设置网站的链接样式,如下图所示(如何设置固定链接?)。使用不同的链接样式,网站的Feed地址就可能不同。

img

rssfeed1

从上图我们可以将固定链接分为“默认结构”和“其他结构”两类,之所以这样分,是因为“默认结构”和“其他结构”是产生两种不同的feed地址:“默认结构”一般的feed地址是在后面添加 &feed=rss2 ,其他结构一般在链接后面加 /feed/ 。

只要你打开一篇WordPress文章,链接地址中含有[ ?p= ]字样的,说明是“默认结构”,反之为“其他结构”。

下面是各种类型的订阅地址样例,你只需将地址添加到你的feed阅读器中订阅即可。

1.订阅整站的文章

默认结构:http://www.viet98.com/?feed=rss2

其他结构:http://www.viet98.com/feed/

2.订阅某个分类(category)的文章

默认结构的分类地址一般为 /cat=分类id ,其他结构一般为 /category/分类别名(slug) (有些使用插件删除了 /category ,比如 WordPress大学就如此,删除方法)

比如分类“WordPress主题”的id为 3 ,别名为 themes

默认结构:http://www.viet98.com/?cat=3&feed=rss2

其他结构:http://www.viet98.com/category/freemoney/feed/

3.订阅某个标签(tag)的文章

默认结构的标签地址为 /?tag=标签名 ,其他结构为 /tag/标签名 ,比如标签为“phpmyadmin”的feed地址

默认结构:http://www.viet98.com/tag/wangzhan&feed=rss2

其他结构:http://www.viet98.com/tag/wangzhan/feed/

5.订阅某个作者的文章

默认结构的作者页面链接为 /?author=作者id ,其他结构为 /author/作者用户名

默认结构:http://www.viet98.com/?author=1&feed=rss2

其他结构:http://www.viet98.com/author/jiang/feed/

6.订阅整站的评论

默认结构:http://www.viet98.com/?feed=comments-rss2

其他结构:http://www.viet98.com/comments/feed/

7.订阅单篇文章的评论

默认结构的feed地址为 /?feed=rss2&p=文章id ,其他结构为 文章地址后加/feed

默认结构:http://www.wpdaxue.com/?feed=rss2&p=4157

其他结构:http://www.viet98.com/4157.html/feed

RSS Feed 基本设置

在WordPress后台 > 设置 >阅读,可以设置 Feed 输出的篇数和类型,如下图:

img

rssfeed2

Feed 输出自定义内容 www.vietnam99.com/soc/giaitri/

在feed中输出自定义内容可以通过 ‘the_content’ 这个 filter 钩子轻松实现,我们要做的就是使用 is_feed() 这个条件标签来判断只在 Feed 输出内容。例如下面的例子:

function custom_rss_feed_content($content) { //定义新函数

if(is_feed()) { //只在Feed中执行

$output = ‘欢迎访问 http://www.viet98.com'; //添加自定义内容

$content = $content . $output ; //重新设定文章内容 $content

}

return $content; //返回最后的文章内容

}

add_filter(‘the_content’,’custom_rss_feed_content’); //通过钩子挂载该函数

注意:

\1. 代码中的 $content 是WordPress预留的 文章内容变量,$output 是我们自定义的变量,用来添加自定义内容;

\2. $content . $output 表示在文章原文的后面添加 $output 的内容,如果你想在原文前面添加,可以改为 $output . $content

\3. $output 后面的自定义内容可以是 HTML 代码,比如下面的例子:

//Feed输出版权信息

function wpdaxue_feed_copyright($content) {

if(is_feed()) {

$post_title = get_the_title(); //获取原文标题

$post_link = get_permalink($post->ID); //获取原文链接

$output = ‘

声明: 本文采用 BY-NC-SA 协议进行授权 | ‘.get_bloginfo(‘name’).’
转载请注明转自《‘ . $post_title . ‘

‘;

$content = $content . $output ;

}

return $content;

}

add_filter (‘the_content’, ‘wpdaxue_feed_copyright’);

Feed 输出自定义字段

如果你在文章中使用了自定义字段,要在Feed中输出的话,可以使用 get_post_meta() 函数获取自定义字段的值。假设你要调用的是 copyright 这个自定义字段,可以使用下面的代码:

//Feed 输出自定义字段

function fields_in_feed($content) {

if(is_feed()) {

$post_id = get_the_ID(); //获取文章ID

$output = get_post_meta($post_id, ‘copyright’, true) ; // 获取字段 copyright 的值

$content = $content.$output;

}

return $content;

}

add_filter(‘the_content’,’fields_in_feed’);

Feed 输出文章特色图像

//Feed 输出文章特色图像(缩略图)

function rss_post_thumbnail($content) {

global $post; //查询全局文章

if(has_post_thumbnail($post->ID)) { //如果有特色图像

$output = get_the_post_thumbnail($post->ID) ; //获取缩略图

$content = $output . $content ;

}

return $content;

}

add_filter(‘the_excerpt_rss’, ‘rss_post_thumbnail’);

add_filter(‘the_content_feed’, ‘rss_post_thumbnail’);

在 Feed 中排除分类

//在Feed中排除某些分类

function exclude_cat_feed($query) {

if(is_feed()) {

$query->set(‘cat’,’-1’); //排除ID为 1 的分类

return $query;

}

}

add_filter(‘pre_get_posts’, ‘exclude_cat_feed’);

如果要排除多个分类,将第 4 行修改为下面的代码:

$query->set(‘cat’,’-1, -4, -7’); //排除ID为 1、4、7 的分类

Feed 只输出简码内容

//Feed 只输出简码(shortcode)内容

function rssonly_content( $atts, $content = null) {

if (!is_feed()) return “”;//如果不是Feed,不返回内容

return $content;

}

add_shortcode(‘rssonly’, ‘rssonly_content’); //注册简码 rssonly

在写文章的时候,使用简码 [rssonly] 包含的内容,只会在Feed输出:

禁用所有 Feed 订阅

如果你不愿意让别人订阅的你网站,可以使用下面的代码:

//禁用Feed订阅

function wp_disable_feed() {

wp_die( __(‘抱歉,本站不支持订阅,请返回首页‘) );

}

add_action(‘do_feed’, ‘wp_disable_feed’, 1);

add_action(‘do_feed_rdf’, ‘wp_disable_feed’, 1);

add_action(‘do_feed_rss’, ‘wp_disable_feed’, 1);

add_action(‘do_feed_rss2’, ‘wp_disable_feed’, 1);

add_action(‘do_feed_atom’, ‘wp_disable_feed’, 1);

将以上代码放到您的funcions.php这个文件中就可以.

原地址:http://m.sohu.com/a/249669451_401297