+ 收藏我们

网站模板

网站模板搜索
404模板 营销型模板 外贸网站模板 单页模板 双语模板 标签大全
电话:18630701785
首页 > 站长学院 > 从文件路径或URL插入图片到媒体库并关联到文章 >

从文件路径或URL插入图片到媒体库并关联到文章

时间:2024-07-28 12:02:51

做 WordPress 二次开发的时候,我们经常需要自定义表单上传文件到后端,并插入图片信息到WordPress媒体库,WordPress 为我们提供来几个函数来简化这些操作,直接这些函数来处理图片文件可以减少开发工作量,同时提高主题或插件的兼容性,减少 Bug 出现的概率。

使用 media_handle_sideload 从文件路径获取图片并插入到媒体库
如果我们事先已经把图片上传到了服务器上,或者从其他地方获取到了图片的绝对路径,我们可以使用 media_handle_sideload 函数把这个图片插入到 WordPress 媒体库中。该函数会把图片文件复制到媒体库中对应年份、月份的文件夹中,然后把图片信息插入到媒体数据库中,这样我们就可以在后台媒体库中看到这个图片了。下面是一个简单的示例。

复制
$file_array = [
    'name' => basename($file_path),
    'tmp_name' => $file_path
]

$attach_id = media_handle_sideload($file_array);
media_handle_sideload 函数参数
参数    类型    必要性    默认值    描述
$file_array    string    必需    –    类似上传 $_FILES 全局变量的数组
$post_id    int    可选    0    图片关联到的文章 ID
$desc    string    可选    null    图片的说明文字。
$post_data    array    可选    []    更多图片信息。
使用 media_sideload_image 从 URL 下载图片并插入到媒体库
如果图片是一个网址,因为图片不在WordPress站点所在的服务器上,我们就没办法使用 media_handle_sideload 来处理了,这时候,我们需要的是 media_sideload_image 函数,这个函数做的事情和 media_handle_sideload 差不多,不同的是,这个函数先把图片从一个 URL 中下载到了服务器上,然后再使用 media_handle_sideload 来插入到数据库。下面是示例代码。

复制
$url     = "https://wordpress.org/about/images/logos/wordpress-logo-stacked-rgb.png";
$post_id = 1;
$desc    = "The WordPress Logo";
 
$image = media_sideload_image( $url, $post_id, $desc );
参数    类型    必要性    默认值    描述
$file    string    必需    –    需要下载的图片的 URL
$post_id    int    可选    0    图片关联到的文章 ID
$desc    string    可选    null    图片描述
$return    string    可选    html    返回数据类型,可选 html、src、id
除了本文介绍的两个,WordPress 还提 media_handle_upload 用来处理上传的文件,而这几个函数又使用了 wp_handle_sideload 和 wp_handle_upload 这两个比较底层的函数来进行文件名清理、文件类型检查,移动文件到合适的文件名等操作,处理完文件并获取到文件信息后,WordPress 使用 wp_insert_attachment 把文件信息插入到 WordPress 多媒体数据库中,以便我们在后台管理和前端调用。

 

有问题可以加入网站技术QQ群一起交流学习

本站会员学习、解决问题QQ群(691961965)

客服微信号:lpf010888

Title