You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将WordPress CPT默认标题设置为分类+发布日期

嘿,我来帮你搞定这个自定义文章类型默认标题的问题!之前我在做项目时也踩过类似的坑,折腾了好几种写法才摸透门道。咱们直接上可行的方案,再拆解细节帮你避坑。

核心解决方案:用default_title钩子定制标题

WordPress提供了default_title过滤器,专门用来修改文章的默认标题。关键是要精准针对你的自定义文章类型(CPT)生效,还要正确获取分类和日期。

完整代码示例

把这段代码加到你的主题functions.php文件里,或者创建一个简单的自定义插件(更推荐,避免主题更新丢失代码):

add_filter('default_title', 'custom_cpt_auto_title', 10, 2);
function custom_cpt_auto_title($default_title, $post) {
    // 替换成你的自定义文章类型SLUG,比如'portfolio'、'product'
    $target_cpt = 'your_cpt_slug';

    // 只对目标CPT生效,其他文章类型保持默认
    if ($post->post_type !== $target_cpt) {
        return $default_title;
    }

    // --- 处理分类名称 ---
    // 如果你用的是WordPress默认分类法(category),用下面这段
    $categories = get_the_category($post->ID);
    $cat_name = !empty($categories) ? $categories[0]->name : '未分类';

    // 如果你用的是自定义分类法,替换成这段(把'your_custom_taxonomy'换成你的分类法SLUG)
    // $terms = wp_get_post_terms($post->ID, 'your_custom_taxonomy', ['fields' => 'names']);
    // $cat_name = !empty($terms) ? $terms[0] : '未分类';

    // --- 处理发布日期 ---
    // 日期格式可自定义,比如'Y年m月d日'、'm/d/Y',参考PHP date()格式参数
    $post_date = current_time('Y-m-d');

    // 拼接最终标题
    return $cat_name . ' ' . $post_date;
}

关键细节避坑

  1. 务必替换SLUG:把代码里的your_cpt_slug和自定义分类法SLUG换成你实际使用的,比如你的CPT是“课程”,SLUG可能是course。
  2. 分类获取逻辑:如果你的CPT允许选多个分类,代码里默认取第一个;如果需要其他逻辑(比如取特定父分类),可以调整get_the_category或wp_get_post_terms的参数。
  3. 时区正确的日期:用current_time()而不是原生date(),因为它会跟随WordPress后台设置的时区,避免日期显示错误。
  4. 钩子优先级:代码里的10是默认优先级,如果发现标题被其他插件/主题覆盖,可以把数值调高到20甚至更高。

调试技巧

如果还是没生效,打开WordPress的调试模式(在wp-config.php里设置define('WP_DEBUG', true);),检查是否有报错:

  • 看看是不是分类法SLUG写错了,导致取不到分类名称
  • 确认当前编辑的文章确实是目标CPT类型
  • 打印变量排查:比如在函数里加var_dump($categories);看看分类是否正确获取到

内容的提问来源于stack exchange,提问作者DarkSpartan47

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:37:00