Contents
WordPress附件可以是图片、视频、文本文件等类型,但大部分附件函数都是针对图片的,本文总结了常用的附件函数使用方法。
wp_get_attachment_image_src()
1 |
<span class="pun"><?</span><span class="pln">php wp_get_attachment_image_src</span><span class="pun">(</span><span class="pln"> $attachment_id</span><span class="pun">,</span><span class="pln"> $size</span><span class="pun">,</span><span class="pln"> $icon </span><span class="pun">);</span> <span class="pun">?></span> |
用于图片类附件时,根据附件id和指定的尺寸($size,默认是thumbnail)获取图片的url、width、height,以数组形式返回结果,数组形式如下
1 2 3 4 5 6 7 |
<span class="typ">Array</span> <span class="pun">(</span> <span class="pun">[</span><span class="lit">0</span><span class="pun">]</span> <span class="pun">=></span> <span class="pun">图片</span><span class="pln">url </span><span class="pun">[</span><span class="lit">1</span><span class="pun">]</span> <span class="pun">=></span> <span class="pun">图片宽度</span><span class="pln">width </span><span class="pun">[</span><span class="lit">2</span><span class="pun">]</span> <span class="pun">=></span> <span class="pun">图片高度</span><span class="pln"> height </span><span class="pun">[</span><span class="lit">3</span><span class="pun">]</span> <span class="pun">=></span><span class="pln"> $is_intermediate</span><span class="pun">的值</span> <span class="com">//true表示返回了缩放后的图片,false表示返回了原始图片</span> <span class="pun">)</span> |
关于$is_intermediate参考http://codex.wordpress.org/Function_Reference/image_downsize。
关于第三个参数$icon
如果要获取的附件不是一张图片,而是,比如说视频,让$icon为真可以返回代表视频(mime type:video)的图标,否则只能返回空值。这些代表不同mime type的图片在wordpress wp-includes/images/crystal目录下,如下图所示
wp_get_attachment_image()
1 |
<span class="pun"><?</span><span class="pln">php wp_get_attachment_image</span><span class="pun">(</span><span class="pln"> $attachment_id</span><span class="pun">,</span><span class="pln"> $size</span><span class="pun">,</span><span class="pln"> $icon</span><span class="pun">,</span><span class="pln"> $attr </span><span class="pun">);</span> <span class="pun">?></span> |
用于图片类附件时,根据附件ID和指定的尺寸($size,默认是thumbnail)返回完整的img标签,属性包括宽度、高度、alt等。
如果是非图片类附件,$icon为true时返回代表该附件类型的图片,具体参考上面图片的说明。
关于第四个参数$attr
这个参数可以给图片标签增加更多的属性,属性用数组来指定,例如给图片增加一个title属性
1 2 3 4 5 6 |
<span class="pln">wp_get_attachment_image</span><span class="pun">(</span><span class="pln"> $attachment_id</span><span class="pun">,</span> <span class="str">'thumbnail'</span><span class="pun">,</span> <span class="kwd">false</span><span class="pun">,</span><span class="pln"> array</span><span class="pun">(</span><span class="str">'title'</span><span class="pun">=></span><span class="str">'图片标题'</span><span class="pun">)</span> <span class="pun">);</span> |
wp_get_attachment_url()
1 |
<span class="pun"><?</span><span class="pln">php wp_get_attachment_url</span><span class="pun">(</span><span class="pln"> $attachment_id </span><span class="pun">);</span> <span class="pun">?></span> |
获取附件的url
例如:
1 2 3 |
<span class="pln">echo wp_get_attachment_url</span><span class="pun">(</span> <span class="lit">1</span> <span class="pun">);</span> <span class="com">//返回</span><span class="pln"> http</span><span class="pun">:</span><span class="com">//www.solagirl.net/wp-content/uploads/2012/12/image.jpg</span> |
wp_get_attachment_link()
1 |
<span class="pun"><?</span><span class="pln">php wp_get_attachment_link</span><span class="pun">(</span><span class="pln"> $id</span><span class="pun">,</span><span class="pln"> $size</span><span class="pun">,</span><span class="pln"> $permalink</span><span class="pun">,</span><span class="pln"> $icon</span><span class="pun">,</span><span class="pln"> $text </span><span class="pun">);</span> <span class="pun">?></span> |
以超链接形式返回附件,链接包括:
如果是图片,以img标签形式返回某个尺寸的图片
如果不是图片,且$icon为true,以img标签形式返回代表该类型文件的图标
如果不是图片,且$icon为false,返回附件标题
由$text指定的文字
例如:
1 2 3 4 5 6 |
<span class="pln">echo wp_get_attachment_link</span><span class="pun">(</span> <span class="lit">1</span> <span class="pun">);</span> <span class="com">//输出</span> <span class="pun"><</span><span class="pln">a title</span><span class="pun">=</span><span class="str">"图片标题"</span><span class="pln"> href</span><span class="pun">=</span><span class="str">"http://www.solagirl.net/wp-content/uploads/2012/12/image.jpg"</span><span class="pun">></span> <span class="pun"><</span><span class="pln">img width</span><span class="pun">=</span><span class="str">"150"</span><span class="pln"> height</span><span class="pun">=</span><span class="str">"150"</span><span class="pln"> alt</span><span class="pun">=</span><span class="str">"misuzu-air"</span> <span class="kwd">class</span><span class="pun">=</span><span class="str">"attachment-thumbnail"</span><span class="pln"> src</span><span class="pun">=</span><span class="str">"http://www.solagirl.net/wp-content/uploads/2012/12/image.jpg"</span><span class="pun">></span> <span class="pun"></</span><span class="pln">a</span><span class="pun">></span> |
如果指定了$te xt参数,则图片将被替换成文字。
the_attachment_link()
1 |
<span class="pun"><?</span><span class="pln">php the_attachment_link</span><span class="pun">(</span><span class="pln"> $id</span><span class="pun">,</span><span class="pln"> $fullsize</span><span class="pun">,</span><span class="pln"> $deprecated</span><span class="pun">,</span><span class="pln"> $permalink </span><span class="pun">);</span> <span class="pun">?></span> |
以超链接形式打印附件,与wp_get_attachment_link()基本类似,前者直接输出结果,后者返回结果。
第二个参数不太一样,$fullsize是布尔值,只能选择true or false,表示是使用原始图片(true)还是使用WordPress产生的缩略图(false)。
get_attachment_link()
1 |
<span class="pun"><?</span><span class="pln">php $attachment_page </span><span class="pun">=</span><span class="pln"> get_attachment_link</span><span class="pun">(</span><span class="pln">$attachment_id</span><span class="pun">);</span> <span class="pun">?></span> |
以字符串形式返回专门用于显示该附件的页面的url,这个页面的模版通常是attachment.php。
与wp_get_attachment_url()的区别,后者以超链接形式返回附件的真实路径。
wp_get_attachment_metadata()
1 |
<span class="pun"><?</span><span class="pln">php wp_get_attachment_metadata</span><span class="pun">(</span><span class="pln"> $attachment_id</span><span class="pun">,</span><span class="pln"> $unfiltered </span><span class="pun">);</span> <span class="pun">?></span> |
获取图片类附件的meta信息,附件与post一样存储在wp_posts表中,只是类型不同。attachment meta与post meta类似,存储了有关该附件的全部信息。attachment meta可以告诉我们:
图片的宽度、高度、原始文件路径,
图片会根据多媒体设定生成其它尺寸,这些不同尺寸的宽高等信息
包括图片本身的信息,例如copyright、iso等
wp_get_attachment_thumb_url()
1 |
<span class="pun"><?</span><span class="pln">php wp_get_attachment_thumb_url</span><span class="pun">(</span><span class="pln"> $attachment_id </span><span class="pun">);</span> <span class="pun">?></span> |
获取附件图像的缩略图url
缩略图尺寸在多媒体中设置(缩略图大小一项),上传图片时会自动产生缩略图。
wp_get_attachment_thumb_file()
1 |
<span class="pun"><?</span><span class="pln">php wp_get_attachment_thumb_file</span><span class="pun">(</span><span class="pln"> $attachment_id </span><span class="pun">);</span> <span class="pun">?></span> |
此函数和上面那位很像,唯一的区别是它返回的是附件缩略图的绝对路径,例如
1 |
<span class="str">/home/</span><span class="pln">user</span><span class="pun">/</span><span class="pln">www</span><span class="pun">/</span><span class="pln">wp</span><span class="pun">-</span><span class="pln">content</span><span class="pun">/</span><span class="pln">uploads</span><span class="pun">/</span><span class="lit">2012</span><span class="pun">/</span><span class="lit">12</span><span class="pun">/</span><span class="pln">image</span><span class="pun">-</span><span class="lit">150x150.jpg</span> |
在使用这个函数时,发现无法正常返回结果,修复的方法是找到这个函数,修改成下面这样
函数位于wp-includes/post.php line 4234
将
1 2 |
<span class="kwd">if</span> <span class="pun">(</span> <span class="pun">!</span><span class="pln">empty</span><span class="pun">(</span><span class="pln">$imagedata</span><span class="pun">[</span><span class="str">'thumb'</span><span class="pun">])</span> <span class="pun">&&</span> <span class="pun">(</span><span class="pln">$thumbfile </span><span class="pun">=</span><span class="pln"> str_replace</span><span class="pun">(</span><span class="pln">basename</span><span class="pun">(</span><span class="pln">$file</span><span class="pun">),</span><span class="pln"> $imagedata</span><span class="pun">[</span><span class="str">'thumb'</span><span class="pun">],</span><span class="pln"> $file</span><span class="pun">))</span> <span class="pun">&&</span><span class="pln"> file_exists</span><span class="pun">(</span><span class="pln">$thumbfile</span><span class="pun">)</span> <span class="pun">)</span> <span class="kwd">return</span><span class="pln"> apply_filters</span><span class="pun">(</span> <span class="str">'wp_get_attachment_thumb_file'</span><span class="pun">,</span><span class="pln"> $thumbfile</span><span class="pun">,</span><span class="pln"> $post</span><span class="pun">-></span><span class="pln">ID </span><span class="pun">);</span> |
替换成
1 2 |
<span class="kwd">if</span> <span class="pun">(</span> <span class="pun">!</span><span class="pln">empty</span><span class="pun">(</span><span class="pln">$imagedata</span><span class="pun">[</span><span class="str">'sizes'</span><span class="pun">][</span><span class="str">'thumbnail'</span><span class="pun">][</span><span class="str">'file'</span><span class="pun">])</span> <span class="pun">&&</span> <span class="pun">(</span><span class="pln">$thumbfile </span><span class="pun">=</span><span class="pln"> str_replace</span><span class="pun">(</span><span class="pln">basename</span><span class="pun">(</span><span class="pln">$file</span><span class="pun">),</span><span class="pln"> $imagedata</span><span class="pun">[</span><span class="str">'sizes'</span><span class="pun">][</span><span class="str">'thumbnail'</span><span class="pun">][</span><span class="str">'file'</span><span class="pun">],</span><span class="pln"> $file</span><span class="pun">))</span> <span class="pun">&&</span><span class="pln"> file_exists</span><span class="pun">(</span><span class="pln">$thumbfile</span><span class="pun">)</span> <span class="pun">)</span> <span class="kwd">return</span><span class="pln"> apply_filters</span><span class="pun">(</span> <span class="str">'wp_get_attachment_thumb_file'</span><span class="pun">,</span><span class="pln"> $thumbfile</span><span class="pun">,</span><span class="pln"> $post</span><span class="pun">-></span><span class="pln">ID </span><span class="pun">);</span> |

