WordPress自动本地化文章中的远程图片

风中赏雪 Wordpress Wordpress 2025-09-27 106 0

首先,在您的WordPress主题的functions.php文件中添加以下代码,以启用远程图片下载并保存到本地的功能:


//WordPress自动本地化文章中的远程图片
function custom_upload_remote_images($content) {
    // 修正正则表达式:转义单引号并优化匹配模式
    preg_match_all('/<img&#91;^>]*src\s*=\s*[\'"]([^\'"]+)[\'"][^>]*>/i', $content, $matches);
    
    if (!empty($matches[1])) {
        foreach ($matches[1] as $image_url) {
            // 获取远程图片(建议添加错误处理)
            $image = @file_get_contents($image_url);
            if ($image === false) continue; // 跳过获取失败的图片

            // 生成本地文件名
            $upload_dir = wp_upload_dir();
            $filename = sanitize_file_name(basename($image_url)); // 安全处理文件名
            $local_image_path = $upload_dir['path'] . '/' . $filename;

            // 保存图片到本地
            file_put_contents($local_image_path, $image);

            // 替换文章中的远程图片链接
            $content = str_replace($image_url, $upload_dir['url'] . '/' . $filename, $content);
        }
    }
    return $content;
}
add_filter('the_content', 'custom_upload_remote_images');

保存并激活您的主题
然后,您可以在文章中添加远程图片链接,当您发布或更新文章时,上述代码将自动将它们下载并保存到本地服务器。
🛠 主流优秀插件推荐
Auto Upload Images

优点: 这是目前最流行、最轻量、最易用的插件之一。它专注于核心功能:在保存文章/页面时,自动检测内容中的所有 标签的 src 属性,将远程图片下载到本地媒体库,并替换链接。设置极其简单,几乎无需配置即可工作。

缺点: 功能相对基础,缺少高级选项(如自定义文件名规则、选择性处理、图片压缩等)。

适合人群: 需要简单、高效、无脑实现远程图片本地化的用户。非常适合大多数博客和内容网站。

地址: https://wordpress.org/plugins/auto-upload-images/

WP Rocket (缓存插件内置功能)

优点: 知名缓存插件 WP Rocket 在其 “懒加载” 功能模块中,集成了一个强大的 “将 iframe 和视频缩略图替换为本地图片” 选项。启用后,它不仅处理懒加载,还会自动将文章内容中发现的所有外部图片(包括常见的 CDN 图片)下载到本地并替换链接。因为是缓存插件的一部分,通常执行效率很高。

缺点: 需要购买 WP Rocket 插件(付费)。它主要服务于缓存和性能优化,图片本地化是其附带功能之一,可能不如独立插件在图片处理细节上丰富(虽然对于大多数用户来说足够)。

适合人群: 已经在使用或计划购买 WP Rocket 的用户。一举两得,既能获得顶级缓存优化,又能解决图片本地化问题。

地址: https://wp-rocket.me/ (需购买)