一直很懒,不想去弄后台的东西,每天看着官方新闻发呆。我不是不喜欢官方博客的新闻,我每天期盼着发现一点新的东西,但每天都是那几条消息,终于忍不住了,决定换掉。

于是,WP新闻变成下面的东西了。

我的订阅

这个网站叫做SMASHING MAGAZINE,,有趣的东西不少,不过我只关注WP的文章,所以只订阅了WP目录。

PS.发现后台这个news模块其实不怎么耗内存,但如果去掉后台最近评论那个widget,内存消耗量一下子少了1M多。

我就是爱联想,很多问题不是网上发现的而是脑袋里蹦出来的,什么都是现学现卖。

通常,我要么隐藏RSS订阅要么只是懒懒的写上“域名/feed”这个地址,最近勤快了一下,换上了feedsky,但如果访客只对某一个目录或者标签下的文章感兴趣怎么办?那么为每个目录和标签单独输出feed地址就很有必要了。

为每个目录输出RSS地址

总结一下有三个方法:

1. wp_list_categories()

这个函数不仅仅列出所有目录,还允许输出每个目录的feed地址,只需要添加feed或者feed_image参数,feed_image优先级高于feed。

 

或者

 

2. get_category_feed_link()

输出某一个分类的rss地址,需要知道该分类的ID

 

假设要输出ID为5的分类的RSS


3. 直接硬编码输出

说它是硬编码并不正确,确切的说WordPress的RSS地址结构是确定的,因此写出来也一样,就像每个博客的rss地址是“域名/feed”一样。

例如,WP分类的feed地址是

http://www.example.com/?cat=42&feed=rss2

WP标签(tag)的feed地址是

http://www.example.com/?tag=tagname&feed=rss2

http://www.example.com/?tag=tagname&feed=rss2

如果开启了飞默认的固定链接,则上面地址变为

http://example.com/category/categoryname/feed

http://example.com/tag/tagname/feed

也就是分类或者标签地址后面加上feed,就是该分类或者目录的rss地址。

可以自己写一段HTML代码,输出希望显示的RSS地址,放在text widget中,就像下面这种效果

Category Specific RSS feed Subscription

但我并不想再多加一个widget,于是,就有了下面的问题

在分类或者标签页面输出单独的RSS地址

假设访问WordPress目录(地址:http://www.solagirl.net/category/wordpress),我希望用户能看到该目录的订阅地址。

1. 找到该分类的ID

function sola_getCurrentCatID(){
  global $wp_query;
  $cat_ID = get_query_var('cat');
  return $cat_ID;
}

2. 输出RSS地址

$link = get_category_link( sola_getCurrentCatID() );
$title = '订阅分类 { '.single_cat_title("", false).' } 下的文章';
echo '

';

将代码放到分类模板页面里(category.php)里就可以自动为每个分类输出该分类的RSS地址。如果你访问WordPress目录就可以看到标题右侧有一个rss图标。

为了方便起见,将这段代码写成模板标签,在需要的地方引用。代码放在主题的functions.php中。

//获取当前目录ID
function sola_getCurrentCatID(){
  global $wp_query;
  $cat_ID = get_query_var('cat');
  return $cat_ID;
}
//获取当前tag ID
function sola_getCurrentTagID(){
  global $wp_query; 
  $tag_ID = get_query_var('tag_id');
  return $tag_ID;
}

//为分类或者标签输出单独的RSS地址
function sola_specificRSS(){
	echo '

'; if ( is_tag() ){ $link = get_tag_link( sola_getCurrentTagID() ); $title = '订阅标签 {'.single_tag_title("", false).'} 下的文章'; } else if ( is_category() ){ $link = get_category_link( sola_getCurrentCatID() ); $title = '订阅分类 { '.single_cat_title("", false).' } 下的文章'; } echo '

'; }

在tag.php或者category.php引用模板标签即可

//category.php

合理利用is_admin()函数

is_admin()判断当前是否在管理员界面(Dashboard),有些脚本,例如上面输出rss地址的脚本只在前台使用,如果能将这段脚本放到一个单独的文件中,例如specific-rss.php,然后在functions.php中这样引入

if ( !is_admin() ){
   include dirname(__FILE__).'/specific-rss.php';
}

这样做可以区分哪些脚本是给后台用的,哪些是给前台用的,不会因为错误的引入js脚本把后台搞乱,也能节省内存。

2条留言

    1. 恩,如果网站文章很多,涉及的东西也多,这个就有用处

评论功能已关闭