我的附件页面使用
wp_get_attachment_image_src()
,其中不包含替代文本。<div class = "entry">
<?php
if ( wp_attachment_is_image( $post->id ) ) :
$att_image = wp_get_attachment_image_src( $post->id, "large");?>
<a href="<?php echo wp_get_attachment_url($post->id); ?>"
title="<?php the_title(); ?>"
rel="attachment">
<img class="attached_img"
src="<?php echo $att_image[0];?>"
width="<?php echo $att_image[1];?>"
height="<?php echo $att_image[2];?>"
class="attachment-medium"
alt="<?php $post->post_excerpt; ?>" />
</a>
} <?php endif;?>
</div>
这表明:
<div class = "entry">
<a href="http://www.example.com/wp-content/uploads/2010/07/photo_namejpg"
title="My_Photo_Title"
rel="attachment">
<img class="attached_img"
src="http://www.example.com/wp-content/uploads/2010/07/photo_name_and_size.jpg"
width="393"
height="500"
class="attachment-medium"
alt="" />
</a>
</div>
我知道上面的代码中正在调用
$post->post_excerpt
,但我不是确保用什么替换它以获取图像的alt属性。 #1 楼
最近,我最近对一个客户项目进行了一些研究,以至于我可以在这里使用它!课文之后,您将看到来自内部的大多数(全部?)图像处理功能的分类列表。 WordPress 3.0.1(我将它们按某种顺序进行了分组,但在分类时没有过多的信任。)
无论如何,回答您所需要的(我认为)而不是您要的(好吧,最后,我也会回答的。)我认为您需要的是
wp_get_attachment_image()
函数,该函数将返回包含以下属性的HTML字符串: > 'src'
,'class'
和'alt'
。WordPress 3.0图像处理函数处理功能以供您和他人参考(以下为您提供的确切问题的答案,以下为跳转):
图像支持/缩略图
'title'
附件
set_post_thumbnail_size( $width = 0, $height = 0, $crop = FALSE )
add_image_size( $name, $width = 0, $height = 0, $crop = FALSE )
get_intermediate_image_sizes()
wp_constrain_dimensions( $current_width, $current_height, $max_width=0, $max_height=0 )
get_attached_file( $attachment_id, $unfiltered = false )
is_local_attachment($url)
update_attached_file( $attachment_id, $file )
wp_attachment_is_image( $post_id = 0 )
wp_count_attachments( $mime_type = '' )
/>
wp_delete_attachment( $post_id, $force_delete = false )
wp_get_attachment_image($attachment_id, $size = 'thumbnail', $icon = false, $attr = '')
wp_get_attachment_image_src($attachment_id, $size='thumbnail', $icon = false)
MIME类型
wp_get_attachment_metadata( $post_id = 0, $unfiltered = false )
wp_get_attachment_thumb_file( $post_id = 0 )
wp_get_attachment_thumb_url( $post_id = 0 )
上传
wp_get_attachment_url( $post_id = 0 )
文件系统
wp_insert_attachment($object, $file = false, $parent = 0)
wp_update_attachment_metadata( $post_id, $data )
HTML
wp_match_mime_types($wildcard_mime_types, $real_mime_types)
低级图像处理: />
wp_mime_type_icon( $mime = 0 )
wp_post_mime_type_where($post_mime_types, $table_alias = '')
如所承诺的,图像的
media_handle_upload()
文本通过_wp_relative_upload_path( $path )
的meta_key作为字符串存储在wp_upload_dir( $time = null )
中。您可能已经知道可以用一个简单的
get_image_tag($id, $alt, $title, $align, $size='medium')
加载它,就像这样:wp_load_image( $file )
#2 楼
考虑查看wp_prepare_attachment_for_js( $attachment )
,其中$attachment
是附件本身的WP_Post对象。这有点“厨房水槽”功能,但它确实提供了非常好的散列和大量元数据,包括'alt':
$response = array(
'id' => $attachment->ID,
'title' => $attachment->post_title,
'filename' => wp_basename( $attachment->guid ),
'url' => $attachment_url,
'link' => get_attachment_link( $attachment->ID ),
'alt' => get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ),
'author' => $attachment->post_author,
'description' => $attachment->post_content,
'caption' => $attachment->post_excerpt,
'name' => $attachment->post_name,
'status' => $attachment->post_status,
'uploadedTo' => $attachment->post_parent,
'date' => strtotime( $attachment->post_date_gmt ) * 1000,
'modified' => strtotime( $attachment->post_modified_gmt ) * 1000,
'menuOrder' => $attachment->menu_order,
'mime' => $attachment->post_mime_type,
'type' => $type,
'subtype' => $subtype,
'icon' => wp_mime_type_icon( $attachment->ID ),
'dateFormatted' => mysql2date( get_option('date_format'), $attachment->post_date ),
'nonces' => array(
'update' => false,
'delete' => false,
'edit' => false
),
'editLink' => false,
'meta' => false,
);
这特别有用(顾名思义),用于通过
wp_send_ajax()
将附件图像元发送到wp.media View,但这并不意味着您不能将其用于其他目的。我喜欢从
_wp_attachment_image_alt
post元字段中抽象出来,以防检索alt文本的方法发生变化(不太可能,但可以想象) 。 但是我确实有一种
wp_get_attachment_image_alt()
方法的情况。评论
正是我想要的。有谁知道它的性能吗?有这么多不同的值可以检索...我想知道...
– Larzan
15年7月16日在13:50
@Larzan我不会担心性能-除非您同时获取数百个图像数据...
–汤姆·俄格(Tom Auger)
15年7月17日在14:17
#3 楼
当然,迈克的答案是正确的,但是$alt_text = get_post_meta($post->ID, '_wp_attachment_image_alt', true);
可能返回一个空字符串。首先,检查post_except,然后获取标题。if(empty($alt_text)) // If not, Use the Caption
{
$attachment = get_post($post->ID);
$alt_text = trim(strip_tags( $attachment->post_excerpt ));
}
if(empty($alt_text)) // Finally, use the title
{
$attachment = get_post($post->ID);
$alt_text = trim(strip_tags( $attachment->post_title ));
}
#4 楼
我发现附件的替代文本存储在名为“ _wp_attachment_image_alt”的自定义元数据中。br />
<?php echo get_post_meta($attachment_id, '_wp_attachment_image_alt', true) ?>
#5 楼
如果您使用的是WP_Customize_Media_Control(),则get_theme_mod()将返回帖子ID,但如果使用的是新的WP_Customize_Image_Control(),则get_theme_mod()将返回图片网址,这就是我能够通过使用WP_Customize_Image_Control获得替代文本的方式。 ()这就是我能够做到的方式。希望这对外面的人有帮助
#6 楼
要增加Mike的答案,可能有人会觉得有用。您可能需要获取附件的特定ID,因此可以通过将Post ID传递给get_post_thumbnail_id
示例来实现: $the_img = wp_get_attachment_image( get_post_thumbnail_id( get_the_ID() ) );
评论
好吧,既然您已经说了,我禁不住感到有点呆滞。我以前使用过wp_get_attachment_imgage()并完全忘记了它。您认为我真正需要的是正确的。谢谢(你的)信息。您也知道alt meta的存储位置...我只是在那个地方看过,但是即使我一定一直在盯着它,它也使我避开了。这就是我在一天结束时要进入的内容。再次感谢!
–kevtrout
2010年8月31日在11:04
嘿,没问题。在最近的黑客名单中,我也问过一些非常明显的问题,只是让答案一经提及就非常明显。很容易错过这里或那里的东西。但是WordPress答案的真正好处是,每个问题和答案都将成为将来其他具有类似问题的人的资源。我什至希望我会用谷歌搜索我回答的内容,但以后忘记了!
– MikeSchinkel
2010年8月31日,11:44
快速问题:您指出wp_get_attachment_image()返回图像src和属性的数组。似乎只返回包含图像及其属性的html。仍然可以完成工作,只是不知道您是否知道函数ref上没有的内容:codex.wordpress.org/Function_Reference/wp_get_attachment_image
–kevtrout
2010年8月31日在15:21
@Mike-只是快速提醒您将有关wp_get_attachment_image的注释更新为数组-使我有些困惑:)。否则,很好的答案!
–乔纳森·沃尔德
2011年7月12日在21:02
非常详细的答案,做得好!
–Bas van Dijk
18年4月23日在9:31