obtenir des images jointes src et ajouter des classes

8

J'ai des messages dont chacun contient 4 images jointes. ce que j'essaye de faire dans mon single.php est d'obtenir que les 4 images src soient capables d'ajouter des classes différentes à chaque image.

<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"/>

voici ce que j'ai essayé, mais j'obtiens un tableau au lieu d'obtenir le src ... Je pense que je suis vraiment proche de la solution, mais je ne peux pas savoir ce que je fais 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' ); ?>"/>

Quelqu'un peut-il m'aider avec ça ?

Merci

user2882154
la source

Réponses:

13

Si vous souhaitez uniquement ajouter une classe supplémentaire, vous devez utiliser wp_get_attachment_image. Il a quelques paramètres supplémentaires, et le dernier est utilisé pour définir les noms de classe.

Exemple d'utilisation:

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

Le principal avantage de cette approche est que vous obtiendrez également tous les srcsetattributs gratuitement.

Ionut Staicu
la source
0

wp_get_attachment_image_srcrenvoie un tableau avec 3 éléments; l'URL de l'image, la largeur et la hauteur. Vous devez faire écho au premier index du résultat.

En fait, vous pouvez rendre votre code un peu plus léger en utilisant une foreachboucle:

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
la source
si vous avez juste besoin de l'URL que vous pouvez utiliserwp_get_attachment_image_url()
iantsch