WordPress(Divi)中ACF动态视频缩略图显示故障求助(短代码实现)
问题分析与解决方案
你的代码存在两个核心问题导致缩略图无法加载,同时视频输出逻辑也不符合短代码要求:
问题1:ACF文件字段返回值处理错误
ACF的「文件字段」默认返回文件对象数组(而非直接的URL字符串),直接将数组赋值给mp4和poster属性会生成无效路径,导致缩略图加载失败。
问题2:短代码返回值不符合要求
WordPress短代码要求返回HTML字符串,但你的代码直接返回了数组,这会导致系统无法解析出正确的视频标签结构。
修正后的完整代码
// 短代码执行函数 function wpb_video_shortcode() { // 获取ACF字段,兼容文件对象/URL两种返回格式 $video_mp4 = get_field('video_mp4'); $video_thumbnail = get_field('video_thumbnail'); // 提取文件URL(处理ACF字段的两种返回模式) $mp4_url = is_array($video_mp4) ? $video_mp4['url'] : $video_mp4; $poster_url = is_array($video_thumbnail) ? $video_thumbnail['url'] : $video_thumbnail; // 构建视频属性数组 $attr = array( 'mp4' => $mp4_url, 'poster' => $poster_url, 'preload' => 'auto' ); // 使用WordPress内置函数生成标准HTML5视频代码 return wp_video_shortcode($attr); } // 注册短代码 add_shortcode('course_video', 'wpb_video_shortcode');
关键说明
- ACF字段兼容:通过
is_array()判断字段返回类型,无论是「文件对象」还是「文件URL」模式,都能正确提取有效路径 - 标准视频标签生成:调用
wp_video_shortcode()函数生成符合WordPress规范的HTML5视频标签,确保在Divi主题中正常渲染 - 短代码规则适配:返回完整的HTML字符串,严格符合WordPress短代码的执行要求
内容的提问来源于stack exchange,提问作者Tor
相关产品推荐
相关产品推荐

