Ottenere il src delle immagini allegate e aggiungere classi

15 gen 2015, 15:51:14
Visualizzazioni: 20.7K
Voti: 8

Ho dei post che contengono ciascuno 4 immagini allegate. Quello che sto cercando di fare nel mio single.php è ottenere il src di tutte e 4 le immagini per poter aggiungere classi diverse a ciascuna immagine.

<img class="image_1 no_lazy" src="src prima immagine allegata"/>
<img class="image_2" src="src seconda immagine allegata"/>
<img class="image_3" src="src terza immagine allegata"/>
<img class="image_4" src="src quarta immagine allegata"/>

Ecco cosa ho provato, ma ottengo un array invece di ottenere il src... Penso di essere molto vicino alla soluzione, ma non riesco a capire cosa sto facendo di sbagliato...

<?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' ); ?>"/>

qualcuno può aiutarmi con questo?

grazie

0
Tutte le risposte alla domanda 2
0
13

Se vuoi solo aggiungere una classe extra, allora dovresti usare wp_get_attachment_image. Ha pochi parametri aggiuntivi, e l'ultimo viene utilizzato per impostare i nomi delle classi.

Esempio di utilizzo:

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

Il vantaggio principale di questo approccio è che otterrai anche gratuitamente tutti gli attributi srcset.

21 ago 2016 18:25:36
1

wp_get_attachment_image_src restituisce un array con 3 elementi: l'URL dell'immagine, la larghezza e l'altezza. Devi fare echo del primo indice del risultato.

In effetti, puoi rendere il tuo codice un po' più snello utilizzando un ciclo 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 gen 2015 18:32:33
Commenti

se hai solo bisogno dell'URL puoi usare wp_get_attachment_image_url()

iantsch iantsch
14 mar 2016 19:58:32