WordPress附件可以是圖片、視頻、文本文件等類型,但大部分附件函數(shù)都是針對圖片的,本文總結(jié)了常用的附件函數(shù)使用方法。
附件模板文件
https://developer.wordpress.org/themes/template-files-section/attachment-template-files/
來源于:
https://www.solagirl.net/wordpress-image-attachment-funcitons.html
wp_get_attachment_image_src()
<?php wp_get_attachment_image_src(?$attachment_id,?$size,?$icon?); ?>
用于圖片類附件時,根據(jù)附件id和指定的尺寸($size,默認(rèn)是thumbnail)獲取圖片的url、width、height,以數(shù)組形式返回結(jié)果,數(shù)組形式如下
Array
(
????[0] => 圖片url
????[1] => 圖片寬度width
????[2] => 圖片高度 height
????[3] =>??$is_intermediate的值?//true表示返回了縮放后的圖片,false表示返回了原始圖片
)
關(guān)于$is_intermediate參考http://codex.wordpress.org/Function_Reference/image_downsize。
關(guān)于第三個參數(shù)$icon
如果要獲取的附件不是一張圖片,而是,比如說視頻,讓$icon為真可以返回代表視頻(mime type:video)的圖標(biāo),否則只能返回空值。這些代表不同mime type的圖片在wordpress wp-includes/images/crystal目錄下,如下圖所示
wp_get_attachment_image()
<?php wp_get_attachment_image(?$attachment_id,?$size,?$icon,?$attr?); ?>
用于圖片類附件時,根據(jù)附件ID和指定的尺寸($size,默認(rèn)是thumbnail)返回完整的img標(biāo)簽,屬性包括寬度、高度、alt等。
如果是非圖片類附件,$icon為true時返回代表該附件類型的圖片,具體參考上面圖片的說明。
關(guān)于第四個參數(shù)$attr
這個參數(shù)可以給圖片標(biāo)簽增加更多的屬性,屬性用數(shù)組來指定,例如給圖片增加一個title屬性
wp_get_attachment_image(
????$attachment_id,
????'thumbnail',
????false,
????array('title'=>'圖片標(biāo)題')
?);
wp_get_attachment_url()
<?php wp_get_attachment_url(?$attachment_id?); ?>
獲取附件的url
例如:
echo?wp_get_attachment_url( 1 );
?
//返回
https://www.solagirl.net/wp-content/uploads/2012/12/image.jpg
wp_get_attachment_link()
<?php wp_get_attachment_link(?$id,?$size,?$permalink,?$icon,?$text?); ?>
以超鏈接形式返回附件,鏈接包括:
- 如果是圖片,以img標(biāo)簽形式返回某個尺寸的圖片
- 如果不是圖片,且$icon為true,以img標(biāo)簽形式返回代表該類型文件的圖標(biāo)
- 如果不是圖片,且$icon為false,返回附件標(biāo)題
- 由$text指定的文字
例如:
echo?wp_get_attachment_link( 1 );
?
//輸出
<a title="圖片標(biāo)題"?href="https://www.solagirl.net/wp-content/uploads/2012/12/image.jpg">
????<img width="150"?height="150"?alt="misuzu-air"?class="attachment-thumbnail"
????src="https://www.solagirl.net/wp-content/uploads/2012/12/image.jpg">
</a>
如果指定了$te xt參數(shù),則圖片將被替換成文字。
the_attachment_link()
<?php the_attachment_link(?$id,?$fullsize,?$deprecated,?$permalink?); ?>
以超鏈接形式打印附件,與wp_get_attachment_link()基本類似,前者直接輸出結(jié)果,后者返回結(jié)果。
第二個參數(shù)不太一樣,$fullsize是布爾值,只能選擇true or false,表示是使用原始圖片(true)還是使用WordPress產(chǎn)生的縮略圖(false)。
get_attachment_link()
<?php?$attachment_page?= get_attachment_link($attachment_id); ?>
以字符串形式返回專門用于顯示該附件的頁面的url,這個頁面的模版通常是attachment.php。
與wp_get_attachment_url()的區(qū)別,后者以超鏈接形式返回附件的真實(shí)路徑。
wp_get_attachment_metadata()
<?php wp_get_attachment_metadata(?$attachment_id,?$unfiltered?); ?>
獲取圖片類附件的meta信息,附件與post一樣存儲在wp_posts表中,只是類型不同。attachment meta與post meta類似,存儲了有關(guān)該附件的全部信息。attachment meta可以告訴我們:
- 圖片的寬度、高度、原始文件路徑,
- 圖片會根據(jù)多媒體設(shè)定生成其它尺寸,這些不同尺寸的寬高等信息
- 包括圖片本身的信息,例如copyright、iso等
wp_get_attachment_thumb_url()
<?php wp_get_attachment_thumb_url(?$attachment_id?); ?>
獲取附件圖像的縮略圖url
縮略圖尺寸在多媒體中設(shè)置(縮略圖大小一項(xiàng)),上傳圖片時會自動產(chǎn)生縮略圖。
wp_get_attachment_thumb_file()
<?php wp_get_attachment_thumb_file(?$attachment_id?); ?>
此函數(shù)和上面那位很像,唯一的區(qū)別是它返回的是附件縮略圖的絕對路徑,例如
/home/user/www/wp-content/uploads/2012/12/image-150x150.jpg
在使用這個函數(shù)時,發(fā)現(xiàn)無法正常返回結(jié)果,修復(fù)的方法是找到這個函數(shù),修改成下面這樣
函數(shù)位于wp-includes/post.php line 4234
將
if?( !empty($imagedata['thumb']) && ($thumbfile?=?str_replace(basename($file),?$imagedata['thumb'],?$file)) &&?file_exists($thumbfile) )
????????return?apply_filters(?'wp_get_attachment_thumb_file',?$thumbfile,?$post->ID );
替換成
if?( !empty($imagedata['sizes']['thumbnail']['file']) && ($thumbfile?=?str_replace(basename($file),?$imagedata['sizes']['thumbnail']['file'],?$file)) &&?file_exists($thumbfile) )
????????return?apply_filters(?'wp_get_attachment_thumb_file',?$thumbfile,?$post->ID );
?
來源于