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

WordPress移动端移除YouTube视频以提升页面加载速度

用PHP在WordPress+WPBakery中移除移动端YouTube视频的可行方案

完全可行,PHP可以在页面渲染前就移除YouTube视频的相关代码,从根源避免视频资源被加载,比单纯用CSS隐藏高效得多。以下是两种实用的实现方式:

方法一:全局过滤页面内容,移除YouTube iframe

如果你的YouTube视频是通过iframe嵌入(包括WPBakery生成的),可以通过the_content过滤器在内容输出前检测设备并移除视频代码:

add_filter('the_content', 'remove_youtube_on_mobile');
function remove_youtube_on_mobile($content) {
    // 检测是否为移动设备
    if (wp_is_mobile()) {
        // 移除所有YouTube iframe标签
        $content = preg_replace('/<iframe[^>]*src="https?:\/\/(www\.)?youtube\.com[^>]*><\/iframe>/i', '', $content);
        // 可选:移除WPBakery生成的视频外层容器(根据你的页面结构调整)
        $content = preg_replace('/<div[^>]*class="vc_video_wrapper[^>]*>.*?<\/div>/is', '', $content);
    }
    return $content;
}

这段代码会直接剔除页面中的YouTube iframe,移动端页面不会加载任何视频相关资源。

方法二:精准过滤WPBakery视频模块

如果你的视频是通过WPBakery自带的「Video」模块添加的,可以针对该模块的短代码进行过滤,只移除YouTube视频:

add_filter('vc_shortcode_output', 'remove_vc_youtube_on_mobile', 10, 2);
function remove_vc_youtube_on_mobile($output, $tag) {
    // 只针对WPBakery的视频模块短代码
    if ($tag === 'vc_video' && wp_is_mobile()) {
        // 解析模块属性,检查是否为YouTube链接
        $atts = shortcode_parse_atts($tag);
        if (isset($atts['video_link']) && strpos($atts['video_link'], 'youtube.com') !== false) {
            return ''; // 返回空内容,彻底移除该模块
        }
    }
    return $output;
}

这种方式更精准,不会影响页面中其他类型的内容或视频。

注意事项

  • 将代码添加到当前主题的functions.php文件,或使用自定义代码插件(如Code Snippets),避免主题更新导致代码丢失。
  • wp_is_mobile()会识别所有移动设备(手机、平板),如果需要只针对手机,可以通过解析$_SERVER['HTTP_USER_AGENT']实现更精细的检测。
  • 修改后记得清除WordPress缓存,确保修改立即生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 18:31:03