演示效果http://www.gengu.org/tag/lol
本方法不需要自定义文章类型(模型).用系统自动的文章功能即可使用,修改简单实用.
比如我们要增加行业及分类两个自定义分类.
前台效果图
后台效果图,发表文章时,右下角会自动显示
一,在模板的functions.php中的最底部,php结束标签前面,添加如下代码
//自定义文章类型
// 搜索关键字 register_taxonomy
add_action( 'init', 'create_hangye' );//wordpress初始化
function create_hangye() {
$labels = array(
'name' => _x( '产品行业筛选', '产品应用的行业选项' ),
'singular_name' => _x( 'hangye', '行业名称' ),
'search_items' => __( '行业搜索' ),
'all_items' => __( '全部行业' ),
'edit_item' => __( '修改标签' ),
'update_item' => __( '更新标签' ),
'add_new_item' => __( '增加新的行业标签' ),
'new_item_name' => __( '新行业名字' ),
);
register_taxonomy('hangye','post',array(
'hierarchical' => True,
'labels' => $labels
));
}
add_action( 'init', 'create_mycats' );//wordpress初始化
function create_mycats() {
$labels = array(
'name' => _x( '产品分类筛选', '筛选' ),
'singular_name' => _x( 'mycats', 'taxonomy singular name' ),
'search_items' => __( '产品分类搜索' ),
'all_items' => __( '全部产品分类' ),
'edit_item' => __( '修改标签' ),
'update_item' => __( '更新标签' ),
'add_new_item' => __( '增加新的产品分类标签' ),
'new_item_name' => __( '新产品分类名字' ),
);
register_taxonomy('mycats','post',array(
'hierarchical' => True,
'labels' => $labels
));
}
其中,register_taxonomy为自定义分类的注册函数,系统自带的.
'hierarchical' => True表示后台发表文章时,自定义选项为复选框的形式.直接打勾即可.而不是手工填写.其它参数网上搜索查看吧
修改后,上传,后台即可看到效果.如图,然后进去增加选项即可.
二,顶级分类模板上,循环调用子分类.及子分类下的部分文章
假如要在分类编号为3的顶级分类上使用本插件,则在模板目录中.建立category-3.php这个模板,里面内容,可参考以下代码
>行业:
0 ){
foreach ( $terms as $term ) {
if(strtolower(urlencode($_GET['hangye']))==$term->slug){
echo '' . $term->name . '';
}else{
echo '' . $term->name . '';
}
}
}
?>
>分类: 0 ){
foreach ( $terms as $term ) {
if(strtolower(urlencode($_GET['mycats']))==$term->slug){
echo '' . $term->name . '';
}else{
echo '' . $term->name . '';
}
}
}
?>
term_id; // 子分类ID //$cat_name = $category->cat_name; // 子分类名称 ?>
注意, 模板中筛选需要通过js实用,代码直接加在模板中
三,搜索结束页模板.
结束页默认使用archive.php归档模板.如果要使用专用模板.必须新建立一个名为taxonomy.php的新模板.里面内容参考.
如果要为其中一个分类法定义一个专用模板.比如行业模板.可以建立一个taxonomy-hangye.php.模板即可.
四.搜索结束的链接优化.
如果想用http://www.360.com/color/red
这种形式的链接来显示,那就需要重新制作一个对应自定义分类的页面来展示。
这里我们使用tag的展现方式(这里以twentytwelve为例)
首先我们复制一份tag.php
文件,重新命名为taxonomy-color.php
(color为我们之前命名的分类名)。
在get_header(); ?>
下方添加代码
把
' . single_tag_title( '', false ) . '' ); ?>
替换为
' . $term->name . '' ); ?>
在
while ( have_posts() ) : the_post();
的下面添加
query_posts(array( 'post_type'=>'post', 'color'=>$term->slug));
保存即可使用