从文件路径或URL插入图片到媒体库并关联到文章
文 / @UTHEME
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多媒体数据库中,以便我们在后台管理和前端调用。

相关文章
-
盘点2023年依然好用的4款WordPress轻社区主题 2023-05-29 08:00:54
-
盘点2023年最好用的三款wordpress知识库主题 2023-05-29 08:00:26
-
个人网站选择WordPress还是Typecho? 2023-05-28 23:33:13
-
wordpress建外贸B2C独立站的五大优势 2023-05-28 23:05:49
-
盘点2023年依然好用的3款wordpress文档主题 2023-05-28 23:02:19
-
盘点2023年依然好用的3款wordpress外贸网站主题 2023-05-28 22:59:41
-
盘点2023年依然好用的3款wordpress电商主题 2023-05-28 22:56:05
-
wordpress后台地址是多少(附:后台地址修改教程) 2023-05-28 22:54:15
-
盘点2023年依然好用的3款wordpress笔记主题 2023-05-28 22:51:13
-
开源wordpress主题:kratos 介绍 2023-05-28 22:47:46