可能是平時(shí)使用的比較少、不熟練的原因,開發(fā) WordPress 主題或插件過程中,每次使用 WordPress 附件時(shí),我總是需要查文檔才能弄清楚附件的一些數(shù)據(jù)需要怎么樣獲取,比如:
- alt文本怎么獲?。?/li>
- 怎么獲取圖片標(biāo)題?
為了不再到處找文檔,我把獲取 WordPress 圖片附件數(shù)據(jù)的方法總結(jié)到了本文中,希望能對(duì)你也有所幫助。本文主要記錄了如何以編程方式獲取以下附件數(shù)據(jù):

如何獲取附件的 Alt 文本
由于圖片的 alt 文本存儲(chǔ)在文章元數(shù)據(jù)中,因此我們可以使用get_post_meta()函數(shù):
$alt_text = get_post_meta( $image_id, '_wp_attachment_image_alt', true );
如何獲取標(biāo)題
標(biāo)題、字幕和描述是 WP_Post對(duì)象的一部分,我們?cè)谶@里可以選擇使用 get_post_field 或 get_post 函數(shù)來獲取。
$title = get_post_field( 'post_title', $image_id );
如何獲取附件標(biāo)題
$caption = get_post_field( 'post_excerpt', $image_id );
如何獲取附件說明
$description = get_post_field( 'post_content', $image_id );
這到底是如何工作的?
我們知道,WordPress 中的媒體文件只是一種自定義文章類型「attachment」,這意味著:
- 附件在 WordPress 數(shù)據(jù)庫中沒有單獨(dú)的表,附件數(shù)據(jù)存儲(chǔ)在
wp_posts和wp_postmeta表中。 - 要處理附件,我們可以使用與處理普通 WordPress 文章時(shí)相同的函數(shù),例如
get_posts()、get_post()、get_post_meta()等。
現(xiàn)在,讓我們嘗試將多次使用 get_post_field函數(shù)替換為一次使用get_post函數(shù)(不過不用擔(dān)心性能問題,我們也以多次使用 get_post_field,因?yàn)?code>WP_Post對(duì)象是有緩存的)。
$attachment = get_post( $image_id );
// 從 WP_Post 對(duì)象輕松獲取附件標(biāo)題
$title = $attachment->post_title;
// 獲取標(biāo)題
$caption = $attachment->post_excerpt;
// 獲取描述
$description = $attachment->post_content;
// 獲取 Alt 文本時(shí),我們?nèi)匀恍枰褂?get_post_meta() function
$alt_text = get_post_meta( $image_id, '_wp_attachment_image_alt', true );
其實(shí),WordPress 為我們提供了豐富的數(shù)據(jù)獲取函數(shù)來幫我們實(shí)現(xiàn)自定義開發(fā),只要知道了 WordPress 中的數(shù)據(jù)存儲(chǔ)在哪個(gè)數(shù)據(jù)表中,獲取這些數(shù)據(jù)的方法就顯而易見了。


