您好!欢迎来到黑域吧资源网!本站资源24小时自动发货,请放心选购,一次付费,终身下载,售后请联系客服!

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

作者 : 黑域吧 本文共1336个字,预计阅读时间需要4分钟 发布时间: 2020-07-31 共575人阅读

做 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);

函数参数

参数 类型 必要性 默认值 描述
$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 多媒体数据库中,以便我们在后台管理和前端调用。

提示:
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!邮箱:(332547532@qq.com)
2. 分享目的仅供大家学习和交流,请不要用于商业用途!QQ群: 10563080
3. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务 请大家谅解!
5. 如有链接无法下载、失效或广告,请点击右下方联系站长,可领回失去的金币,并额外有奖!
6. 如遇到加密压缩包,默认解压密码请在"下载框架提示方寻找",如遇到无法解压的请联系管理员!
黑域吧资源网 » 从文件路径或URL插入图片到媒体库并关联到文章

发表评论

售后服务:

  • 售后服务范围 1、商业模板使用范围内问题免费咨询
    2、源码安装、模板安装(一般 ¥50-300)服务答疑仅限SVIP用户
    3、单价超过200元的模板免费一次安装,需提供服务器信息。
    付费增值服务 1、提供dedecms模板、WordPress主题、discuz模板优化等服务请详询在线客服
    2、承接 WordPress、DedeCMS、Discuz 等系统建站、仿站、开发、定制等服务
    3、服务器环境配置(一般 ¥50-300)
    4、网站中毒处理(需额外付费,500元/次/质保三个月)
    售后服务时间 周一至周日(法定节假日除外) 9:00-23:00
    免责声明 本站所提供的源码等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: 332547532@qq.com),我们会及时删除,给您带来的不便,我们深表歉意!

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系作者
开通SVIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡