分类法就是对内容进行分类的方法,WordPress 提供了两种分类的方法,一种叫 category,也就是分类,另一种叫 tag ,就是标签。他们之间有一点不同,分类可以拥有层级关系,你可以创建一个分类,然后为这个分类再去创建子分类。而标签没有层级关系。
WordPress 给默认的文章内容添加了这两种分类的方法。你可以自己创建更多的分类法,然后分配到指定的内容类型上去使用。
下面我们就是之前创建的电影内容类型添加几个分类法,比如电影的类型,产地等等。
先打开网站正在使用的主题的 functions.php ... 然后输入一小段注释 ...
/*
* 自定义分类法 - 电影类型
*/
下面我们可以自己定义一个函数,在这个函数里,可以输入一些关于创建分类法的代码。
function movietalk_custom_taxonomy_genre() {
}
函数的名称最好用主题的名称开头,后面再加上有意义的名称,custom_taxonomy 就是自定义分类法的意思,后面的 genre 是类型的意思,它是我们要创建的分类法的名称。
下面我们要把这个函数挂载到 WordPress 的 init() 函数上。
add_action( 'init', 'movietalk_custom_taxonomy_genre' ) ;
然后在我们的函数里,可以使用 WordPress 的 register_taxonomy() 函数来创建一个分类法 ...
register_taxonomy( 'genre', 'movie', $args );
在这个函数里,我们设置了一下它的三个参数,第一个参数是要注册的分类法的名称,这里我们输入的是 genre。第二个参数是把这个分类法分配给哪个内容类型去使用,这里是 movie ,也就是我们要把 genre 这个分类法,分配给 movie 这个内容类型去使用。
想分配给多个内容类型,可以把这些内容类型的名称放在一个数组里。
第三个参数是创建分类法的相关参数,在这里定义了一个叫 $args 的变量,我们可以把这些参数放在这个变量里。
在这个函数的上面,输入
$args = array(
);
在些参数在一个数组里,先设置一下 public 参数,把这个参数的值设置为真,意思就是我们要公开使用这个分类法。
'public' => true,
然后我们再来设置一下相关的标签 ...
'labels' => $labels,
这些标签我们也可以放在一个变量里,然后在上面去定义这个变量 ... 输入...
$labels = array(
);
打开资料包 xx-xx ,复制一个这个文件里的内容 ... 回到 functions.php ... 把这些代码粘贴到 $labels 这个数组里 ... 这些代码就是分别定义了 genre 这个分类法在不同地方的相关的标签文字。
如果你打算创建多语言的网站,可以把这些标签上的文字定义成可被翻译的字符 ...
现在我们就成功的创建了一个分类法,并且把这个分类法分配给了 电影 这个内容类型 ... 注意默认创建的分类法会像 WordPress 默认有标签一样 ... 如果你想创建像 分类 那样的分类法,也就是可以拥有层级关系的分类法。
我们可以把 'hierarchical' 参数设置为 true ...
在这里输入 'hierarchical' => true,
不过对于这个电影类型来说,标签式的分类法更合适一些 ... 可以先注释掉这个参数 ....
然后保存一下 ....
回到 WordPress 的管理后台 ... 点击 电影 ... 在边栏上的电影这个菜单项的下面,你会看到 类型 这个菜单项 ... 点击打开 ...
这样会打开类型这个分类法的管理界面 ... 在这里你可以添加新的类型,或者管理已有的类型。
然后点击 所有电影 ... 添加电影 ...
在电影内容的编辑界面的右边 ... 你会看到一个可以添加 类型 的区块 ...
/*
* 自定义分类法 - 电影类型
*/
function movietalk_custom_taxonomy_genre() {
$labels = array(
'name' => '类型',
'singular_name' => '类型',
'search_items' => '搜索类型',
'popular_items' => '热门类型',
'all_items' => '所有类型',
'parent_item' => null,
'parent_item_colon' => null,
'edit_item' => '编辑类型',
'update_item' => '更新类型',
'add_new_item' => '添加新类型',
'new_item_name' => '新类型',
'separate_items_with_commas' => '使用逗号分隔不同的类型',
'add_or_remove_items' => '添加或移除类型',
'choose_from_most_used' => '从使用最多的类型里选择',
'menu_name' => '类型'
);
$args = array(
'public' => true,
'labels' => $labels,
//'hierarchical' => true,
);
register_taxonomy( 'genre', 'movie', $args );
}
add_action( 'init', 'movietalk_custom_taxonomy_genre' );