实战wordpress3.0的新功能:自定义分类法(入门篇)

发布于,归属于wordpress14个座位已被强势霸占! 共有1,109人围观    

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加入如下代码:

  1. /**注册新的自定义分类*/
  2. register_taxonomy('Author', 'post'array('hierarchical' => false, 'label' => '作者','query_var' =>  true, 'rewrite' => true));

这里添加一个新的自定义分类:作者
3、register_taxonomy函数详解

  1. 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、效果
刷新后台,你就会在左侧菜单发现一个“作者”选项,如下图:

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

与之类似我们还需要注册多个书籍的分类,代码如下:

  1. register_taxonomy('ISBN', 'post'array('hierarchical' => false, 'label' => 'ISBN','query_var' =>  true, 'rewrite' => true));
  2. register_taxonomy('Page', 'post'array('hierarchical' => false, 'label' => '页数','query_var' =>  true, 'rewrite' => true));
  3. register_taxonomy('Price', 'post'array('hierarchical' => false, 'label' => '定价','query_var' =>  true, 'rewrite' => true));
  4. register_taxonomy('Publish', 'post'array('hierarchical' => false, 'label' => '出版社','query_var' =>  true, 'rewrite' => true));
  5. register_taxonomy('Mount', 'post'array('hierarchical' => false, 'label' => '装帧','query_var' =>  true, 'rewrite' => true));
  6. register_taxonomy('Date', 'post'array('hierarchical' => false, 'label' => '出版时间','query_var' =>  true, 'rewrite' => true));

三、在文章页面予以显示

打开single.php,添加类似如下代码:

  1. <div class="clearfix">
  2.     <div class="l">
  3.         <?php 
  4.         if(has_post_thumbnail()) {
  5.             the_post_thumbnail();
  6.         } else {
  7.             echo '<img src="'.get_bloginfo("template_url").'/images/no-has-thumbnail.png" />';
  8.         }
  9.         ?>                                           
  10.     </div>
  11.     <ul class="l">
  12.             <li><?php echo get_the_term_list($post->ID,  'Author', '<span>作者:</span>', ', ', ''); ?></li> 
  13.             <li><?php echo get_the_term_list($post->ID,  'ISBN', '<span>ISBN:</span>', ', ', ''); ?></li>
  14.             <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>
  15.             <li><?php echo get_the_term_list($post->ID,  'Date', '<span>出版时间:</span>', ', ', ''); ?></li>                                                                                     
  16.     </ul>
  17. </div>

get_the_term_list函数说明
get_the_term_list将枚举指定分类法下所有的值,第一个参数为文章id,第二个参数为分类法的接口名,第三个为前缀。
浏览页面的就会看到类似的效果:

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

(如果您喜欢这篇教程,可以通过支付宝打赏我们1元哦,拜谢!)

跟作者说两句

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-? :) :( :!: 8-O 8)

14个座位已被强势霸占!

  1. 灵亦rEd

    还在等中文版
    而且怕升级后出现问题

    明河共影回复于 2010年06月25日 9:24

    接近完全汉化了

  2. 笑望书

    这功能太强大了,辛苦了,写得很详细,教程收藏了。

    期待你继续写如何获取得指定分类的文章、如何实现文章星级评价、明河将在日后讲解,这些都很想用,,呵呵,只不过又要你费心了

    明河共影回复于 2010年07月23日 2:41

    谢谢支持,最近在写jquery插件,没弄wordpress了。关于自定义分类法高级技巧篇,日后会补上。

  3. abx

    你的头像太个性了R=日
    哈哈

    明河共影回复于 2010年08月08日 9:31

    ……..R可以代表很多意思的,你想偏了,呵呵,我想表达的是RIA。

  4. 色狗狗

    你好,我是http://www.segougou.com 博主。
    我想跟你交换链接,不知道可以不,不换也可以互相送IP嘛。你可以加好链接到

    我空间留言。

    明河共影回复于 2010年08月09日 9:35

    不好意思,最好是技术类博客。

  5. limp——t

    没有下篇了。。。。。。期待

    明河共影回复于 2010年09月15日 8:40

    呵呵,刚入职,现在有很多东西要处理,没空更新博客,日后会补上,真是抱歉。

    limp——t回复于 2010年09月21日 1:52

    @明河共影,
    如何获取指定分类的文章,如何实现文章星级评价,
    这个有看头,持续关注

    明河共影回复于 2010年09月21日 9:15

    …….多亏limp——t同学提醒,不然这文章要太监了…..我也忘记写下文了,日后补上。

  6. 大弟弟

    楼主 我按照你讲的一步一步做 怎么最后点“春树”找不到页面呢?望指教

  7. 国巨代理

    谢谢楼主分享。
    请教该如何在侧边栏列出所有自定义分类项目?谢谢