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

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

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

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

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

居然找不到?代码是不会欺骗我的,那就只有一个解释:已收录的文章被百度 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 仅输出摘要内容的情况:

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

此时可以在 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 RSS/Feed订阅数据延迟发布,附RSS技巧集锦

三、添加文章版权

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

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

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

//feed 输出自定义版权
function feed_copyright($content) {
        if(is_feed()) {
                $content.= "<blockquote>";
                $content.= '<div>  &raquo; 转载请保留版权:<a title="张戈博客" href="/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="/goto/aHR0cDovL2xpc3QucXEuY29tL2NnaS1iaW4vcWZfaW52aXRlP2lkPTcxYTJmMjhkZmY2MzM0OGMzMDFkZWQ5ODJiMGEwODM4NTdiZTI1Mzg5MWU5YmFlOA==" target="_blank">点此订阅本站</a></div>';
                $content.= "</blockquote>";
        }
        return $content;
}
add_filter ('the_content', 'feed_copyright');

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

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

这种方法可简单对付那些使用工具自动采集 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');

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

五、禁用 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);

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

好了,以上就我认为比较实用的 Feed 技巧了,喜欢的可以去试试!

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇