Obtener el src de imágenes adjuntas y agregar clases

15 ene 2015, 15:51:14
Vistas: 20.7K
Votos: 8

Tengo entradas que contienen 4 imágenes adjuntas cada una. Lo que estoy tratando de hacer en mi single.php es obtener el src de las 4 imágenes para poder agregar diferentes clases a cada imagen.

<img class="image_1 no_lazy" src="src de la primera imagen adjunta"/>
<img class="image_2" src="src de la segunda imagen adjunta"/>
<img class="image_3" src="src de la tercera imagen adjunta"/>
<img class="image_4" src="src de la cuarta imagen adjunta"/>

Esto es lo que he intentado, pero obtengo un array en lugar de obtener el src... Creo que estoy muy cerca de la solución, pero no puedo encontrar qué estoy haciendo mal...

<?php
  global $post;
  $args = array( 
    'post_parent' => $post->ID, 
    'post_type' => 'attachment', 
    'post_mime_type' => 'image', 
    'orderby' => 'menu_order', 
    'order' => 'ASC', 
    'numberposts' => 4 );
   $images = get_posts($args); ?>

<img class="image_1 no_lazy" src="<?php  echo wp_get_attachment_image_src( $images[0]->ID, 'full' ); ?>"/>
<img class="image_2" src="<?php  echo wp_get_attachment_image_src( $images[1]->ID, 'full' ); ?>"/>
<img class="image_3" src="<?php  echo wp_get_attachment_image_src( $images[2]->ID, 'full' ); ?>"/>
<img class="image_4" src="<?php  echo wp_get_attachment_image_src( $images[3]->ID, 'full' ); ?>"/>

¿Alguien puede ayudarme con esto?

Gracias

0
Todas las respuestas a la pregunta 2
0
13

Si solo quieres añadir una clase extra, entonces deberías usar wp_get_attachment_image. Tiene pocos parámetros adicionales, y el último se usa para establecer nombres de clase.

Ejemplo de uso:

<?php echo wp_get_attachment_image( get_the_ID(), 'thumbnail', "", ["class" => "mi-clase-personalizada"] ); ?>

La principal ventaja de este enfoque es que también obtendrás automáticamente todos los atributos srcset.

21 ago 2016 18:25:36
1

wp_get_attachment_image_src devuelve un array con 3 elementos: la URL de la imagen, el ancho y el alto. Necesitas imprimir el primer índice del resultado.

De hecho, puedes hacer tu código un poco más limpio usando un bucle foreach:

foreach ( $images as $i => $image ) {
    $src = wp_get_attachment_image_src( $image->ID, 'full' );

    echo '<img class="image_' . ++$i;
    if ( $i === 1 )
        echo ' no_lazy';
    echo '" src="' . $src[0] . '" />';
}
15 ene 2015 18:32:33
Comentarios

si solo necesitas la URL puedes usar wp_get_attachment_image_url()

iantsch iantsch
14 mar 2016 19:58:32