WordPress创建自定义分类法
方法一:WordPress创建自定义分类法,如“省份”、“城市”、“类型”和“价格”
把以下代码放到主题的 functions.php 文件中
代码1
// Create custom taxonomy 创建自定义分类法,如“省份”、“城市”、“类型”和“价格”
add_action('init', 'ashu_post_type');
function ashu_post_type() {
register_taxonomy('province', 'post', array('label' => '省', 'rewrite' => array('slug' => 'province'), 'hierarchical' => true));
register_taxonomy('city', 'post', array('label' => '市', 'rewrite' => array('slug' => 'city'), 'hierarchical' => true));
register_taxonomy('genre', 'post', array('label' => '类型', 'rewrite' => array('slug' => 'genre'), 'hierarchical' => true));
register_taxonomy('price', 'post', array('label' => '价格', 'rewrite' => array('slug' => 'price'), 'hierarchical' => true));
}
代码2
add_action('init', 'ashu_register_custom_taxonomies');
function ashu_register_custom_taxonomies() {
// 注册省份分类法
register_taxonomy('province', 'post', array(
'label' => '省',
'rewrite' => array('slug' => 'province'),
'hierarchical' => true
));
// 注册城市分类法
register_taxonomy('city', 'post', array(
'label' => '市',
'rewrite' => array('slug' => 'city'),
'hierarchical' => true
));
// 注册类型分类法
register_taxonomy('genre', 'post', array(
'label' => '类型',
'rewrite' => array('slug' => 'genre'),
'hierarchical' => true // 根据实际情况,这可能需要调整
));
// 注册价格分类法
// 注意:价格通常不需要层级结构,除非您有特殊需求
register_taxonomy('price', 'post', array(
'label' => '价格',
'rewrite' => array('slug' => 'price'),
'hierarchical' => false // 设置为false,除非您确实需要层级价格分类
));
}
代码3
// 确保文件被正确调用
defined( 'ABSPATH' ) || exit;
// 注册自定义文章类型
function my_custom_taxonomy() {
$labels = array(
'name' => _x( '分类名称', 'taxonomy general name' ),
'singular_name' => _x( '分类', 'taxonomy singular name' ),
'search_items' => __( '搜索分类' ),
'all_items' => __( '所有分类' ),
'parent_item' => __( '父分类' ),
'parent_item_colon' => __( '父分类:' ),
'edit_item' => __( '编辑分类' ),
'update_item' => __( '更新分类' ),
'add_new_item' => __( '添加新分类' ),
'new_item_name' => __( '新分类名称' ),
'menu_name' => __( '分类' ),
);
$args = array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => '分类slug' ),
);
register_taxonomy( 'my_custom_taxonomy', array( 'post' ), $args );
}
add_action( 'init', 'my_custom_taxonomy', 0 );
// 在文章发布页显示自定义分类
function show_custom_taxonomy_in_single() {
echo '<div class="custom-taxonomy">';
echo get_the_term_list( get_the_ID(), 'my_custom_taxonomy', '<ul><li>', ',</li>', '</li></ul>' );
echo '</div>';
}
add_action( 'genesis_before_post_content', 'show_custom_taxonomy_in_single' );
代码4
function wporg_register_taxonomy_course()
{
$labels = [
'name' => _x('Courses', 'taxonomy general name'), // '分类名称', 'taxonomy general name' ),
'singular_name' => _x('Course', 'taxonomy singular name'), // '分类', 'taxonomy singular name' ),
'search_items' => __('Search Courses'), // '搜索分类' ),
'all_items' => __('All Courses'), // '所有分类' ),
'parent_item' => __('Parent Course'), // '父分类' ),
'parent_item_colon' => __('Parent Course:'), // '父分类:' ),
'edit_item' => __('Edit Course'), // '编辑分类' ),
'update_item' => __('Update Course'), // '更新分类' ),
'add_new_item' => __('Add New Course'), // '添加新分类' ),
'new_item_name' => __('New Course Name'), // '新分类名称' ),
'menu_name' => __('Course'), // '分类' ),
];
$args = [
'hierarchical' => true, // make it hierarchical (like categories)
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => ['slug' => 'course'],
];
register_taxonomy('course', ['post'], $args);
}
add_action('init', 'wporg_register_taxonomy_course');
代码1、代码2、代码3、代码4的效果是一样的
方法二:专题功能实现代码,利用自定义分类法实现
Woredpress专题这个功能在好几年前就出现过,不知为何消失在历史中了。不过最近国内主题出现好几款带专题功能的。说明这个东西还是挺有作用的。不过用别人的代码总是受制于人,我比较喜欢自己掌控,今天就讲一讲用代码实现WordPress的专题功能,一起来学习下吧!先上图:
把以下代码放到主题的 functions.php 文件中
// WordPress专题功能实现代码,利用自定义分类法实现
$labels = array(
'name' => '专题',
'singular_name' => 'special',
'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' => '专题',
);
register_taxonomy(
'special',
array('post'),
array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'special' ),
)
);
方法三:新增自定义文章类型:专题
把以下代码放到主题的 functions.php 文件中
//新增自定义文章类型:专题
function qui_class() {
register_post_type( 'series', //这里的work可以自行修改,主要体现在URL里面
array(
'labels' => array(
'name' => '专题',
'singular_name' => '所有专题',
'add_new' => '添加专题',
'add_new_item' => '添加新专题',
'edit' => '编辑',
'edit_item' => '编辑专题',
'new_item' => '新专题',
'view' => '查看专题',
'view_item' => '查看专题',
'search_items' => '搜索专题',
'not_found' => '没有找到相关专题',
'not_found_in_trash' => '没有专题评论',
'parent' => '专题评论',
),
'exclude_from_search'=>false,
'public' => true,
'menu_position' => 6,
'supports' => array( 'title', 'editor','comments', 'custom-fields','thumbnail','excerpt'), //为自定义文章添加标题,编辑器,评论,自定义字段,特色图像,摘要功能
'taxonomies' => array( '' ), //分类法,我们是单独定义
'has_archive' => true,
// 'taxonomies'=> array('post_tag'), //没有这一句是没有标签功能的
)
);
}
add_action( 'init', 'qui_class' ); //挂载函数
//为商品类自定义类型增加分类功能
add_action( 'init', 'qui_class_child', 0 );
function qui_class_child() {
register_taxonomy(
'series', //这个分类法
'series', //这个是自定义文章类型,默认文章是post,其他是你自己定义的
array(
'labels' => array(
'name' => '作品专题',
'add_new_item' => '添加专题',
'new_item_name' => "新专题分类"
),
'show_ui' => true,
'show_tagcloud' => true,
'hierarchical' => true,
)
);
}