首先,在您的WordPress主题的functions.php文件中添加以下代码,以启用远程图片下载并保存到本地的功能:
//WordPress自动本地化文章中的远程图片
function custom_upload_remote_images($content) {
// 修正正则表达式:转义单引号并优化匹配模式
preg_match_all('/<img[^>]*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/ (需购买)





