为WordPress设置RSS Feed延迟保护原创和隐私
建立WordPress博客,当然Rss Feed功能是必须得了解的,最近西安seo王发利博客发现更新完文章之后没有像以前一样隔日就收录,而是需要等个一两天才会被翻出来。但是在此期间,我查询我的签约网站居然在我的前面收录了,它是通过博客feed抓取文章的,因为的的feed开启的是全文,同时我的一些个人随笔和个人心情类的文章也在里面,这样甚是不好。还记得之前写过《怎么调出wordpress3.5被取消的链接管理功能》文章,于是就想在折腾一番,通过延迟Rss Feed输出时间和排除某些分类在feed中输出来优先让博客在被转载前收录和保护一些自己不想过多传播的信息。所以,我名此文为“为wordpress设置RSS Feed延迟保护原创和隐私”!下面来看看怎么样去设置。
第一、设置Rss Feed延迟输出文章
打开的你博客主题中的functions.php,一般在themes主题文件下的主题包里,如你的主题是WangStyle,那么你的functions.php文件就在WangStyle文件夹中找。找到文件之后,通过ftp下载,用DW或notepad打开,在 “ ?> ”前加入如下代码:
//设置Rss Feed延迟输出文章function publish_later_on_feed($where) {global $wpdb;if ( is_feed() ) {// timestamp in WP-format$now = gmdate('Y-m-d H:i:s');// value for wait; + device$wait = '2'; // integer$device = 'DAY'; //SECOND,MINUTE, HOUR, DAY, WEEK, MONTH, YEAR// add SQL-sytax to default $where$where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";}return $where;}add_filter('posts_where', 'publish_later_on_feed');代码详解:
$wait = '2';为设置的时间数字,后面的$device = 'DAY'; 为设置的时间段单位。我在这设置wait参数2,device参数DAY,即在发布文章两天后输出rss feed 。当然,你还可以根据自己的需要设置时间间隔。//SECOND,MINUTE, HOUR, DAY, WEEK, MONTH, YEAR 分别是秒,分,时,日,周,月,年。替换单位,更换数字即可。
第二、排除某分类在Rss Feed输出
同样还是在functions.php中 “ ?>”前加入以下代码:
//Rss中排除某个分类输出function exclude_cat_feed($query) {if(is_feed()) {$query->set('cat','-8,-401,-70'); //排除ID为 8,401,70 的分类return $query;}}add_filter('pre_get_posts', 'exclude_cat_feed');代码详解:
在$query->set('cat',' ');添加你想被排除的分类id,如又多个分类,可以用英文下的逗号隔开,记得分类id前家“-”。上段代码“$query->set('cat','-8,-401,-70'); //排除ID为 8,401,70 的分类”中,我排除的是id分别为8,401,70的三个分类。至于分类id,可在wordpress后台分类处查看,最简单的方法就是在后台将鼠标移至分类目录上,看页脚的链接中“category&tag_ID= ”中的ID等于多少,这个就是分类id。当然,你也可以鼠标右键复制链接地址来查看,如我的其中一个为http://wangfali.com/wp-admin/edit-tags.php?action=edit&taxonomy=category&tag_ID=8&post_type=post 所以,排除中就为-8 .
第三、完全禁止Rss Feed输出
方法同上,在functions.php文件中的“?>”前加入以下代码:
//禁用WordPress 中的RSS Feedsfunction wp_disable_feed() {wp_die( __('抱歉,本站不支持订阅,请返回首页') );}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这个动作,输出。当然了,完全禁止直接用这个代码就可以,不需要再修改了。
本文小结:
为wordpress设置RSS Feed延迟保护原创和隐私只是个人遇到的一些问题,在处理问题的过程中的一些心得,分享出来,希望遇到和我一样的朋友,既不想关闭feed,又不想过早地文章被转载,那就采用第二个方法吧。