WordPress 3 自定义分类使用教程(2/4)

分享本文:
请为本文打分

WordPress 3 中的自定义分类型可以帮助你建立功能强大的网站,而不仅仅是个博客。今天是本教程的第二部分,介绍如何使用自定义分类功能来创建一个分类体系。

昨天我们已经介绍过了,本教程分4个部分。第一部分介绍一下WordPress的自定义分类功能;第二部分介绍如何建立一个自定义分类体系;第三部分介绍如何在主题中显示自定义分类信息;第四部分介绍如何在网站中查看自定义分类的文章。

我们教程中使用的WordPress是 3.1 beta 2 测试版,主题是默认的Twenty Ten(2010)1.3 alpha 测试版。如果你使用的不是上述版本,具体代码可能略有差别。但基本影响不大。

创建一个自定义分类系统

编辑主题的 functions.php 函数文件

WordPress 3 不允许你直接在管理后台创建自定义分类。如果不用插件而建立一个自定义分类,我们需要在你使用的主题的函数文件 functions.php 中稍微编辑一下代码。并不太难——别担心。

要增加自定义分类,我们需要编辑你的主题目录中的 functions.php 函数文件。比如说,我们使用的主题是 Twenty Ten(2010),我的 WordPress 安装在一个叫做 wordpress 的目录内,那么这个函数文件 funcitons.php 就在:

[website_root]/wordpress/wp-content/themes/twentyten/functions.php 。

添加分类体系代码

我们还以前面的台式计算机为例,对内存、硬盘和操作系统增加单独的分类体系。现在我们只是简单地增加分类体系,就像是增加一个空的容器,其中没有具体的类别。别担心,我们稍后可以在WordPress控制台自己添加和管理其中的分类。

第1步:一个函数创建所有自定义分类

首先,我们需要调用一个函数,来创建所有的分类。WordPress提供的这个函数叫做 build_taxonomies 。我们在 funcitons.php 文件的底部添加这个函数:

function build_taxonomies() {
    // 将在这里添加代码
}

第2步:定义分类体系

然后又,对于我们要创建的每个分类体系,我们需要使用正确的参数来调用一个 WordPress 函数。下面就是这个函数,以及其重要参数说明:

register_taxonomy(
	'internal_name',
	'object_type',
	array(
		'hierarchical' => {true|false},
		'label' => 'Human Readable Name',
		'query_var' => {true|false},
		'rewrite' => {true|false}
	)
);

在这里:

  • internal_name: 分类体系在 WordPress 内部显示的名字,出现在数据库和模板文件中。
  • object_type: 分类体系适用于哪种内容类型。参数一般是 post, page, link ,也可以自定义的文章类型。
  • 然后是一组可选参数,这里只列出较为重要的几个,其余的可以参考WordPress开发文档中关于 register_taxonomy 的介绍
  • hierarchical: 如果是 ture,那么这个分类体系是可以分层的,类似于类别;如果是 false,那么这个分类体系是不能分层的,类似于标签。
  • label: 这个便于阅读的分类体系的标题(类似于名称,也可以当作名称来用)。可用于翻译,只不能是中文。
  • query_bar: 如果是 true,那么可以请求WordPress搜索这个分类体系。比如说,你可以搜索属于“Windows”分类体系的文章。
  • rewrite: 如果是 true ,那么这个分类体系支持 url 重写,也就是永久链接结构。比如说,属于“Windows”操作系统的文章的列表的网址可以重写为: http://yourdomain/operating_system_windows

因此,我们建立操作系统分类的代码基本上是这样的:

register_taxonomy( 'operating_system', 'post', array( 'hierarchical' => true, 'label' => 'Operating System', 'query_var' => true, 'rewrite' => true ) );

第3步:调用分类体系创建函数

我们还需要在 functions.php 文件中再增加一行代码,来执行刚刚的创建分类的 build_taxonomies 函数。我们用下面这行代码来进行函数调用:

add_action( 'init', 'build_taxonomies', 0 );

这行代码可以添加到任何地方,但是我们建议添加到 build_taxonomies() 函数上面。这样,整个代码看起来就是这样的。

// 自定义分类代码  
add_action( 'init', 'build_taxonomies', 0 );  
  
function build_taxonomies() {  
    register_taxonomy( 'operating_system', 'post', array( 'hierarchical' => true, 'label' => 'Operating System', 'query_var' => true, 'rewrite' => true ) );  
}

进一步查看 add_action 函数的用法

在自定义分类体系中添加类别

20101223-wordpress-operating-system

一旦你创建了正确地通过 functions.php 文件添加了“Operating System”分类体系,  那么它就会作为一个子项目出现在控制台“文章”栏下。点击“Operating System”,就可以来添加具体的分类了。

w-20101222-wordpress-operating-system-interface.png

现在,你就可以像管理 WordPress 类别那样,来添加和管理“Operating System”(操作系统)了。

添加更多分类体系

如果你还想要增加“RAM”(内存)和“Hard Drive”(硬盘)的分类体系,只要将以下代码加入到 functions.php 文件中即可:

register_taxonomy( 'ram', 'post', array( 'hierarchical' => true, 'label' => 'RAM', 'query_var' => true, 'rewrite' => true ) );
register_taxonomy( 'hard_drive', 'post', array( 'hierarchical' => true, 'label' => 'Hard Drive', 'query_var' => true, 'rewrite' => true ) );

添加之后,在 functions.php 文件中代码就像这样了:

// 自定义分类代码
add_action( 'init', 'build_taxonomies', 0 );

function build_taxonomies() {
register_taxonomy( 'operating_system', 'post', array( 'hierarchical' => true, 'label' => 'Operating System', 'query_var' => true, 'rewrite' => true ) );
register_taxonomy( 'ram', 'post', array( 'hierarchical' => true, 'label' => 'RAM', 'query_var' => true, 'rewrite' => true ) );
register_taxonomy( 'hard_drive', 'post', array( 'hierarchical' => true, 'label' => 'Hard Drive', 'query_var' => true, 'rewrite' => true ) );
}

在文章中使用自定义的分类体系

w-20101222-wordpress-custom-taxonomy.png

新建一篇文章,你就能够在WordPress的文章编辑器旁边看到新的自定义的分类体系。根据需要,你可以选择任何一个具体的分类给你的文章。

第二部分关于如何创建 WordPress 自定义分类的内容就介绍完了。下一部分,我们将给你介绍如何在主题中显示你已经添加的自定义分类的类别信息。

请为本文打分
分享本文:


评论: WordPress 3 自定义分类使用教程(2/4)

  • 里面有错误
    build_taxonomies() 里面,label可以是中文,这个是WP后台显示的文字,反而是internal_name不可以是中文,这个是别名

    独自流浪 2011/01/18 9:32 下午 回复
  • 你好,
    我在WP创建了两个新的文章类型,想给他们各做一个分类,现在又两个方法一种是你这篇文章所讲,还有一种是就像WP页面那样用post做分类,这两种方法都可以实现,但是我的那两个新的文章类型的个子分类是相呼应的,换个说法就是分类名称一样,不知道可不可以公用分类并且分开显示,或者用同名且id不通的分类(添加一个分类的时候另一个也生成一个分类)
    意思有点表达不清,还请见谅,不知如何才能收到回复……

    兆前 2012/07/16 4:26 下午 回复

发表一下评论

电子邮件地址不会被公开。 必填项已用*标注

Menu Title