WordPress functions.php引入Vidyard外部脚本不生效问题
代码错误说明
你的代码存在3个核心问题,导致脚本完全没有被加载,也不会抛出报错:
- 钩子名称错误:WordPress前端加载脚本的官方标准钩子是
wp_enqueue_scripts,你自定义的wp_enqueue_vidyard钩子不会被WordPress核心触发,整个自定义函数从头到尾都没有执行。 - 入队逻辑错误:
wp_get_script_tag()的作用是根据参数生成script标签字符串,本身不会向WordPress注册、加载脚本;后续调用wp_enqueue_script('wp_get_script_tag')是尝试加载一个句柄名为wp_get_script_tag的不存在的脚本,和你要引入的Vidyard脚本没有任何关联。 - ACF字段取值隐患:
get_field()未显式指定页面ID时,在主查询异常、存在二级循环的场景下可能拿不到正确的字段值。
正确实现代码
将以下代码替换你原来的内容加入functions.php即可:
function add_vidyard_script(){ // 同时满足两个判断条件才加载脚本 if ( get_field('vidyard_video', get_queried_object_id()) && is_page_template('templates-page/customers.php') ) { // 入队外部脚本 wp_enqueue_script( 'vidyard-v4', 'https://play.vidyard.com/embed/v4.js', array(), '1.8.52', false ); // 给脚本添加async属性与指定ID,兼容所有WordPress版本 add_filter('script_loader_tag', function($tag, $handle){ if ($handle !== 'vidyard-v4') { return $tag; } return str_replace(' src', ' async="async" id="vidyard-v4-js" src', $tag); }, 10, 2); } } // 挂载到WordPress标准的脚本入队钩子 add_action( 'wp_enqueue_scripts', 'add_vidyard_script' );
效果验证
- 替换代码后清空站点缓存(含缓存插件缓存、服务器缓存、浏览器缓存)
- 访问使用
templates-page/customers.php模板且vidyard_video字段为勾选状态的页面,查看网页源码即可看到目标script标签,格式和你预期完全一致 - 不满足两个条件的页面不会加载该脚本,不会产生多余的资源加载
内容的提问来源于stack exchange,提问作者MPortman
相关产品推荐
相关产品推荐

