别再装一堆插件了:自定义文章类型和自定义分类法代码实现教程,让 WordPress 变身任何行业专属系统
普通用户通过安装插件来实现“产品”、“案例”、“员工”、“图书”等自定义内容模块,当然没有错。但如果你会写几行代码,完全可以不使用任何插件,手动注册自定义文章类型和自定义分类法。这样做的好处非常明显:没有额外数据库开销、不受插件更新影响、代码完全可控、后续维护成本极低。
自定义文章类型的核心函数是 register_post_type。你可以在子主题的 functions.php 中调用这个函数,通常挂在 init 钩子上使用。以下是一个注册“产品”类型的基础示例:
add_action('init', 'create_product_post_type');
function create_product_post_type() {
register_post_type('product',
array(
'labels' => array(
'name' => '产品',
'singular_name' => '产品'
),
'public' => true,
'has_archive' => true,
'supports' => array('title', 'editor', 'thumbnail', 'excerpt'),
'menu_icon' => 'dashicons-cart'
)
);
}
参数 public 决定该文章类型是否在前后台可见,has_archive 决定是否有归档页面,supports 控制支持哪些功能(缩略图、摘要、自定义字段等),menu_icon 可以设置后台菜单图标。
注册完成后,后台会新增一个“产品”菜单,你可以像写普通文章一样添加产品。但只有文章类型还不够,你往往还需要对产品进行分类,比如按品牌、按类型、按适用场景分类。这时候就需要自定义分类法。
分类法的注册函数是 register_taxonomy,通常紧跟在自定义文章类型之后注册:
add_action('init', 'create_product_taxonomy');
function create_product_taxonomy() {
register_taxonomy('product_category', 'product', array(
'labels' => array(
'name' => '产品分类'
),
'hierarchical' => true,
'show_admin_column' => true
));
}
其中 hierarchical 设为 true 时,分类法和默认分类一样支持父子层级;设为 false 时,则像标签一样为非层级。show_admin_column 会在后台文章列表页显示分类列,非常实用。
当你注册了自定义文章类型和分类法后,记得去后台的设置 → 固定链接中点击一下保存,刷新重写规则。否则你可能会遇到 404 错误。
学会这套方法后,你可以用 WordPress 搭建论坛、房源系统、项目管理系统、员工档案库、在线课程目录等几乎所有内容驱动的应用,却不需要依赖任何第三方插件。这是从“用 WordPress”到“开发 WordPress”的里程碑式跨越。

