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

文 / @WordPress主题

WordPress二次开发中的自定义表单上传文件

我是一个专业的WordPress二次开发者,今天和大家分享一下关于自定义表单上传文件到后端,并插入图片信息到WordPress媒体库的相关知识。在WordPress中,我们可以使用几个函数来简化这些操作,直接使用这些函数来处理图片文件可以减少工作量,同时提高主题或插件的兼容性。

使用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地址,因为该图片不在我们的服务器上,我们不可以使用media_handle_sideload来处理,这时候我们需要使用media_sideload_image函数。该函数会先把图片从该URL地址中下载到我们的服务器上,然后再使用media_handle_sideload来插入到WordPress媒体库,以下是示例代码。

$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多媒体数据库中,以便我们在后台管理和前端调用。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。