Come recuperare il testo alternativo di un allegato immagine?
5 risposta
- voti
-
- 2015-04-23
Considera lapossibilità diesaminare
wp_prepare_attachment_for_js( $attachment )
,dove$attachment
è l'oggetto WP_Post dell'allegato stesso.Questa è unafunzione unpo '"lavello da cucina",mafornisce un hashmolto carino con un sacco dimetadati,incluso "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, );
Questo èparticolarmente utile (come suggerisceilnome),perinviareilmeta dell'immagine dell'allegato a una vista wp.mediatramite
wp_send_ajax()
,ma ciònon significa chenonpuoi usarloper altri scopi.Mipiace astrarre dalmeta campo delpost
_wp_attachment_image_alt
,nel casoin cuiilmetodoper recuperareiltesto alternativo cambi (improbabile,ma concepibile).Tuttavia,penso che ci sia unmotivoper unmetodo
wp_get_attachment_image_alt()
.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.-
Esattamente quello che stavo cercando.Qualcuno ha un'idea delle sueprestazioni?Con cosìtanti valori diversi recupera ...mi chiedo ...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 Nonmi preoccuperei delleprestazioni,ameno chetunon riceva centinaia di dati diimmagini contemporaneamente ...@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
La risposta Mike è corretta,ovviamente,ma
$alt_text = get_post_meta($post->ID, '_wp_attachment_image_alt', true);
potrebbe restituire una stringa vuota.wp_get_attachment_image ,tuttavia,ottiene sempre un alt_text.
Ilteam di Wordpress applicail seguentetrucco,prima controllandoilpost_except,quindi ottenendoiltitolo.
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
Ho scoperto cheiltesto alternativopergli allegatieramemorizzatoin unmetapersonalizzato chiamato "_wp_attachment_image_alt"
Quindi,avendo l'ID dell'allegato,sono statoin grado di ottenereiltesto alternativo con questo codice:
<?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
Se stai usando WP_Customize_Media_Control ()iltuoget_theme_mod () restituirà l'id delpostma se stai usandoilnuovo WP_Customize_Image_Control ()ilget_theme_mod () restituirà l'URL dell'immagine questo è statoilmodoin cui sono statoin grado di ottenereiltesto alternativo dautilizzando WP_Customize_Image_Control ()
Ecco come sono riuscito afarlo.Spero che questo aiuti qualcuno làfuori
// 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
Per aggiungere alla risposta di Mike qualcunopotrebbetrovarlo utile.Potrebbeesserenecessario ottenere l'ID specifico dell'allegato,quindipuoifarlopassando l'ID delpost a
get_post_thumbnail_id
esempio:$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() ) );
Sto usando unfile attachment.phppermostrare versionigrandi diimmagini su cui è statofatto clic altrove. Vorreiestrarreiltesto alternativo dell'immagine come didascalia sotto l'immagine conjavascript,mailtesto alternativonon èincluso quando si utilizza wp_get_attachment_image_src (). Nonpenso che WP abbia unafunzioneper recuperarlo,quindi hobisogno dellamia. Per scrivere quellafunzione hobisogno di sapere ... Dove èmemorizzatoiltesto alternativo di un'immagine?
Lamiapagina degli allegati utilizza
wp_get_attachment_image_src()
,chenonincludeiltesto alternativo.Questomostra:
Sono a conoscenza delfatto che
$post->post_excerpt
viene chiamatonel codiceprecedente,manon sono sicuro di cosa sostituirloper ottenere l'attributo alt dell'immagine.