求WordPress创建分类时自动生成指定子分类的完美解决方案
WordPress创建指定分类时自动生成子分类的实现方案
核心思路
利用WordPress的created_term动作钩子,在分类创建完成后,判断当前分类是否属于预设的目标分类(如cricket、football),若是则自动调用wp_insert_term函数创建featured子分类。
具体实现步骤
1. 代码部署位置
你可以选择两种方式部署代码:
- 主题
functions.php:适合临时测试,但主题更新后代码可能丢失 - 自定义插件:推荐方式,代码独立于主题,不会因主题变更失效
2. 核心代码实现
add_action('created_term', 'auto_add_featured_subcategory', 10, 3); function auto_add_featured_subcategory($term_id, $tt_id, $taxonomy) { // 仅对文章分类(category)生效,如需其他分类法可修改此处 if ($taxonomy !== 'category') { return; } // 获取刚创建的父分类对象 $parent_term = get_term($term_id, $taxonomy); $parent_slug = $parent_term->slug; // 定义需要自动生成子分类的父分类slug列表 $target_parents = ['cricket', 'football']; // 判断当前父分类是否在目标列表内 if (in_array($parent_slug, $target_parents)) { // 检查子分类是否已存在,避免重复创建 $existing_subterm = term_exists('featured', $taxonomy, $term_id); if (!$existing_subterm) { // 创建featured子分类 wp_insert_term( 'Featured', // 子分类名称 $taxonomy, [ 'slug' => 'featured', 'parent' => $term_id, 'description' => '精选内容分类 - ' . $parent_term->name ] ); } } }
3. 自定义插件部署方法(推荐)
新建一个PHP文件(如auto-featured-subcat.php),添加以下插件头部信息后,将核心代码粘贴进去:
<?php /* Plugin Name: 自动添加精选子分类 Description: 创建指定父分类时自动生成对应的featured子分类 Version: 1.0 Author: 自定义 */
将文件上传到WordPress的wp-content/plugins/目录,然后在后台插件管理页面启用该插件即可。
注意事项
- 如需添加更多需要自动生成子分类的父分类,只需在
$target_parents数组中添加对应分类的slug - 代码中加入了
term_exists判断,避免重复创建同名子分类 - 确保操作账号拥有创建分类的权限(管理员权限默认满足)
- 测试时,创建
cricket或football分类后,可在分类列表中查看是否自动生成了Featured子分类
内容的提问来源于stack exchange,提问作者Priyadarshini Mohanty
相关产品推荐
相关产品推荐

