You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Twenty Seventeen子主题网站YouTube头部视频取消静音并关闭自动播放方法

解决Twenty Seventeen子主题头部YouTube视频自动静音播放的问题

嘿,我懂你现在的糟心情况——明明手动加了autoplay=0,头部的YouTube视频还是自顾自静音播放,完全不是你想要的「用户点击才带声播放」的效果。这是因为Twenty Seventeen主题本身对头部视频有默认的参数设置,会直接覆盖你手动加的URL参数,咱们直接从根源上搞定它:

方案一:通过子主题functions.php过滤视频参数

这是最稳妥的方法,利用主题自带的钩子修改YouTube嵌入的URL参数:

  1. 打开你Twenty Seventeen子主题的functions.php文件(还没创建子主题的话一定要先建,绝对别直接改父主题!)
  2. 把下面这段代码粘贴进去:
add_filter( 'twentyseventeen_youtube_embed_url', 'custom_twentyseventeen_youtube_params' );
function custom_twentyseventeen_youtube_params( $url ) {
    // 移除主题默认添加的autoplay和mute参数
    $url = remove_query_arg( array( 'autoplay', 'mute' ), $url );
    // 添加我们需要的参数:默认暂停、显示播放控件,可选关闭相关视频推荐
    $url = add_query_arg( array(
        'autoplay' => 0,
        'controls' => 1,
        'rel' => 0
    ), $url );
    return $url;
}
  1. 保存文件后刷新网站,视频就会默认处于暂停状态,用户点击播放按钮后就会带声音播放了。

方案二:用自定义JS修正(如果方案一不生效)

有时候主题的前端JS会动态修改iframe参数,这时候可以用JS强制调整:

  1. 打开子主题的自定义JS文件(或者通过「外观 > 自定义 > 额外代码」入口添加JS,也可以用代码片段插件)
  2. 粘贴下面的代码:
document.addEventListener('DOMContentLoaded', function() {
    const headerIframe = document.querySelector('.wp-custom-header iframe');
    if (headerIframe && headerIframe.src.includes('youtube.com')) {
        // 清除默认的autoplay和mute参数
        let newSrc = headerIframe.src.replace(/autoplay=\d&?/, '').replace(/mute=\d&?/, '');
        // 确保添加autoplay=0和controls=1
        newSrc += newSrc.includes('?') ? '&' : '?';
        newSrc += 'autoplay=0&controls=1';
        // 避免重复参数
        newSrc = newSrc.replace(/([?&])\1+/g, '$1').replace(/&$/, '');
        headerIframe.src = newSrc;
    }
});
  1. 保存后刷新页面测试,这个方法会在页面加载完成后自动修正iframe的链接参数。

额外注意事项

  • 所有修改务必在子主题里操作,这样父主题更新时不会丢失你的自定义设置。
  • 测试前记得清空浏览器缓存,不然可能还是会加载旧的缓存内容。
  • 确认你的YouTube视频允许嵌入到外部网站(视频设置里的「嵌入选项」要开启)。

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

火山引擎 最新活动