要实现WordPress远程图片自动本地化,你可以编写一个自定义插件。以下是一个简单的示例插件,可以帮助你开始这个任务。这个插件将在上传帖子时自动下载远程图片并将其本地化保存在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');
?>

这个插件的主要功能如下:

  1. 当发布帖子时,它会检查帖子内容中的所有图片标签,并尝试将远程图片下载到WordPress媒体库中。
  2. 它会替换帖子内容中的远程图片URL为本地化后的图片URL。
  3. 插件会在帖子内容中添加过滤器,以便在呈现内容时应用这些变化。

请注意,这只是一个基本示例插件,可能需要根据你的具体需求进行进一步定制。确保在使用插件之前备份你的WordPress网站,以防出现问题。此外,由于网络环境和远程服务器的限制,可能会有一些远程图片无法下载或本地化。你可能需要根据需要进行错误处理和改进。

将插件文件保存到你的WordPress网站的wpcontent/plugins/remoteimagelocalizer目录中,并在WordPress后台启用插件。完成后,插件将在发布新帖子时自动本地化远程图片。