<img class="homepage-slider_image" src="http://www.blabla.com/wp-content/uploads/2013/06/cms-website4-1800x800.jpg" alt="" />
代码如下:
<?php
$image = get_post_meta(get_the_ID(), WPGRADE_PREFIX.'homepage_slide_image', true);
if (!empty($image)) {
$image = json_decode($image);
$image_alt = get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true);
if ( empty( $image_alt )) {
$image_alt = $attachment->post_title;
}
if ( empty( $image_alt )) {
$image_alt = $attachment->post_excerpt;
}
$image_title = $attachment->post_title;
$image_id = $image->id;
$image = wp_get_attachment_image_src( $image_id, 'blog-huge', false);
echo '<img class="homepage-slider_image" src="'.$image[0].'" alt="'. $image_alt .'" />';
}
?>
#1 楼
来到这里是因为这篇文章是寻找WordPress图片替代和标题时搜索引擎上热门的文章之一。令我惊讶的是,所有答案都没有提供一个与问题标题相匹配的简单解决方案,我将放弃我的最终想法,希望对将来的读者有所帮助。br />另外,这里还提供了检索图像src的方法。有了以上属性,我们就需要构建静态图像的标记。
// An attachment/image ID is all that's needed to retrieve its alt and title attributes.
$image_id = get_post_thumbnail_id();
$image_alt = get_post_meta($image_id, '_wp_attachment_image_alt', TRUE);
$image_title = get_the_title($image_id);
评论
您的回答与其他人没有区别。问题中的问题是附件ID不正确,这就是答案。此外,在您的答案中,您将获得当前帖子缩略图的ID,但不会获得所需附件的ID。因此它不能回答/解决OP的问题。
– cybmeta
19年3月20日在11:14
您可以从哪里获得图像ID。但是还是谢谢你的反对。非常感谢您将我的答案粘贴到您的答案中。
–leymannx
19 Mar 26 '19在16:05
您对此表示赞同,就像您描述的那样。在Google上人气很高,很好的答案。
–user3135691
20年5月8日在19:06
#2 楼
您的问题是您没有为get_post_meta()
和get_the_title()
函数提供正确的附件ID。这是获取图像的
alt
的代码:$image_alt = get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true);
这是正确的,但是您的代码中未定义
$attachment->ID
,因此该函数不会返回任何内容。读取代码,似乎您存储了图像的ID作为元字段,然后使用以下代码获取它:
$image = get_post_meta(get_the_ID(), WPGRADE_PREFIX.'homepage_slide_image', true);
因此,假设
$image->id
在您的代码中是正确的,则应替换为:$image_alt = get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true);
使用:
$image_alt = get_post_meta( $image->id, '_wp_attachment_image_alt', true);
用于获取
alt
,以获得标题: $image_title = get_the_title( $image->id );
#3 楼
我在所有主题中都使用了快速功能来获取图像附件数据://get attachment meta
if ( !function_exists('wp_get_attachment') ) {
function wp_get_attachment( $attachment_id )
{
$attachment = get_post( $attachment_id );
return array(
'alt' => get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ),
'caption' => $attachment->post_excerpt,
'description' => $attachment->post_content,
'href' => get_permalink( $attachment->ID ),
'src' => $attachment->guid,
'title' => $attachment->post_title
);
}
}
希望有帮助!
#4 楼
好的,我找到了答案,这是我现在几天都在网上找不到的答案。请记住,这仅在主题或插件使用WP_Customize_Image_Control()时有效,如果使用WP_Customize_Media_Control(),则get_theme_mod()将返回ID而不是URL。对于我的解决方案使用较新版本的WP_Customize_Image_Control()
论坛上的许多帖子都有get_attachment_id(),该get_attachment_id()不再起作用。我使用了attachment_url_to_postid()
,这就是我能够做到的方式。希望这对外面的人有帮助
// This is getting the image / url
$feature1 = get_theme_mod('feature_image_1');
// This is getting the post id
$feature1_id = attachment_url_to_postid($feature1);
// This is getting the alt text from the image that is set in the media area
$image1_alt = get_post_meta( $feature1_id, '_wp_attachment_image_alt', true );
标记
<a href="<?php echo $feature1_url; ?>"><img class="img-responsive center-block" src="<?php echo $feature1; ?>" alt="<?php echo $image1_alt; ?>"></a>
#5 楼
$image = get_post_meta(get_the_ID(), WPGRADE_PREFIX . 'homepage_slide_image', true);
if (!empty($image)) {
$image = json_decode($image);
$image_id = $image->id;
$img_meta = wp_prepare_attachment_for_js($image_id);
$image_title = $img_meta['title'] == '' ? esc_html_e('Missing title','{domain}') : $img_meta['title'];
$image_alt = $img_meta['alt'] == '' ? $image_title : $img_meta['alt'];
$image_src = wp_get_attachment_image_src($image_id, 'blog-huge', false);
echo '<img class="homepage-slider_image" src="' . $image_src[0] . '" alt="' . $image_alt . '" />';
}
请注意,我没有测试您的
$image->id
,只是假设您具有正确的附件ID。其余部分来自$img_meta
。如果缺少alt,则使用图像标题;如果缺少标题,则将看到“缺少标题”文本,以供您填充。
评论
您正在尝试获取$ attachment-> ID的帖子元,但在您的代码中看不到有关$ attachment对象的任何信息。@cybmeta我从这里获得了此代码段wordpress.stackexchange.com/questions/185396/…
您也可以使用插件,例如1)wordpress.org/plugins/imageseo 2)wordpress.org/plugins/…3)wordpress.org/plugins/auto-image-alt我希望它会有所帮助!