内容纲要

前言

在文章之前已经提到了RSS是什么?之后又提到了在WordPress中如何设置RSS Feed? 今天来说说如何optimize RSS feed。

后台设置

RSS feed设置(optimize RSS feed) 可以通过后台》设置》阅读进行设置feed输出的篇数和类型 RSS优化设置

Feed 输出自定义内容

在feed中输出自定义内容可以通过the_content这个filter钩子轻松实现,我们要做的就是使用is_feed()这个条件标签来判断只在Feed输出内容。例如下面的例子:(下列代码添加到当前主题的functions.php文件)

function custom_rss_feed_content($content) { //定义新函数
    if(is_feed()) { //只在Feed中执行
        $output = '欢迎访问 https://www.wpdaxue.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 = '<p><span style=font-weight:bold;text-shadow:0 1px 0 #ddd;>声明:</span> 本文采用 <a rel=nofollow href=http://creativecommons.org/licenses/by-nc-sa/3.0/ title=署名-非商业性使用-相同方式共享>BY-NC-SA</a> 协议进行授权 | <a href='.home_url().'>'.get_bloginfo('name').'</a><br />转载请注明转自《<a rel=bookmark title=' . $post_title . ' href=' . $post_link . '>' . $post_title . '</a>》</p>';
        $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 只输出简码(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 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订阅
function wp_disable_feed() {
    wp_die( __('抱歉,本站不支持订阅,请返回<a href='. get_bloginfo('url') .'>首页</a>') );
}
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);
//移除评论feed输出
add_action('do_feed_rss2_comments', 'wp_disable_feed', 1);
add_action('do_feed_atom_comments', 'wp_disable_feed', 1);
//移除head中输出的feed链接
remove_action( 'wp_head', 'feed_links_extra', 3 ); 
remove_action( 'wp_head', 'feed_links', 2 );

Feed 输出自定义文章类型的内容

// 添加自定义文章类型到RSS Feed输出
function custom_feed_request( $vars ) {
 if (isset($vars['feed']) && !isset($vars['post_type']))
  $vars['post_type'] = array( 'post', 'product', 'book' );
 return $vars;
}
add_filter( 'request', 'custom_feed_request' );

按照上述步骤即可完成RSS的设置与优化

最后修改日期:2020年7月13日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。