Image Wordpress media_sideload_图像-下载http://placekitten.com/100/100?
媒体侧载图像 WordPress有一个名为的函数。它用于上载图像并将其附加到媒体库 我接受这样的图像URL: h**p://s.wordpress.org/style/images/wp-header-logo.png 重写的URL web上的某些URL被重写,例如:Image Wordpress media_sideload_图像-下载http://placekitten.com/100/100?,image,wordpress,url-rewriting,download,media,Image,Wordpress,Url Rewriting,Download,Media,媒体侧载图像 WordPress有一个名为的函数。它用于上载图像并将其附加到媒体库 我接受这样的图像URL: h**p://s.wordpress.org/style/images/wp-header-logo.png 重写的URL web上的某些URL被重写,例如: http://placekitten.com/100/100?name=image.jpg 错误消息: 很抱歉,出于安全原因,不允许使用此文件类型 文件类型是正确的JPG文件,但缺少文件扩展名 在我的例子中,添加额外的MIME
http://placekitten.com/100/100?name=image.jpg
错误消息:
很抱歉,出于安全原因,不允许使用此文件类型
文件类型是正确的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;
}
问题
如何上载URL h**p://placekitten.com/100/100及媒体侧载图片或类似内容,以将图片附加到媒体库?深入核心,您似乎需要
未过滤的上传功能才能上载不带扩展名的文件:
if ( ( !$type || !$ext ) && !current_user_can( 'unfiltered_upload' ) )
return $upload_error_handler( $file, __( 'Sorry, this file type is not permitted for security reasons.' ));
根据报告:
默认情况下,此功能不适用于任何角色(包括超级管理员)。需要通过定义以下常量来启用该功能:
定义此常量后,单个站点安装上的所有角色都将获得未筛选的上传功能,但只有超级管理员才能获得多站点安装上的功能
当我需要这个解决方案时,我昨天读了你的问题。
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 ";
}
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\u tmp=download\u url($image\u url);
如果(是错误($image\u tmp)){
echo“
图像下载失败:”;
}否则{
$image\u size=文件大小($image\u tmp);
$image\u name=basename($image\u url)。“.jpg”//.jpg可选
//下载完成现在上传到您的项目
$file=array(
'name'=>$image\u name,//ex:wp-header-logo.png
'type'=>'image/jpg',
'tmp_name'=>$image_tmp,
“错误”=>0,
“大小”=>$image\u大小
);
//此图像/文件将显示在媒体页面上。。。
$thumb\u id=media\u handle\u sideload($file、$post\u id、$desc);
set_post_缩略图($post_id,$thumb_id);//可选
回显“
图像保存”;
}
今天,我遇到了同样的问题,想出了一个有点肮脏但却成功的解决方法。事实证明,media_sideload_image只检查url中的.jpg(或任何图像)扩展名,因此如果您将其添加到链接的末尾,它应该可以工作
因此,您只需在url末尾添加不会改变输出的内容,例如:
http://placekitten.com/100/100?name=image.jpg
我不能说它一直有效,但它在这里有效(经过测试) 这真的很有帮助!只要名称和类型定义正确,文件名上没有扩展名并不重要。