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

相关文章
-
搭建一个WordPress网站需要多少成本 2023-11-06 00:09:51
-
Symlink介绍(附:如何使用Symlink进行WordPress开发) 2023-11-05 23:38:32
-
让WordPress实现数据库同步的插件:HyperDB 2023-10-24 23:40:49
-
allegro电商平台值得做吗(附:2023年Allegro注册流程指南) 2023-10-08 21:53:39
-
印度跨境电商平台有哪些(附:印度跨境电商做什么产品好) 2023-10-08 21:34:23
-
跨境电商必看的几大海外二手电商平台 2023-10-08 18:04:42
-
WordPress同城互联网产品解决方案:UBASE 2023-10-03 16:40:39
-
WordPress网站的安全插件:wordfence 2023-09-14 09:25:18
-
WordPress 6.3 支持在手动更新插件和主题失败后回滚旧版本 2023-08-28 16:58:45
-
WordPress 6.3版本(2023年8月)性能提升了哪些? 2023-08-28 16:56:02