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

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

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

  1. $file_array = [
  2.     'name' => basename($file_path),
  3.     'tmp_name' => $file_path
  4. ]
  5. 
    
  6. $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 来插入到数据库。下面是示例代码。

  1. $url     = "https://wordpress.org/about/images/logos/wordpress-logo-stacked-rgb.png";
  2. $post_id = 1;
  3. $desc    = "The WordPress Logo";
  4. 
    
  5. $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 多媒体数据库中,以便我们在后台管理和前端调用。

原创文章,作者:DavidWu,如若转载,请注明出处:https://www.davidwu.net/archives/81168

WordPress安全防护插件
服务项目 服务内容 收费标准(元)
主题/插件汉化 汉化团队WordPress主题/插件,翻译率95% (以标的主题/插件的句子数量为准)
服务器环境配置 基于您现有服务器,搭建配置网站运行环境,结合我们多年来实战经验,可完美支持WordPress等PHP程序运行,并配置伪静态规则、优化目录权限等问题。服务器我们强烈推荐使用Linux系统。 100元/次
网站托管 若贵站目前尚无技术人员,无法完成服务器环境配置,可选择我们的网站托管服务,直接交付正常运行的WordPress站点,并且无需担心服务器的后续维护工作,一切都由我们来帮您完成。 标配套餐:1000元/年/站点 高配套餐:联系客服获取
网站加速优化 从服务器后端配置优化到WordPress数据库缓存、前端页面缓存、JS和CSS压缩合并,全方位优化网站加载速度,实现秒开。(此服务仅针对(云)服务器/VPS) 500元/次(仅站内优化200元/次)
主题配置 本站所有主题均支持,可快速实现,若有任何问题可以咨询客服解决,若您希望我们提供配置服务,可选购此服务。 英文主题安装 60元/次 汉化主题安装 30元/次
HTTPS配置 HTTPS已经不断普及,并且有着更高的安全性以及SEO上的优待。该服务收取的为服务费,SSL证书产生的费用请自行承担。 100元/次
网站搬家 迁移网站所有文件和数据库信息、网站相关配置的调整、以及迁移中的疑难问题故障排除。 标准收费:500元/次 若网站数据量大,需协商
网站运维 提供整站的运维服务,保证网站正常运行。包含:网站故障定位及排除、网站数据备份和恢复、网站攻击及木马等问题的处理等 标准收费:2000元/年 IP 5000以上需协商

发表评论

电子邮件地址不会被公开。 必填项已用*标注

51建站客服微信二维码
点击这里购买