Estoy usando un archivo adjunto.php para mostrar versiones grandes de imágenes en las que se ha hecho clic en otro lugar. Me gustaría extraer el texto alternativo de la imagen como un título debajo de la imagen con javascript, pero el texto alternativo no se incluye cuando se usa wp_get_attachment_image_src (). No creo que WP tenga una función para recuperarlo, así que necesito la mía. Para escribir esa función, necesito saber ... ¿Dónde está almacenado el texto alternativo para una imagen?
Mi página de archivos adjuntos usa wp_get_attachment_image_src()
, que no incluye el texto alternativo.
<div class = "entry">
<?php
if ( wp_attachment_is_image( $post->id ) ) :
$att_image = wp_get_attachment_image_src( $post->id, "large");?>
<a href="<?php echo wp_get_attachment_url($post->id); ?>"
title="<?php the_title(); ?>"
rel="attachment">
<img class="attached_img"
src="<?php echo $att_image[0];?>"
width="<?php echo $att_image[1];?>"
height="<?php echo $att_image[2];?>"
class="attachment-medium"
alt="<?php $post->post_excerpt; ?>" />
</a>
} <?php endif;?>
</div>
Esta espectáculos:
<div class = "entry">
<a href="http://www.example.com/wp-content/uploads/2010/07/photo_namejpg"
title="My_Photo_Title"
rel="attachment">
<img class="attached_img"
src="http://www.example.com/wp-content/uploads/2010/07/photo_name_and_size.jpg"
width="393"
height="500"
class="attachment-medium"
alt="" />
</a>
</div>
Soy consciente de que $post->post_excerpt
se está llamando en el código anterior, pero no estoy seguro de qué reemplazarlo para obtener el atributo alt de la imagen.
fuente
wp_get_attachment_imgage()
antes y lo olvidé por completo. Tienes razón sobre lo que pensé que realmente necesitaba. Gracias por la info. También tienes razón sobre dónde está almacenado el meta meta ... Miré en ese mismo lugar, pero me evadió a pesar de que debía haber estado mirándolo directamente. Eso es lo que obtengo por entrar al final del día. ¡Gracias de nuevo!wp_get_attachment_image()
devuelve una matriz de la imagen src y los atributos. Parece que solo devuelve html que contiene la imagen y sus atributos. Todavía hace el trabajo, simplemente no sabía si sabía algo que no estaba en la función ref: codex.wordpress.org/Function_Reference/wp_get_attachment_imageConsidere mirar
wp_prepare_attachment_for_js( $attachment )
dónde$attachment
está el objeto WP_Post del archivo adjunto.Esta es una función de "fregadero de cocina", pero proporciona un hash muy agradable con una tonelada de metadatos, que incluye 'alt':
Esto es particularmente útil (como su nombre lo indica), para enviar el metadato de la imagen adjunta a una vista de wp.media vía
wp_send_ajax()
, pero eso no significa que no pueda usarlo para otros fines.Me gusta abstraerme del
_wp_attachment_image_alt
campo meta meta, en caso de que el método para recuperar el texto alternativo cambie (improbable, pero concebible).wp_get_attachment_image_alt()
Sin embargo, creo que hay un caso para un método.fuente
La respuesta de Mike es correcta, por supuesto, pero
$alt_text = get_post_meta($post->ID, '_wp_attachment_image_alt', true);
puede devolver una cadena vacía.wp_get_attachment_image , sin embargo, siempre obtiene un alt_text.
El equipo de Wordpress aplica el siguiente truco, primero, verificando post_except y luego obteniendo el título.
fuente
Descubrí que el texto Alt para los archivos adjuntos se almacenaba en un meta personalizado llamado "_wp_attachment_image_alt"
Entonces, teniendo el ID del archivo adjunto, pude obtener el texto alternativo con este código:
fuente
Si está utilizando WP_Customize_Media_Control () su get_theme_mod () devolverá la identificación de la publicación, pero si está utilizando el nuevo WP_Customize_Image_Control (), get_theme_mod () devolverá la url de la imagen, así fue como pude obtener el texto alternativo usando el WP_Customize_Image_Control ()
Así es como pude hacerlo. Espero que esto ayude a alguien por ahí
Margen
fuente
Para agregar a la respuesta de Mike, alguien puede encontrar esto útil. Es posible que necesite obtener la ID específica del archivo adjunto, por lo que puede hacerlo pasando la ID de publicación al
get_post_thumbnail_id
ejemplo:fuente