您的当前位置:首页 > 知识博客 > wordpress建站

保存远程服务器上的图片到 WordPress 媒体库

时间:2024-03-30

WordPress开发中如何将远程图片保存到媒体库中

我是一个敬业的小本本,最近在WordPress开发中遇到了一个需求,需要将远程服务器上的图片保存到WordPress的媒体库中,实现缓存或备份的功能。经过研究,我发现实现这个功能的过程并不难,只需要下载远程服务器的图片,然后插入到媒体库中就可以了。

使用WordPress的download_url功能下载图片

WordPress提供了一个非常便捷的下载文件的函数download_url($url),我们可以使用这个函数下载远程服务器的图片。

$tmp=download_url($url);

使用WordPress的media_handle_sideload函数保存下载的图片到媒体库中

download_url($url)下载之后,只是把文件以临时文件的方式保存下来了,这一步,我们需要把临时文件保存到媒体库中。在保存之前,我们需要先获取文件的文件名,如果对文件名没有要求,随机生成一个文件名也是可以的。然后使用WordPress的media_handle_sideload功能保存文件到媒体库中。

$url="http://s.wordpress.org/style/images/wp3-logo.png"; $tmp=download_url($url);//下载远程文件为临时文件 $post_id=1; $desc="TheWordPressLogo"; $file_array=array(); //为保存文件设置变量 preg_match('/[^\?]+\.(jpg|jpe|jpeg|gif|png)/i',$url,$matches); $file_array['name']=basename($matches[0]); $file_array['tmp_name']=$tmp; //如果保存临时文件失败,删除文件 if(is_wp_error($tmp)){ @unlink($file_array['tmp_name']); $file_array['tmp_name']=''; } //保存文件到媒体库 $id=media_handle_sideload($file_array,$post_id,$desc); //如果保存失败,删除文件 if(is_wp_error($id)){ @unlink($file_array['tmp_name']); return$id; } $src=wp_get_attachment_url($id);

以上代码返回了保存到媒体库之后的链接$src。为了方便使用,我们可以把以上功能做成一个函数,特别是做缩略图功能的时候,非常方便。

更简便的方法media_sideload_image

如果我们只是保存文件,而不需要特别处理文件名等信息,还有一个更简便的方法:media_sideload_image,只需要以下几行代码就能搞定。

$url="http://wordpress.org/about/images/logos/wordpress-logo-stacked-rgb.png"; $post_id=1; $desc="TheWordPressLogo"; $image=media_sideload_image($url,$post_id,$desc);

如果在WordPress的前台页面中使用,需要引入以下文件:

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

以上就是我对将远程图片保存到WordPress媒体库中的实现方式,希望能对大家有所帮助。


欢迎咨询/Welcome to inquire
tel/vx:18842938855
qq:1685522781
email:1685522781@qq.com

Copyright © 2019-2024 mysql.hk


Whatsapp