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

如何将WordPress标签每个单词首字母转为大写?求对应主题函数代码

实现WordPress标签首字母大写的主题函数代码

当然可以实现这个需求!你只需要在主题中添加自定义函数,就能自动把插件生成的小写标签转换成首字母大写的格式。下面分两种场景给出解决方案:

方案1:在标签保存到数据库前处理(永久修改)

这个方案会直接把首字母大写的标签存入数据库,后续不管是显示还是调用,都是处理后的格式。将以下代码添加到当前主题(或子主题)的functions.php文件中:

// 处理标签首字母大写的函数
function capitalize_tag_names_before_save($tags) {
    // 空标签直接返回
    if (empty($tags)) return $tags;
    
    // 拆分逗号分隔的标签为数组(兼容数组/字符串两种传入格式)
    $tag_array = is_array($tags) ? $tags : explode(', ', $tags);
    
    // 遍历处理每个标签:先去除空格、转全小写,再首字母大写
    $capitalized_tags = array_map(function($tag) {
        $clean_tag = trim(strtolower($tag));
        return ucwords($clean_tag);
        // 如果只需要单个单词首字母大写(比如"hot-girl"转"Hot-girl"),替换上面一行为:
        // return ucfirst($clean_tag);
    }, $tag_array);
    
    // 合并回对应格式(数组/字符串)返回
    return is_array($tags) ? $capitalized_tags : implode(', ', $capitalized_tags);
}

// 挂钩到标签保存前的过滤器
add_filter('pre_set_post_tags', 'capitalize_tag_names_before_save');

方案2:在前端显示时处理(仅修改显示效果)

如果不想改动数据库中的原始标签,只是希望前端展示时是首字母大写的格式,可以用这个方案,代码同样添加到functions.php:

// 处理标签显示时的首字母大写
function capitalize_tag_names_on_display($tag_list) {
    // 空标签直接返回
    if (empty($tag_list)) return $tag_list;
    
    // 剥离HTML标签后拆分标签为数组
    $tag_array = explode(', ', strip_tags($tag_list));
    
    // 处理每个标签的大小写
    $capitalized_tags = array_map(function($tag) {
        return ucwords(strtolower(trim($tag)));
        // 单个单词首字母大写替换为:return ucfirst(strtolower(trim($tag)));
    }, $tag_array);
    
    // 重新生成带链接的标签HTML结构(保持原有的跳转功能)
    $new_tag_list = implode(', ', array_map(function($tag) {
        $term = get_term_by('name', strtolower($tag), 'post_tag');
        return $term ? '<a href="' . get_tag_link($term->term_id) . '">' . $tag . '</a>' : $tag;
    }, $capitalized_tags));
    
    return $new_tag_list;
}

// 挂钩到标签显示的过滤器
add_filter('the_tags', 'capitalize_tag_names_on_display');

注意事项

  • 推荐使用子主题的functions.php添加代码,避免主题更新时代码被覆盖。
  • 如果你的标签包含多单词(比如"fashion model"),ucwords()会把每个单词的首字母都大写;如果只需要第一个单词首字母大写,把代码中的ucwords()替换成ucfirst()即可。

内容的提问来源于stack exchange,提问作者On Secret Hunt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 21:37:54