缙哥哥的博客
与你分享我的点点滴滴生活

防RSS采集,让WordPress RSS/Feed订阅自定义延时发布推送

280G全国流量的电信星海卡仅需29元/月,长期可续该套餐,随时可注销

缙哥哥自己就比较喜欢使用RSS订阅各位大佬的网站,来充实自己的知识、见识和本事,结果发现也有人利用RSS来采集缙哥哥的文章。为此,去年缙哥哥找了王发利和张戈的相关教程,给自己的WordPress RSS/Feed数据内容推送推迟了1天,而又有小伙伴反馈与站点内容相差很久,遂又改为6个小时,今天记录与大家分享。

WordPress Rss Feed 延时输出

老样子,在主题的functions.php文件中添加以下代码:

//防RSS采集,让WordPress RSS/Feed订阅数据自定义时间延时发布推送 - https://www.dujin.org/14132.html
function publish_later_on_feed($where) {
    global $wpdb;
    if ( is_feed() ) {
        $now = gmdate('Y-m-d H:i:s');
        //数据延迟1天显示,也就是feed只会输出截止到前天的数据,可根据实际需求自行修改
        $wait = '1';
        $device = 'DAY';//其他时间单位可参考https://www.dujin.org/14132.html中的说明
        $where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";
    }
    return $where;
}
add_filter('posts_where', 'publish_later_on_feed');

$wait = '1';引号中的1为设置的时间数字,后面的$device = 'DAY';引号中的DAY为设置的时间段单位。缙哥哥认为在这设置wait参数1,device参数DAY,即在发布文章1天后输出 Rss Feed 常规网站已然足够。当然,考虑到某些文章的时效性,缙哥哥还是决定将其改为 6 小时,你也可以根据自己的需要设置时间间隔。//SECOND,MINUTE, HOUR, DAY, WEEK, MONTH, YEAR 分别是秒,分,时,日,周,月,年。替换单位,更换数字即可。

Rss Feed订阅不显示某分类的设置

老样子,在主题的functions.php文件中添加以下代码:

//Rss中排除某个分类输出 - https://www.dujin.org/14132.html
function exclude_cat_feed($query) {
  if(is_feed()) {
    $query->set('cat','-6,-66,-666'); //排除ID为 6,66,666 的分类
    return $query;
  }
}
add_filter('pre_get_posts', 'exclude_cat_feed');

如何查看WordPress分类ID

在WordPress仪表盘文章分类目录,当你的鼠标点击任意分类名称下的编辑链接,就会进入相关分类页面,则地址栏其中有一段category&tag_ID=666,而这666就是你的WordPress分类目录ID。有些主题因为经常需要用到分类目录ID,还会贴心的帮你列出来。

添加Rss Feed查看全文链接及版权

这里需要注意的是,需要在WordPress仪表盘设置阅读,将对于feed中的每篇文章显示设置为摘要(这不废话嘛,全文还查看全文个屁啊),同时也不推荐设置为全文输出,用来防止他人使用RSS/Feed进行采集复制。

老样子,在主题的functions.php文件中添加以下代码:

//RSS中添加查看全文链接 - https://www.dujin.org/14132.html
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');

RSS全文模式下输出文章版权链接

怎么设置看上图及说明,不重复BB了。老样子,在主题的functions.php文件中添加以下代码:

//RSS全文模式下输出文章版权链接 - https://www.dujin.org/14132.html
function feed_copyright($content) {
        if(is_feed()) {
                $content.= "<blockquote>";
                $content.= '<div> &raquo; 转载请保留版权:<a title="缙哥哥的博客" href="https://www.dujin.org/" target="_blank">缙哥哥的博客</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="//www.dujin.org/14132.html" target="_blank">点此订阅本站</a></div>';
                $content.= "</blockquote>";
        }
        return $content;
}
add_filter ('the_content', 'feed_copyright');

Feed输出WordPress特色图片(缩略图)

一般来说,RSS Feed推送会显示WordPress文章中的特色图片,但是不排除部分主题或者版本不显示,那么我们就需要自己设置下。

//Feed输出WordPress特色图片(缩略图) - https://www.dujin.org/14132.html
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');

完全禁止WordPress Rss Feed输出

由于谷歌已经放弃Rss订阅,于是总有人说这个功能鸡肋、垃圾。虽然缙哥哥不这么认为,但是也还是有人想取消、禁止使用Rss Feed订阅推送。

//完全禁止WordPress Rss Feed输出 - https://www.dujin.org/14132.html
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);

add_action()为WordPress的核心还是,表示将函数连接到指定action(动作),这里(‘do_feed’, ‘wp_disable_feed’, 1); 动作就是要实现disable这个动作,输出。当然了,完全禁止直接用这个代码就可以,不需要再修改了。

缙哥哥总结

凡事都有阴阳两面,工具的作用如何看人。所以如何使用Rss订阅这个东西,就看你怎么用,合理应用一个东西,并适合自己,那将会有助于你!

赞(14) 打赏
转载请注明来源及链接:缙哥哥 » 防RSS采集,让WordPress RSS/Feed订阅自定义延时发布推送
如需 WordPress 优化加速、二次开发、托管等服务,可联系我购买付费服务:点此联系我 | 近期站内热门福利:

评论 3

评论前必须登录!

 

  1. #2

    大佬有没有,能禁止用户按f12页面跳转到其他页面的代码,拜求

    不知君3年前 (2021-05-29)
  2. #1

    这个功能不错

    把握度5年前 (2019-09-29)

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册