Wie kann ich den Alt-Text eines Bildanhangs abrufen?
5 Antworten
- Stimmen
-
- 2015-04-23
Betrachten Sie
wp_prepare_attachment_for_js( $attachment )
,wobei$attachment
das WP_Post-Objekt des Anhangs selbstist.Diesisteine Art "Küchenspüle" -Funktion,bietet jedocheinen sehr schönen Hashmit einer Menge Metadaten,einschließlich '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, );
Diesistbesondersnützlich (wie der Name schon sagt),um das Meta des Anhangsbilds über
wp_send_ajax()
aneine wp.media-Ansicht zu senden. Diesbedeutetjedochnicht,dass Sieesnicht verwenden könnenfür andere Zwecke.Ichmages,vom Post-Meta-Feld
_wp_attachment_image_alt
weg zu abstrahieren,falls sich die Methode zum Abrufen des Alternativtextesjemals ändert (unwahrscheinlich,aber denkbar).Ich habejedoch das Gefühl,dasseseinen Fallfüreine
wp_get_attachment_image_alt()
-Methodegibt.Consider looking at
wp_prepare_attachment_for_js( $attachment )
, where$attachment
is the WP_Post object of the attachment itself.This is a bit of a "kitchen sink" function, but it does provide a very nice hash with a ton of metadata, including '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, );
This is particularly useful (as the name implies), for sending the attachment image meta to a wp.media View via
wp_send_ajax()
, but that doesn't mean you couldn't use it for other purposes.I like abstracting away from the
_wp_attachment_image_alt
post meta field, in case the method to retrieve the alt text ever changes (unlikely, but conceivable).I do feel that there's a case for a
wp_get_attachment_image_alt()
method however.-
Genau das,wonachichgesucht habe.Hatjemandeine Vorstellung von seiner Leistung?Bei so vielen verschiedenen Werten werden ...ichfragemich ...Exactly what i was looking for. Does anyone have an idea of its performance? With so many different values it retrieves... I wonder...
- 0
- 2015-07-16
- Larzan
-
@Larzan Ich würdemir keine Sorgen um die Leistungmachen -es sei denn,Sieerhalten Hunderte von Bilddatengleichzeitig ...@Larzan I wouldn't worry about performance - unless you're getting hundreds of images data at the same time...
- 0
- 2015-07-17
- Tom Auger
-
- 2015-02-11
Mikes Antwortistnatürlich richtig,aber
$alt_text = get_post_meta($post->ID, '_wp_attachment_image_alt', true);
gibt möglicherweiseeine leere Zeichenfolge zurück.wp_get_attachment_image Erhältjedochimmereinen alt_text.
Das Wordpress-Team wendet zuerst denfolgenden Trick an,indemesnachpost_except sucht und dann den Titelerhält.
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 )); }
Mike's answer is correct, of course, but
$alt_text = get_post_meta($post->ID, '_wp_attachment_image_alt', true);
may return an empty string.wp_get_attachment_image, however, does always get an alt_text.
The Wordpress team applies the following trick, first, checking for the post_except, then obtaining the title.
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 )); }
-
- 2011-12-26
Ich habe herausgefunden,dass der Alt-Textfür Anhängein einembenutzerdefinierten Metanamens "_wp_attachment_image_alt"
gespeichert wurdeMit der ID des Anhangs konnteich den Alternativtextmit folgendem Code abrufen:
<?php echo get_post_meta($attachment_id, '_wp_attachment_image_alt', true) ?>
I found out that the Alt text for attachments was stored on a custom meta called "_wp_attachment_image_alt"
So having the attachment's Id, I was able to get the alt text with this code:
<?php echo get_post_meta($attachment_id, '_wp_attachment_image_alt', true) ?>
-
- 2017-04-28
Wenn Sie WP_Customize_Media_Control () verwenden,gibt get_theme_mod () die Post-ID zurück. Wenn Siejedoch dasneue WP_Customize_Image_Control () verwenden,gibt get_theme_mod () die Bild-URL zurück,von derich den Alternativtexterhalten konnteVerwenden von WP_Customize_Image_Control ()
So konnteichesmachen.Hoffe das hilftjemandem da draußen
// 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>
If you are using WP_Customize_Media_Control() your get_theme_mod() will return the post id but if you are using the new WP_Customize_Image_Control() the get_theme_mod() will return the image url this was how I was able to get the alt text from using the WP_Customize_Image_Control()
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>
-
- 2017-08-10
Um Mikes Antwort zuergänzen,könnte diesjemandnützlichfinden.Möglicherweisemüssen Sie die spezifische ID des Anhangs abrufen,indem Sie die Post-ID an
get_post_thumbnail_id
übergeben. Beispiel:$the_img = wp_get_attachment_image( get_post_thumbnail_id( get_the_ID() ) );
To add to Mike's answer someone might find this useful. You might need to get the specific ID of the attachment, so you can do so by passing the Post ID to
get_post_thumbnail_id
example:$the_img = wp_get_attachment_image( get_post_thumbnail_id( get_the_ID() ) );
Ich verwendeeine Anhang.php-Datei,umgroße Versionen von Bildern anzuzeigen,auf die an anderer Stellegeklickt wurde. Ichmöchte den Bild-Alternativtext als Beschriftungmit Javascript unter das Bild ziehen,aber der Alternativtextistnichtenthalten,wenn wp_get_attachment_image_src () verwendet wird. Ichglaubenicht,dass WPeine Funktion zum Abrufen hat,alsobraucheichmeine eigene. Um diese Funktion zu schreiben,mussich wissen ... Woist der Alternativtextfürein Bildgespeichert?
Meine Anhangsseite verwendet
wp_get_attachment_image_src()
,der den Alternativtextnichtenthält.Dies zeigt:
Miristbekannt,dass der
$post->post_excerpt
im obigen Code aufgerufen wird,aberichbin nicht sicher,durch waserersetzt werden soll,um das alt-Attribut des Bildes zuerhalten.