wordpress通过自定义分类法实现筛选功能。
最近在用wordpress建站。要求对某个分类下的文章再进行筛选,普通的标签功能已经满足不了这个需求。查阅了很多,最终找到用wordpress的自定义分类法来实现对文章的筛选功能。下面详细讲解。 先看图:
这个图是我想要实现的功能,即对文章除了分类,标签外,增加一个按颜色来筛选的功能。
Step 1:创建一个自定义分类法
在functions.php中添加如下代码:
//自定义分类法
add_action( 'init', 'create_color' );
function create_color() {
$labels = array(
'name' => _x( 'color', 'taxonomy general name' ),
'singular_name' => _x( 'color', 'taxonomy singular name' ),
'search_items' => __( 'Search color' ),
'all_items' => __( 'All colors' ),
'parent_item' => __( 'Parent color' ),
'parent_item_colon' => __( 'Parent color:' ),
'edit_item' => __( 'Edit color' ),
'update_item' => __( 'Update color' ),
'add_new_item' => __( 'Add New color' ),
'new_item_name' => __( 'New color Name' ),
);
register_taxonomy('color','post',array(
'hierarchical' => false,
'labels' => $labels
));
}
函数标签解释:
register_taxonomy这个wordpress函数就是用来创建一个分类法,先解释一下传递给这个函数的参数。
color是这个分类法的内部名(这个可以自己命名)
post告诉wordpress哪个文章类型将使用这个分类法,在这个例子里,我们用的是wordpress默认的post文章类型,你也可以将它替换成page或者你自定义的文章类型,这样就可以将分类法用在一般的文章和页面上。也可以同时运用在多个文章类型上(通过数组)。
array(…)是传递给register_taxonomy的最后一个参数,它告诉wordpress分类法如何运行。具体来解释一下array里面的内容:
hierarchical是一个布尔值,用来确定分类法是否有等级,即是否有子分类。对于颜色(color)分类这个例子而言,我没有设置子分类,所以我设置false。
labels是输出这个分类法的一些相关信息(由create_color函数的$labels来定义)。
add_action( ‘init’, ‘create_color’ )是指wordpress初始化时,会调用create_color这个函数。
Step 2:将自定义分类法添加到文章
颜色(color)这个分类法已经创建完成了,现在登陆到wordpress的后台,在文章下(之前用的是post类型,所以默认会在文章下),可以看到一个新的链接color,点击它就可以进入如下图的页面,你可以在此进行新增、编辑、删除color等操作。