obtener imágenes adjuntas src y agregar clases

8

Tengo publicaciones cuyo cada uno contiene 4 imágenes adjuntas. lo que estoy tratando de hacer en mi single.php es hacer que las 4 imágenes src sean capaces de agregar diferentes clases a cada imagen.

<img class="image_1 no_lazy" src="first attached image src"/>
<img class="image_2" src="second attached image src"/>
<img class="image_3" src="third attached image src"/>
<img class="image_4" src="fourth attached image src"/>

Esto es lo que he intentado, pero obtengo una matriz en lugar de obtener el src ... Creo que estoy muy cerca de la solución, pero no puedo descubrir 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' ); ?>"/>

Puede alguien ayudarme con esto ?

Gracias

usuario2882154
fuente

Respuestas:

13

Si solo desea agregar una clase adicional, entonces debe usar wp_get_attachment_image. Tiene pocos parámetros adicionales, y el último se usa para establecer nombres de clase.

Uso de la muestra:

<?php echo wp_get_attachment_image( get_the_ID(), 'thumbnail', "", ["class" => "my-custom-class"] ); ?>

La principal ventaja de este enfoque es que también obtendrá todos los srcsetatributos de forma gratuita.

Ionut Staicu
fuente
0

wp_get_attachment_image_srcdevuelve una matriz con 3 elementos; la URL de la imagen, el ancho y el alto. Necesita hacer eco del primer índice del resultado.

De hecho, puede hacer que su código sea un poco más simple usando un foreachbucle:

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] . '" />';
}
TheDeadMedic
fuente
si solo necesita la URL que puede usarwp_get_attachment_image_url()
iantsch