一直很懒,不想去弄后台的东西,每天看着官方新闻发呆。我不是不喜欢官方博客的新闻,我每天期盼着发现一点新的东西,但每天都是那几条消息,终于忍不住了,决定换掉。
于是,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中,就像下面这种效果
但我并不想再多加一个widget,于是,就有了下面的问题
在分类或者标签页面输出单独的RSS地址
假设访问WordPress目录(地址:https://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 '.'/img/social-balloon-rss-icon.png)
';
}
在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脚本把后台搞乱,也能节省内存。
分目录订阅这个功能不错啊,把用户体验优化了一大步!
恩,如果网站文章很多,涉及的东西也多,这个就有用处