让WordPress RSS/Feed订阅数据延迟发布,附RSS技巧集锦

时间:2022-05-05
本文章向大家介绍让WordPress RSS/Feed订阅数据延迟发布,附RSS技巧集锦,主要内容包括一、RSS 数据延迟、二、添加全文链接、三、添加文章版权、四、输出特色图片、五、禁用 Feed 功能、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

前些天给博客添加了一个百度是否收录的查询功能,今天无意点开了一篇显示已收录的查询链接,发现查到的居然不是我的博客博文,而是和我博客一直就有合作的一览 1001 相关文章:

文章既然显示百度已收录,那在百度搜索该文章链接就有结果才对,可是搜索发现:

居然找不到?代码是不会欺骗我的,那就只有一个解释:已收录的文章被百度 K 掉了!进一步可知,和一览 1001 的合作采集有脱不了的干系!个人猜测一览采集发布并且被百度收录后,百度立马就把我的收录给 K 了。

想了想如何解决,对于一览的合作采集,对博客增加外链还是不错的,所以直接禁止 feed 的做法是不合理的,而且我博客也有少数邮箱订阅用户。最终,我觉得可以采用延后 feed 结果的方法,让一览只能采集到我前些天的数据,而不是实时数据。

百度了一下,还真有关于 RSS 延迟发布的代码!

下面的代码来自王发利博客

一、RSS 数据延迟

代码作用:设置 Rss Feed 延迟输出文章数据

//RSS Feed 延迟
function publish_later_on_feed($where) {
    global $wpdb;
    if ( is_feed() ) {
        $now = gmdate('Y-m-d H:i:s');
        //数据延迟2天显示,也就是feed只会输出截止到前天的数据,可根据实际需求自行修改
        $wait = '2';
        $device = 'DAY';
        $where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";
    }
    return $where;
}
add_filter('posts_where', 'publish_later_on_feed');

使用方法:将以上代码添加到主题目录下的 functions.php 文件的最后一个 ?> 之前即可。

Ps:小小的吐槽一下,王兄博客的代码居然被转码了还不知道,玩代码的意识还不到位呀!不过还是感谢他的分享!

下面附加分享一些我搜集自网络的其它 RSS 技巧:

二、添加全文链接

这个方法适合在 WordPress 阅读设置中设置了 Feed 仅输出摘要内容的情况:

此时可以在 functions.php 里面加上如下代码,让 Feed 摘要中出现全文链接:

/** RSS 中添加查看全文链接 **/
function feed_read_more($content) {
    return $content . '<p><a rel="bookmark" href="'.get_permalink().'" target="_blank">查看全文</a></p>';
}
add_filter ('the_excerpt_rss', 'feed_read_more');

三、添加文章版权

这个方法适合在 WordPress 阅读设置中设置了 Feed 输出全文内容的情况:

此时可以在 functions.php 里面加上如下代码,让 Feed 内容输出文章版权申明:

//feed输出自定义版权
function feed_copyright($content) {
        if(is_feed()) {
                $content.= "<blockquote>";
                $content.= '<div>  &raquo; 转载请保留版权:<a title="张戈博客" href="http://www.chenguangblog.com/">张戈博客</a> &raquo; <a rel="bookmark" title="'.get_the_title().'" href="'.get_permalink().'">《'.get_the_title().'》</a></div>';
                $content.= '<div> &raquo; 本文链接地址:<a rel="bookmark" title="'.get_the_title().'" href="'.get_permalink().'">'.get_permalink().'</a></div>';
        $content.= '<div>  &raquo; 如果喜欢可以:<a target="_blank" title="张戈博客" href="http://list.qq.com/cgi-bin/qf_invite?id=71a2f28dff63348c301ded982b0a083857be253891e9bae8">点此订阅本站</a></div>';
                $content.= "</blockquote>";
        }
        return $content;
}
add_filter ('the_content', 'feed_copyright');

版权内容可自行定义,注意 PHP 和 HTML 代码的正确性即可!

这种方法可简单对付那些使用工具自动采集 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 wp_disable_feed() {
	wp_die( __('<h1>抱歉,本站不支持订阅,请返回<a href="'. get_bloginfo('url') .'">首页</a></h1>') ); 
}
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 技巧了,喜欢的可以去试试!