这个功能不是一般的蛋疼,这是我做主题以来最变态的需求。情况是这样的:(举例来说吧,例子很变态,要有心理准备)
1. 假如分类结构如下:
商品 》方便面 》统一牌
商品 》方便面 》康师傅牌
商品 》麻烦面 》统一牌
商品 》麻烦面 》出前一丁牌
商品 》不是面 》面霸牌
商品 》不是面 》康师傅牌
商品 》不是面 》爱老虎油牌
2. 产品例子(文章):
“即吃方便面”,其分类属于“主分类 》方便面 》统一牌”
“非常6+1麻烦面”,其分类属于“主分类 》麻烦面 》统一牌”
3. 要求:在点击“方便面”分类下的子分类“统一牌”这个分类时能显示“统一牌”和“康师傅牌”的分类链接,就是显示第二级分类下的所有子分类(第三级分类)
本来下面代码即可:
$cat_name = single_cat_title('',false);
$cat_id = get_cat_ID($cat_name);
$categorys=split(',',get_category_parents($cat_id, false, ',')); //这步好像多余,没测试了
$cat_id = get_cat_ID($categorys[1]);
wp_list_categories( 'title_li=&style=none&child_of='.$cat_id);
4. 问题:当点击“麻烦面”分类下的子分类“统一牌”这个分类时,因为同名,所以 get_cat_ID() 取得的 ID 号就有误了(这也是为何主题制作时一般不用分类名来获取连接什么的——分类名没有唯一性)
5. 寻求解决:我本来想,既然有“single_cat_title”这个用来获取当前分类列表的分类名函数,那么是不是有获取 ID 或者“分类别名”的类似函数呢?于是我去 WordPress 的 codex 找,怎么找都没找到此类函数,囧~
6. 解决,既然没有,那么就要看源码了,我看了“single_cat_title”函数源码,然后就自己写出了一个能在“分类文章列表页面”获取当前分类 ID 的函数,好绕口 — —'
分类页面获取当前分类的ID函数:(或许函数写的不怎么样,高手请指教纠正)
function single_term_id_by_zww( $prefix = '', $display = true ) { global $wp_query; $term = $wp_query->get_queried_object(); if ( !$term ) return; if ( is_category() ) $term_id = apply_filters( 'single_cat_title', $term->term_id ); elseif ( is_tag() ) $term_id = apply_filters( 'single_tag_title', $term->term_id ); elseif ( is_tax() ) $term_id = apply_filters( 'single_term_title', $term->term_id ); else return; if ( empty( $term_id ) ) return; if ( $display ) echo $prefix . $term_id; else return $term_id; }
使用方法跟“single_cat_title()”函数类似:
<?php single_term_id_by_zww('前缀', 显示否); ?>
上面的代码就变成如下:
$cat_id = single_term_id_by_zww('', false);
$categorys=split(',',get_category_parents($cat_id, false, ',')); //这步好像多余,没测试了
$cat_id = get_cat_ID($categorys[1]);
wp_list_categories( 'title_li=&style=none&child_of='.$cat_id);
折腾完,收工,玩游戏。
- 本文标题:WordPress函数: 分类页面获取当前分类的ID
- 本文链接:https://zww.me/archives/25399
- 发布时间:2011年03月07日 10:18
- 版权声明:除非注明,文章均为 zwwooooo 原创,转载请以链接形式标明本文地址!
变态的需求产生了变态的自定义函数!~
@林木木
变态的自定义函数产生了变态的ZWW大叔!~
@万戈
变态的ZWW大叔产生了变态的需求!~
@gsid
因为这些变态,以至于现在都不知道说什么!~
@林木木
不是骂人的话!发之前没注意,呵呵!
@林木木
嗯嗯,相当变态
@万戈
人不变态很难生存
看不懂的我,只能mark一下
@jiechic
一般很难需要
很久没吃方便面了~~
@阿修
我也很久+很少
有没有七宝一丁牌
@软件盒子
对方便面没什么研究了
看不懂 一晃而过
@邓肯
哈哈,那就“谢晃”
不过这个应该很有用。先收藏了。
@wmtimes
其实这个函数可以变很多种
我在想你写这篇文章时是不是正在吃方便面。
@SErHo
我很久不需要了,有LP还吃fbm就囧了
面>方便面>不是面>统一>算了,还是康师傅>好吧,我要来一桶
@zrqx008
哈哈哈
来学习大神们的教程
@混乱博客
只是普通的折腾者,不是神
这个需求还真不是一般人能有的,O(∩_∩)O哈哈~
@smilebull
对啊,属于稀少变态型
网页制作啊!
发现你的首字下沉在FF下杯具了
@smilebull
对,一直没去解决
呢呢呢,这个还真不是一般的蛋疼啊,看了一遍,晕忽忽的 看来非不到自己需要用到的时候,是不会那么轻易理解的。
@liveme
哈哈,的确如此,所以我用大家都需要经历的方便面来做例子
能不能给出个demo页面?
@水水
不需要,需要的看看就知道了
@zwwooooo
诱惑一下不懂的我吧
@水水
呵呵,这又不是有什么好处的
这个需求。。。一般人都不可能想到诶
@A.shun
是啊,其实是一些人不太懂变通
这个~呃 我应该不会用到 更不可能想到
@socekin
哈哈,要是我就换种方式,但对方一定要实现这个……
还是wp可扩展性强哈
@卢松松
这也是wp的成功之处
这个以后或许有用,留作参考
@yixin
应该比较少,但可以作为函数参考,然后变换
我现在看你这里连百度广告都变成“非油炸方便面机”
@闲云野鹤
百度的匹配真“厉害”
这个问题应该很常见吧?wordpress全球那么多人用就没人提过?
@我不在乎
这个就不知道了,起码随便一搜是搜不到的。