如何获取图片标题/ alt属性?
-
-
您正在尝试获取`$ attachment-> ID`的帖子元,但在您的代码中看不到有关`$ attachment`对象的任何信息.You are trying to get the post meta of `$attachment->ID` but I can not see any info about `$attachment` object in your code.
- 1
- 2015-07-01
- cybmeta
-
@cybmeta我从这里获得了此代码段http://wordpress.stackexchange.com/questions/185396/getting-the-image-title-alt-attribute-from-the-gallery-shortcode@cybmeta i have got this code snippet from here http://wordpress.stackexchange.com/questions/185396/getting-the-image-title-alt-attribute-from-the-gallery-shortcode
- 0
- 2015-07-01
- Nisha_at_Behance
-
您也可以使用1)https://wordpress.org/plugins/imageseo/ 2)https://wordpress.org/plugins/auto-image-attributes-from-filename-with-bulk-updater/ 3)https://wordpress.org/plugins/auto-image-alt/希望对您有所帮助!You can also use plugins such as 1) https://wordpress.org/plugins/imageseo/ 2) https://wordpress.org/plugins/auto-image-attributes-from-filename-with-bulk-updater/ 3) https://wordpress.org/plugins/auto-image-alt/ I hope it helps!
- 0
- 2020-02-24
- James
-
5 个回答
- 投票数
-
- 2019-03-04
在此赞誉不绝,因为此帖子是寻找WordPress图片替换和标题时搜索引擎上的热门文章之一.令我感到惊讶的是,这些答案似乎都没有提供一个与问题标题相匹配的简单解决方案,我最终放弃了我的想法,希望对将来的读者有所帮助.
// 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);
作为奖励,这是如何检索图像src.有了以上属性,我们就需要构建静态图像的标记.
$size = 'my-size' // Defaults to 'thumbnail' if omitted. $image_src = wp_get_attachment_image_src($image_id, $size)[0];
Came here as this post is among the top hits on the search engine when looking for WordPress image alt and title. Being rather surprised that none of the answers seem to provide a simple solution matching the question's title I'll drop what I came up with in the end hoping it helps future readers.
// 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);
As a bonus here's how to retrieve an image src. With the above attributes that's all we need to build a static image's markup.
$size = 'my-size' // Defaults to 'thumbnail' if omitted. $image_src = wp_get_attachment_image_src($image_id, $size)[0];
-
您的回答与其他人没有区别.问题中的问题是附件ID不正确,这就是答案.此外,在您的答案中,您会获得当前帖子缩略图的ID,但不会获得所需附件的ID.因此它不能回答/解决OP的问题.I don't get the difference in your answer and the others. The problem in the question was that the attachment ID was not correct, and that is the answer. Additionally, in your answer, you get the ID for the thumbnail of the current post, but not for the desired attachment. so it doesn't answer/solve the question of the OP.
- 0
- 2019-03-20
- cybmeta
-
您可以从哪里获得图像ID.但是还是谢谢你的反对.非常感谢您将我的答案粘贴到您的答案中.Where you get your image ID from is up to you. But thanks for the downvote anyways. Especially nice of you to paste my answer into yours.
- 0
- 2019-03-26
- leymannx
-
您对此表示赞同,就像您描述的那样.在Google上人气很高,很好的答案.You have my upvote for this, It's exactly like you've described. Top hit on google, good answer.
- 1
- 2020-05-08
- user3135691
-
- 2015-07-01
您的问题是您没有为
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 );
Your problem is that you are not providing the correct attachment's ID to
get_post_meta()
andget_the_title()
functions.This is your code to get the
alt
of the image:$image_alt = get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true);
And it is correct, but
$attachment->ID
is not defined in your code, so, the function does not return anything.Reading your code, it seems that you store the ID of the image as a meta field and then you get it with this code:
$image = get_post_meta(get_the_ID(), WPGRADE_PREFIX.'homepage_slide_image', true);
So, assuming that
$image->id
is correct in your code, you should replace this:$image_alt = get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true);
With:
$image_alt = get_post_meta( $image->id, '_wp_attachment_image_alt', true);
That is for getting the
alt
, to get the title:$image_title = get_the_title( $image->id );
-
- 2019-01-29
我在所有主题中都使用了快捷功能来获取图像附件数据:
//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 ); } }
希望这会有所帮助!
I use a quick function in all my themes to get image attachment data:
//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 ); } }
Hope this helps!
-
- 2017-01-02
$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,则使用图像标题;如果缺少标题,则将显示"缺少标题"文本,以供您填充.$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 . '" />'; }
please note that I did not test your
$image->id
, just assumed that you have the right attachment ID. The rest comes from$img_meta
. If alt is missing we are using image title, if title is missing you will see "Missing title" text to nudge you to fill it in. -
- 2017-04-29
好吧,我找到了答案,现在网上一直找不到人.请记住,这仅在主题或插件使用WP_Customize_Image_Control()时有效,如果使用WP_Customize_Media_Control(),则get_theme_mod()将返回ID而不是URL.
对于我的解决方案,我使用的是新版本WP_Customize_Image_Control()
论坛上的许多帖子都有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>
Ok I found the answer that no one has on the net I been looking for days now. Keep in mine this only works if your theme or plugin is using the WP_Customize_Image_Control() if you are using WP_Customize_Media_Control() the get_theme_mod() will return the ID and not the url.
For my solution I was using the newer version WP_Customize_Image_Control()
A lot of posts on the forums have the get_attachment_id() which does not work anymore. I used attachment_url_to_postid()
Here is how I was able to do it. Hope this helps someone out there
// 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 );
Markup
<a href="<?php echo $feature1_url; ?>"><img class="img-responsive center-block" src="<?php echo $feature1; ?>" alt="<?php echo $image1_alt; ?>"></a>
在我的白色主题中,没有为主页滑块发布配置任何alt属性.我通过媒体库界面为图像添加了替代文本.我添加了以下代码来显示替代文本/属性.但它不会显示:
代码如下: