Pregunta

Estoy usando un archivo attachment.php para mostrar grandes versiones de las imágenes que se han hecho clic en otra parte. Me gustaría sacar el texto alt de la imagen como una leyenda bajo la imagen con javascript, pero el texto alternativo no se incluye cuando se utiliza cuando wp_get_attachment_image_src (). No creo WP tiene una función para recuperarlo, así que necesito mi propio. Para escribir la función que necesito saber ... ¿Dónde está el texto alternativo para una imagen almacenada?

Mi apego utiliza la página 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>

Este muestra:

<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 el $post->post_excerpt está siendo llamado en el código anterior, pero no estoy seguro de lo que lo sustituya por conseguir atributo alt de la imagen.

¿Fue útil?

Solución

Hace poco hizo una investigación para un proyecto de cliente recientemente así lo-y-he aquí Cómo llego a usarlo aquí!

Después de que el texto que va a ver una lista por categorías de la mayoría (todos?) De la manipulación de las funciones desde dentro de WordPress 3.0.1 imagen (I ellos agrupados en un cierto orden, pero no pongo demasiado crédito en mi categorización .)

De todos modos, respondiendo a lo que (creo) que necesita en lugar de lo que has pedido ( bien, voy a responder a eso también, al final ) Creo que lo que necesita es la función wp_get_attachment_image() que devolverá una cadena HTML que contiene los siguientes atributos:

  • 'src',
  • 'class',
  • 'alt' y
  • 'title'.

WordPress 3.0 manejo de imágenes Funciones

Así que aquí están las funciones para su referencia y de otros manejo de la imagen de WordPress' ( salto a continuación para la respuesta a su pregunta exacta ):

soporte de imágenes / miniaturas

Accesorio

Tipos MIME

Cargas

sistema de archivos

HTML

bajo nivel de gestión de imágenes:


Como prometió el Imagen de 'alt' texto se almacena como una cadena en wp_postmeta con el meta_key de '_wp_attachment_image_alt' .

Como probablemente ya sabe que puede cargar con un simple get_post_meta() este modo:

$alt_text = get_post_meta($post->ID, '_wp_attachment_image_alt', true);

Otros consejos

considerar la búsqueda de wp_prepare_attachment_for_js( $attachment ), donde $attachment es el objeto WP_Post de la propia fijación.

Esto es un poco de una función "fregadero de la cocina", pero proporciona un muy buen hash con una tonelada de metadatos, incluyendo '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,
    );

Esto es particularmente útil (como su nombre indica), para enviar la imagen meta apego a un wp.media Ver a través de wp_send_ajax(), pero eso no quiere decir que no se podría utilizar para otros fines.

Me gusta la abstracción fuera del campo meta posterior _wp_attachment_image_alt, en caso de que el método para recuperar el texto alternativo cambia nunca (poco probable, pero concebible).

Siento que hay un caso de un método wp_get_attachment_image_alt() sin embargo.

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, no siempre obtener una ALT_TEXT.

El equipo de Wordpress se aplica el siguiente truco, en primer lugar, la comprobación de la post_except, a continuación, obtener el título.

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 )); 
}

Me enteré de que el texto alternativo para los archivos adjuntos se almacenan en un meta personalizado llamado "_wp_attachment_image_alt"

Así que tener el ID del archivo adjunto, que fue capaz de obtener el texto alternativo con este código:

<?php echo get_post_meta($attachment_id, '_wp_attachment_image_alt', true) ?>

Si está utilizando WP_Customize_Media_Control () su get_theme_mod () devolverá el ID del mensaje, pero si usted está utilizando el nuevo WP_Customize_Image_Control () la get_theme_mod () devolverá la imagen url así era como yo era capaz de obtener el texto alternativo de usando el WP_Customize_Image_Control ()

Así es como yo era capaz de hacerlo. Esperamos que esto ayude a alguien por ahí

// 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 );

marcado

<a href="<?php echo $feature1_url; ?>"><img class="img-responsive center-block" src="<?php echo $feature1; ?>" alt="<?php echo $image1_alt; ?>"></a>

Para añadir a alguien respuesta de Mike podría resultar útil. Puede que sea necesario para obtener el ID específico de la unión, por lo que puede hacerlo pasando el ID del anuncio al ejemplo get_post_thumbnail_id:

  $the_img = wp_get_attachment_image( get_post_thumbnail_id( get_the_ID() ) );
Licenciado bajo: CC-BY-SA con atribución
scroll top