可能是平时使用的比较少、不熟练的原因,开发 WordPress 主题或插件过程中,每次使用 WordPress 附件时,我总是需要查文档才能弄清楚附件的一些数据需要怎么样获取,比如:
- alt文本怎么获取?
- 怎么获取图片标题?
为了不再到处找文档,我把获取 WordPress 图片附件数据的方法总结到了本文中,希望能对你也有所帮助。本文主要记录了如何以编程方式获取以下附件数据:
如何获取附件的 Alt 文本
由于图片的 alt 文本存储在文章元数据中,因此我们可以使用get_post_meta()
函数:
$alt_text = get_post_meta( $image_id, '_wp_attachment_image_alt', true );
如何获取标题
标题、字幕和描述是 WP_Post
对象的一部分,我们在这里可以选择使用 get_post_field
或 get_post
函数来获取。
$title = get_post_field( 'post_title', $image_id );
如何获取附件标题
$caption = get_post_field( 'post_excerpt', $image_id );
如何获取附件说明
$description = get_post_field( 'post_content', $image_id );
这到底是如何工作的?
我们知道,WordPress 中的媒体文件只是一种自定义文章类型「attachment」,这意味着:
- 附件在 WordPress 数据库中没有单独的表,附件数据存储在
wp_posts
和wp_postmeta
表中。 - 要处理附件,我们可以使用与处理普通 WordPress 文章时相同的函数,例如
get_posts()
、get_post
()、get_post_meta
()等。
现在,让我们尝试将多次使用 get_post_field
函数替换为一次使用get_post
函数(不过不用担心性能问题,我们也以多次使用 get_post_field
,因为WP_Post
对象是有缓存的)。
$attachment = get_post( $image_id );
// 从 WP_Post 对象轻松获取附件标题
$title = $attachment->post_title;
// 获取标题
$caption = $attachment->post_excerpt;
// 获取描述
$description = $attachment->post_content;
// 获取 Alt 文本时,我们仍然需要使用 get_post_meta() function
$alt_text = get_post_meta( $image_id, '_wp_attachment_image_alt', true );
其实,WordPress 为我们提供了丰富的数据获取函数来帮我们实现自定义开发,只要知道了 WordPress 中的数据存储在哪个数据表中,获取这些数据的方法就显而易见了。