当前位置: 首页 > news >正文

WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...

参考WordPress官方文档地址:https://developer.wordpress.org/reference/functions/get_attached_media/

介绍及用途

WordPress[3.6.0以上] 提供了非常方便的获取指定文章ID附件的方式,方便用户获取文章的附件内容.
通常我们将这个函数用于编写例如

  1. 获取文章页所有图片,用于展示丰富的文章图片内容

  2. 我曾经看到过一个文章没有设置特色图像,却能够在文章缩略图上显示被WP裁剪过的图片地址,它不是通过直接从文章内容中获取图片地址生成,而是通过获取附件后,在返回对应的格式进行处理,这类方式比直接从文章分割出图片地址来的更为可靠.

  3. 获取文章页指定格式附件

旧的获取方式

当然,这在[3.6.0]以前版本,也有另外的获取方式,新的函数只是将旧的获取方式进行了打包罢了

// 旧方式,也是现在被打包的方式
$args = array(
    'post_parent' => $post->ID,
    'post_type' => 'attachment',
    'post_mime_type' => $type,
    'posts_per_page' => -1,
    'orderby' => 'menu_order',
    'order' => 'ASC',
);

新的获取函数:

get_attached_media ( string $type, int|WP_Post $post )

该函数一共需要两个参数,一个是附件类型,一个是$post全局变量或文章ID
如果你的附件类型填的是空,那么将会获得到所有的附件,如果填写的是指定的Mime type(附件类型),则会取得对应格式附件.

有哪些Mine type(附件类型)

WordPress 默认有以下附件类型 (因为你可以添加自己的附件类型)

  • image

  • video

  • audio

  • text

  • application

如果你想了解具体文件的附件类型,你可以参考

wp-includes/functions.php [2336 - 2447]
函数名为:wp_get_mime_types()

示例

// 获取文章中所有附件
$attachments = get_attached_media( '', $post->ID );

// 获取文章中所有图片
$attachments = get_attached_media( 'image', $post->ID );

可能导致的问题

WordPress 附件所属文章仅保存第一次上传时的文章.
所以你在其它文章调用这张被上传的图片时,你将不会在(其它文章)获取到该附件.

解决方案

留给你思考(或者等我更新)

相关文章:

  • EF 增删改查 泛型方法、类
  • MongoDB 是如何鼓励和激励开发者社区的
  • dubbo源码分析系列——dubbo的SPI机制源码分析
  • Elasticsearch数据建模-关联查询
  • Ubuntu/Linux 笔记应用 为知笔记(支持markdown)
  • 使用weave实现跨主机docker容器互联
  • 怎么打开Office 2007 Excel加密文档
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • Unity3D 之3D游戏角色控制器运动
  • linux下smb文件共享服务器详解
  • 几何画板中作函数图像的几种方法
  • HighCharts 详细使用及API文档说明
  • HTML最新标准HTML5小结
  • Docker的镜像、容器和仓库
  • 互联网
  • [Vue CLI 3] 配置解析之 css.extract
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • js ES6 求数组的交集,并集,还有差集
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • React的组件模式
  • swift基础之_对象 实例方法 对象方法。
  • Twitter赢在开放,三年创造奇迹
  • ViewService——一种保证客户端与服务端同步的方法
  • vue2.0项目引入element-ui
  • 回流、重绘及其优化
  • 解析带emoji和链接的聊天系统消息
  • 前端工程化(Gulp、Webpack)-webpack
  • 前端学习笔记之观察者模式
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 入门到放弃node系列之Hello Word篇
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • #14vue3生成表单并跳转到外部地址的方式
  • #if #elif #endif
  • #在 README.md 中生成项目目录结构
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (zhuan) 一些RL的文献(及笔记)
  • (zt)最盛行的警世狂言(爆笑)
  • (第27天)Oracle 数据泵转换分区表
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (十一)c52学习之旅-动态数码管
  • (小白学Java)Java简介和基本配置
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)linux 命令大全
  • (转)拼包函数及网络封包的异常处理(含代码)
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .NetCore部署微服务(二)
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .NET序列化 serializable,反序列化
  • .NET中两种OCR方式对比