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

如何用PHP实现WooCommerce商品描述字数限制且不截断单词

解决方案

你可以通过两种方式实现不截断单词的摘要输出,分别是「按单词数量限制长度」和「固定最大字符数但自动截止到最后一个完整单词」,你可以按需选择:

方案1:按单词数量限制长度

直接用WordPress原生自带的wp_trim_words()函数,专门用于按单词数裁剪文本,会自动处理标点、多语言字符边界问题,修改后代码如下:

function woocommerce_after_shop_loop_item_title_short_description() {
    global $product;

    if ( ! $product->post->post_excerpt ) return;
    $short_desc = apply_filters( 'woocommerce_short_description', $product->post->post_excerpt );
    ?>
    <div itemprop="description">
        <?php 
        // 第二个参数为保留的单词数量,可根据需求调整,第三个参数为末尾追加的符号
        echo wp_trim_words( $short_desc, 30, '...' ); 
        ?>
    </div>
    <?php
}

说明:你可以修改第二个参数的数值(示例为30)来控制展示的单词数量,完全不会出现单词截断的问题。

方案2:固定最大字符数,自动保留完整单词

如果你还是希望控制最大字符长度接近165,只是不要切断单词,可以使用支持多字节字符的mb_strimwidth()方法,修改后代码如下:

function woocommerce_after_shop_loop_item_title_short_description() {
    global $product;

    if ( ! $product->post->post_excerpt ) return;
    $short_desc = apply_filters( 'woocommerce_short_description', $product->post->post_excerpt );
    ?>
    <div itemprop="description">
        <?php 
        // 第二个参数为起始位置,第三个为最大字符数,第四个为末尾追加符号,自动跳过截断的单词
        echo mb_strimwidth( $short_desc, 0, 165, '...' ); 
        ?>
    </div>
    <?php
}

说明:这个方案输出的字符数不会超过165,且不会出现单词/汉字被截断的情况,符合你原来的长度控制习惯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:48:03