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

建站笔记1年前 (2023)发布 小萝卜头
2,391 0 0

前些天给博客添加了一个百度是否收录的查询功能,今天无意点开了一篇显示已收录的查询链接,发现查到的居然不是我的博客博文,而是和我博客一直就有合作的一览 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="https://zhang.ge/goto/aHR0cDovL3d3dy5jaGVuZ3VhbmdibG9nLmNvbS8=" 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="http://zhang.ge/goto/aHR0cDovL2xpc3QucXEuY29tL2NnaS1iaW4vcWZfaW52aXRlP2lkPTcxYTJmMjhkZmY2MzM0OGMzMDFkZWQ5ODJiMGEwODM4NTdiZTI1Mzg5MWU5YmFlOA==" target="_blank">点此订阅本站</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 技巧了,喜欢的可以去试试!

收录于{张戈博客} 原文链接原文链接

© 版权声明

相关文章

暂无评论

暂无评论...