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

如何修改WordPress主题自定义函数实现100字符摘要限制?

修改WordPress自定义摘要函数为按100字符限制

没问题,我来帮你把主题里的摘要限制逻辑从按单词数改成按100字符数的版本,两种实用方案供你选择:

先假设你当前的按单词数限制的函数大概是这种常见写法:

function custom_excerpt_length( $length ) {
    return 20; // 这里是你原来设置的单词数
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );

方案一:直接替换摘要生成逻辑(简单高效)

这个方案会完全接管摘要的生成,确保按100字符截取,同时处理多字节字符(比如中文)避免乱码:

function custom_char_limit_excerpt($text) {
    $target_chars = 100; // 目标限制字符数
    // 先清理掉短代码和HTML标签,避免截取到标签中间
    $clean_text = strip_shortcodes($text);
    $clean_text = wp_strip_all_tags($clean_text);
    
    // 多字节安全截取字符
    $trimmed_text = mb_substr($clean_text, 0, $target_chars);
    // 移除末尾多余的标点或空格,让摘要更整洁
    $trimmed_text = rtrim($trimmed_text, " \t\n\r\0\x0B.,;:!?");
    // 添加省略号
    return $trimmed_text . '...';
}
add_filter('get_the_excerpt', 'custom_char_limit_excerpt', 999);

方案二:基于默认摘要的字符截断(更兼容)

如果你想保留WordPress默认摘要的部分逻辑,只是在最后按字符截断,可以用这个方案,适合需要兼容原有设置的场景:

function custom_excerpt_truncate_by_chars($excerpt) {
    $max_chars = 100;
    // 如果原摘要本身就少于100字符,直接返回
    if (mb_strlen($excerpt) <= $max_chars) {
        return $excerpt;
    }
    // 截取到指定字符数
    $trimmed_excerpt = mb_substr($excerpt, 0, $max_chars);
    // 可选:确保不会截断到单词中间(比如英文单词),不需要的话可以删掉这行
    $trimmed_excerpt = preg_replace('/\s+?(\S+)?$/', '', $trimmed_excerpt);
    return $trimmed_excerpt . '...';
}
add_filter('wp_trim_excerpt', 'custom_excerpt_truncate_by_chars', 999);

几个重要提醒:

  • 一定要用mb_substr而不是substr:substr对中文、日文这类多字节字符处理会出乱码,mb_substr是专门处理多字节的安全函数。
  • 清理HTML标签和短代码:避免截取到<div>、[shortcode]这类内容的中间,导致页面结构出错。
  • 优先级设为999:确保你的自定义函数能覆盖主题或其他插件的摘要设置,让你的规则生效。

最后,把原来的按单词数限制的函数删掉,把上面的其中一个函数添加到你的主题functions.php文件里,或者自定义插件中就可以了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:28:03