网站建设

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

Jager · 11月10日 · 2014年 2914次已读

前些天给博客添加了一个百度是否收录的查询功能,今天无意点开了一篇显示已收录的查询链接,发现查到的居然不是我的博客博文,而是和我博客一直就有合作的一览 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 技巧了,喜欢的可以去试试!

13 条回应
  1. 香港服务器租用 2014-11-10 · 14:41

    很有用,讲解的也很仔细,希望以后继续分享这些有用的东西。
    独立IP主机 风暴来袭 优惠62% 终生3.8折,转发活动送wifi…

  2. 郑州SEO优化 2014-11-10 · 15:09

    对于wp研究的还真不多,一直用的emlog

  3. 舍力博客 2014-11-10 · 16:35

    虽然我用的不是wp,但方法确实不错,收藏一下

    • avatar
      Jager 2014-11-10 · 17:31

      舍力大神,仰慕已久,要是能帮博客联盟做个EMLOG导航插件就太妙了

  4. 8云资讯网 2014-11-10 · 21:24

    不错哈

  5. 梦轩丽人 2014-11-11 · 8:57

    没想到RSS/Feed还有这么多用法和技巧,学习了。

    • avatar
      Jager 2014-11-12 · 9:02

      没事瞎折腾

  6. 极品飞鸽 2014-11-11 · 20:31

    这个功能不错,但是晚两天有点久,一天合适

    • avatar
      Jager 2014-11-12 · 9:02

      代码是活的,想改几天就改几天。

  7. 香港服务器租用 2014-11-12 · 17:33

    每一步都讲解的很细致,对于我们这些菜鸟来说很有用。独立IP主机 风暴来袭 优惠62% 终生3.8折,转发活动送wifi…

  8. 爱软客 2016-2-26 · 11:06

    有否方法实现rss按文章更新时间排序

    • avatar
      Jager 2016-2-26 · 12:36

      默认就是按文章发布时间排序

      • 爱软客 2016-2-26 · 12:42

        我的意思是按文章更新。因为发布后你还会更改的