wordpress3.0正式版推出已经有一段时间了,wordpress3.0功能上相对于2.9变化不会特别大,但仍有五个重要的更新,关于wordpress3.0的新特性的介绍,想必wordpress3.0的粉丝都已经看到了,不清楚的点此,关于wordpress3.0的更新,明河就不再累述,相对于其他新特性,明河觉得自定义分类法才是wordpress3.0的最大更新,接下来明河将以一个实际例子讲解这个新特性。
明河将通过wordpress3.0的自定义分类法创建豆瓣读书中书籍信息:

实际效果:

(ps:《光年》这本书不错,推荐下O(∩_∩)O哈!样式下有出路,莫怪。)
一、什么是自定义分类法
在wordpress3.0前wordpress只有二种分类法:类别分类法(支持层级结构)和标签分类法。如下图:


但在实际应用中是不够用的,比如我希望把wordpress打造成一个书籍推荐的博客,我希望自定义几个专用于书籍的分类,比如页数、作者、出版社、出版日期等。也许有童鞋会问,直接写在文章正文不就好,直接写在正文的确可以显示,但非常不利于查询,比如我要获取春树这个作者下的所有书籍或获取2010年后出版的书籍,那就很难处理了,而自定义分类法恰恰可以解决这个问题。
二、注册自定义分类函数
跟wordpress2.9的缩略图功能一样,自定义分类函数默认是不启动的,需要你手动启动。
1、打开你主题下function.php
(如果没有就要自己手动建个)
2、注册新的自定义分类法
在function.php加入如下代码:
- /**注册新的自定义分类*/
- register_taxonomy('Author', 'post', array('hierarchical' => false, 'label' => '作者','query_var' => true, 'rewrite' => true));
这里添加一个新的自定义分类:作者
3、register_taxonomy函数详解
- register_taxonomy( 'internal_name', 'object_type', array( 'hierarchical' => {true|false}, 'label' => 'Human Readable Name', 'query_var' => {true|false}, 'rewrite' => {true|false} ) );
register_taxonomy将自动注册个新的分类法,参数说明:
- internal_name :接口名(唯一,自定义,英文)
- object_type : 在哪种内容模型下显示,post文章,page页面
- 第三个参数为数组,是对自定义分类的详细配置,参数如下:
- hierarchical :是否允许分级,(true类似文章类别,false类似文章标签)
- label :分类法的本地名
- query_var : 如果设置为‘true’,那么选择该分类法后,我们可以要求WordPress为我们选择相关的文章
- rewrite : 如果设置为‘true’,在浏览一个页面时,WordPress将会使用友好的URL地址
4、效果
刷新后台,你就会在左侧菜单发现一个“作者”选项,如下图:

点击添加新文章,你就会在右侧发现个新的分类,如下图:

与之类似我们还需要注册多个书籍的分类,代码如下:
- register_taxonomy('ISBN', 'post', array('hierarchical' => false, 'label' => 'ISBN','query_var' => true, 'rewrite' => true));
- register_taxonomy('Page', 'post', array('hierarchical' => false, 'label' => '页数','query_var' => true, 'rewrite' => true));
- register_taxonomy('Price', 'post', array('hierarchical' => false, 'label' => '定价','query_var' => true, 'rewrite' => true));
- register_taxonomy('Publish', 'post', array('hierarchical' => false, 'label' => '出版社','query_var' => true, 'rewrite' => true));
- register_taxonomy('Mount', 'post', array('hierarchical' => false, 'label' => '装帧','query_var' => true, 'rewrite' => true));
- register_taxonomy('Date', 'post', array('hierarchical' => false, 'label' => '出版时间','query_var' => true, 'rewrite' => true));
三、在文章页面予以显示
打开single.php,添加类似如下代码:
- <div class="clearfix">
- <div class="l">
- <?php
- if(has_post_thumbnail()) {
- the_post_thumbnail();
- } else {
- echo '<img src="'.get_bloginfo("template_url").'/images/no-has-thumbnail.png" />';
- }
- ?>
- </div>
- <ul class="l">
- <li><?php echo get_the_term_list($post->ID, 'Author', '<span>作者:</span>', ', ', ''); ?></li>
- <li><?php echo get_the_term_list($post->ID, 'ISBN', '<span>ISBN:</span>', ', ', ''); ?></li>
- <li><?php echo get_the_term_list($post->ID, 'Page', '<span>页数:</span>', ', ', ''); ?></li> <li><?php echo get_the_term_list($post->ID, 'Price', '<span>定价:</span>', ', ', ''); ?></li> <li><?php echo get_the_term_list($post->ID, 'Publish', '<span>出版社:</span>', ', ', ''); ?></li> <li><?php echo get_the_term_list($post->ID, 'Mount', '<span>装帧:</span>', ', ', ''); ?></li>
- <li><?php echo get_the_term_list($post->ID, 'Date', '<span>出版时间:</span>', ', ', ''); ?></li>
- </ul>
- </div>
get_the_term_list函数说明
get_the_term_list将枚举指定分类法下所有的值,第一个参数为文章id,第二个参数为分类法的接口名,第三个为前缀。
浏览页面的就会看到类似的效果:

入门篇到此结束,还有部分内容没讲解到:比如如何获取指定分类的文章,如何实现文章星级评价,明河将在日后讲解。

还在等中文版
而且怕升级后出现问题
接近完全汉化了
这功能太强大了,辛苦了,写得很详细,教程收藏了。
期待你继续写如何获取得指定分类的文章、如何实现文章星级评价、明河将在日后讲解,这些都很想用,,呵呵,只不过又要你费心了
谢谢支持,最近在写jquery插件,没弄wordpress了。关于自定义分类法高级技巧篇,日后会补上。
你的头像太个性了R=日
哈哈
……..R可以代表很多意思的,你想偏了,呵呵,我想表达的是RIA。
你好,我是http://www.segougou.com 博主。
我想跟你交换链接,不知道可以不,不换也可以互相送IP嘛。你可以加好链接到
我空间留言。
不好意思,最好是技术类博客。
没有下篇了。。。。。。期待
呵呵,刚入职,现在有很多东西要处理,没空更新博客,日后会补上,真是抱歉。
@明河共影,
如何获取指定分类的文章,如何实现文章星级评价,
这个有看头,持续关注
…….多亏limp——t同学提醒,不然这文章要太监了…..我也忘记写下文了,日后补上。
楼主 我按照你讲的一步一步做 怎么最后点“春树”找不到页面呢?望指教
谢谢楼主分享。
请教该如何在侧边栏列出所有自定义分类项目?谢谢