要实现WordPress远程图片自动本地化,你可以编写一个自定义插件。以下是一个简单的示例插件,可以帮助你开始这个任务。这个插件将在上传帖子时自动下载远程图片并将其本地化保存在WordPress媒体库中。
首先,在你的WordPress网站中,创建一个新的目录,例如remoteimagelocalizer
,然后在这个目录中创建一个名为remoteimagelocalizer.php
的PHP文件。
在remoteimagelocalizer.php
文件中,添加以下代码:
<?php
/
Plugin Name: Remote Image Localizer
Description: Automatically download and localize remote images.
Version: 1.0
Author: Your Name
/
function remote_image_localizer_media_sideload_image($file, $url, $post_id, $desc = null) {
require_once(ABSPATH . 'wpadmin/includes/file.php');
require_once(ABSPATH . 'wpadmin/includes/media.php');
require_once(ABSPATH . 'wpadmin/includes/image.php');
$tmp = download_url($url);
$file_array = array(
'name' => basename($url),
'tmp_name' => $tmp,
);
if (is_wp_error($tmp)) {
@unlink($file_array['tmp_name']);
return $tmp;
}
$id = media_handle_sideload($file_array, $post_id, $desc);
if (is_wp_error($id)) {
@unlink($file_array['tmp_name']);
return $id;
}
return $id;
}
function remote_image_localizer_content_filter($content) {
if (is_single() || is_page()) {
$pattern = '/<img[^>]?src=["'](https?://[^"'s>])["']/i';
preg_match_all($pattern, $content, $matches);
if (!empty($matches[1])) {
foreach ($matches[1] as $url) {
$attachment_id = remote_image_localizer_media_sideload_image('', $url, get_the_ID());
if (!is_wp_error($attachment_id)) {
$new_url = wp_get_attachment_url($attachment_id);
$content = str_replace($url, $new_url, $content);
}
}
}
}
return $content;
}
add_filter('the_content', 'remote_image_localizer_content_filter');
?>
这个插件的主要功能如下:
请注意,这只是一个基本示例插件,可能需要根据你的具体需求进行进一步定制。确保在使用插件之前备份你的WordPress网站,以防出现问题。此外,由于网络环境和远程服务器的限制,可能会有一些远程图片无法下载或本地化。你可能需要根据需要进行错误处理和改进。
将插件文件保存到你的WordPress网站的wpcontent/plugins/remoteimagelocalizer
目录中,并在WordPress后台启用插件。完成后,插件将在发布新帖子时自动本地化远程图片。