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

WordPress商品标题截断优化:如何改进循环耗时问题?

WordPress商品标题截断优化

需求背景

  • 商品标题长度为1-10个单词,需限制在两行展示(实测对应90-100字符宽度)
  • 要求不拆分单词,超长时自动截断并添加省略号
  • WordPress内置wp_trim_words()可实现不拆词截断,但因单词长度差异,有时存在剩余空间却无法容纳更多单词的情况
  • 原代码通过循环调用wp_trim_words()计算字符长度,效率偏低

优化思路

直接拆分标题为单词数组,逐个累加单词的字符长度(含空格),直到总长度接近设定的阈值(预留省略号空间),再拼接单词并添加省略号,避免循环调用wp_trim_words()带来的重复计算开销。

优化代码示例

$title = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. In laborum quod aperiam veritatis dolore ipsa odit ducimus nulla!';
$max_chars = 95; // 可根据实际两行字符上限调整(建议90-100之间)
$ellipsis = '...';
$ellipsis_length = strlen($ellipsis);

// 先统一处理连续空格,再拆分单词
$clean_title = preg_replace('/\s+/', ' ', $title);
$words = explode(' ', $clean_title);

$trimmed_words = [];
$current_length = 0;

foreach ($words as $word) {
    // 计算当前单词加入后的总长度(含后续空格)
    $word_total_length = strlen($word) + 1;
    // 预留省略号空间,判断是否能加入当前单词
    if ($current_length + $word_total_length + $ellipsis_length <= $max_chars) {
        $trimmed_words[] = $word;
        $current_length += $word_total_length;
    } else {
        break;
    }
}

// 生成最终标题
if (count($trimmed_words) < count($words)) {
    $title = implode(' ', $trimmed_words) . $ellipsis;
} else {
    $title = $clean_title;
}

额外说明

  • 若标题不存在连续空格,可去掉preg_replace步骤进一步提升效率
  • 阈值$max_chars可根据实际UI展示的字符上限微调,确保刚好适配两行空间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:12:11