Wordpress media_sideload_image-下载http://placekitten.com/100/100?

Jen*_*ell 4 media wordpress image url-rewriting download

media_sideload_image

WordPress有一个名为media_sideload_image的函数。它用于上传图像并将其附加到媒体库。

我接受这样的图片网址:

h ** p://s.wordpress.org/style/images/wp-header-logo.png

重写的URL

网络上的某些URL被重写,例如:

http://placekitten.com/100/100

错误信息:

很抱歉,出于安全原因,不允许使用此文件类型。

文件类型是正确的JPG文件,但文件扩展名丢失。

就我而言,添加额外的MIME类型无效

我尝试了此功能,但对我没有帮助,因为未设置文件扩展名。

add_filter('upload_mimes', 'add_custom_upload_mimes');
function add_custom_upload_mimes($existing_mimes){
    $existing_mimes['jpeg'] = 'image/jpeg';
    return $existing_mimes;
}
Run Code Online (Sandbox Code Playgroud)

如何上传带有media_sideload_image或类似内容的URL h ** p://placekitten.com/100/100,以将图像附加到媒体库?

小智 6

昨天,当我需要此解决方案时,我阅读了您的问题。24小时后我找到了答案。

这是完整的解决方案

require_once(ABSPATH . 'wp-admin/includes/media.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/image.php');

$image_url = "http://domain.com/blog/23092839823";
$image_tmp = download_url($image_url);

    if( is_wp_error( $image_tmp ) ){
        echo "<br> Image Download Fail:";
    }else {
        $image_size = filesize($image_tmp);
        $image_name = basename($image_url) . ".jpg"; // .jpg optional


        //Download complete now upload in your project
        $file = array(
           'name' => $image_name, // ex: wp-header-logo.png
           'type' => 'image/jpg',
           'tmp_name' => $image_tmp,
           'error' => 0,
           'size' => $image_size
        );


        //This image/file will show on media page...
        $thumb_id = media_handle_sideload( $file, $post_id, $desc);
        set_post_thumbnail($post_id, $thumb_id); //optional

        echo "<br> Image Save ";
    }
Run Code Online (Sandbox Code Playgroud)