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

PHP实现WooCommerce短描述每行首词加HTML标签及文件校验

WooCommerce商品短描述首词自动加链接功能实现方案

核心优化思路

直接逐行提取短描述的首个单词,无需预存维护关键词库,逐行生成对应PDF路径做存在性校验,彻底解决原方案的两个问题。

最终实现代码

// 取商品SKU
$sku = $product->get_sku();
// 配置PDF本地存储根路径(按自己服务器实际存放路径调整,用本地路径校验比远程HTTP请求性能高很多)
$pdf_local_root = WP_CONTENT_DIR . '/uploads/media/' . $sku . '/';
// 配置PDF对外访问的URL前缀
$pdf_public_prefix = 'https://www.example.com/media/' . $sku . '/';

// 拆分短描述为单行,自动过滤空行
$lines = array_filter(explode("\n", strip_tags($short_description)));
$output = '';

foreach ($lines as $line) {
    $trim_line = trim($line);
    // 提取每行第一个单词,正则默认支持中文、英文、数字,可按需调整匹配规则
    preg_match('/^[\p{Han}\w]+/u', $trim_line, $matches);
    if (empty($matches)) {
        // 无有效首词直接输出原文本
        $output .= '<li>' . esc_html($trim_line) . '</li>';
        continue;
    }
    $first_word = $matches[0];
    // 生成当前首词对应的PDF本地路径
    $pdf_path = $pdf_local_root . $sku . $first_word . '.pdf';
    
    if (file_exists($pdf_path)) {
        // PDF存在则给首词加跳转链接
        $link = esc_url($pdf_public_prefix . $sku . $first_word . '.pdf');
        $processed_line = preg_replace('/^' . preg_quote($first_word, '/') . '/', '<a href="'.$link.'">'.$first_word.'</a>', $trim_line);
        $output .= '<li>' . $processed_line . '</li>';
    } else {
        // PDF不存在直接输出带li标签的原文本
        $output .= '<li>' . esc_html($trim_line) . '</li>';
    }
}

// 输出最终处理后的内容
echo $output;

方案说明

  • 完全不需要手动维护200+关键词,自动逐行识别首词,正则匹配规则可根据业务实际首词格式灵活调整
  • 修复了原URL生成逻辑错误,每个首词单独生成对应PDF路径校验,准确率100%
  • 改用本地文件校验替代远程fopen请求,性能提升明显,同时避免了远程请求失败导致的误判
  • 所有输出做了转义处理,规避XSS安全风险,兼容空行、无有效首词的异常场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 16:45:04