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

WordPress文章摘要显示音频播放器失效,自定义代码仅输出文本如何解决?

问题原因
  • 短代码结构不完整:原代码截取内容时只截到[/audio]的起始位置,没有包含完整的闭合短代码标签,WordPress无法识别合法的音频短代码结构,不会触发播放器渲染逻辑。
  • 位置判断逻辑漏洞:如果音频短代码出现在文章内容的最开头,strpos($content,'[audio')会返回整数0,原代码直接用if($audiopos)判断会将0识别为布尔值false,直接跳过音频处理分支调用默认摘要。
  • 部分场景下遗漏匹配:如果文章中使用自闭合[audio src="xxx"/]格式的短代码,不存在[/audio]闭合标签,原逻辑也会失效。
修复方案

替换你之前添加到主题functions.php中的代码为以下内容即可,原有循环中的调用语句<?php wp_podcast_excerpt(); ?>无需修改:

/**
  * 创建支持音频播放器的播客摘要
  * @return void 直接输出摘要HTML
  */
 function wp_podcast_excerpt() {
     // 获取文章完整内容
     $content = get_the_content();
     // 匹配音频短代码位置,严格判断避免首位置匹配失效
     $audiopos = strpos($content,'[audio');
     $audio_end_pos = strpos($content,'[/audio]');

     if($audiopos !== false) {
         // 兼容自闭合短代码和完整闭合短代码两种格式
         if ($audio_end_pos !== false) {
             $excerpt = substr($content, 0, $audio_end_pos + strlen('[/audio]'));
         } else {
             // 匹配自闭合短代码的结束位置
             $self_close_pos = strpos($content, ']', $audiopos);
             $excerpt = substr($content, 0, $self_close_pos + 1);
         }
         // 应用内容过滤器解析短代码为播放器
         $excerpt = apply_filters('the_content', $excerpt);
         // 移除摘要中的图片
         $excerpt = preg_replace("/<img[^>]+\>/i", "", $excerpt);
         echo $excerpt;
     } else {
         // 无音频短代码时调用默认摘要逻辑
         the_excerpt();
     }
 }
额外注意事项

如果你的站点使用块编辑器插入音频,部分WordPress版本会直接生成HTML的<audio>标签而非短代码,你可以将匹配逻辑中的[audio替换为<audio,同时调整结束标签的匹配规则即可适配。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:21:02