Как получить атрибут title / 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];
-
Я не понимаю разницы в вашем ответе и других.Проблема в вопросе заключалась в том,что идентификатор вложения был неверным,и это ответ.Кроме того,в своем ответе вы получаете идентификатор эскиза текущего сообщения,но не нужного вложения.поэтому он не отвечает/не решает вопрос 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
-
Откуда вы получите свой идентификатор изображения,зависит от вас.Но все равно спасибо за отрицательный голос.Особенно приятно,что вы вставили мой ответ в свой.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()
.Это ваш код для получения
alt
изображения:$image_alt = get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true);
И это правильно,но
$attachment->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
,просто предполагал,что у вас правильный идентификатор вложения.Остальное поступает из$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 () вернет идентификатор,а не 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,настроенного для публикации домашнего слайдера. Я добавил замещающий текст для изображения через интерфейс медиа-библиотеки. Я добавил следующий код для отображения альтернативного текста/атрибута. Но не отображается:
Вот код: