it-swarm.com.de

abrufen von Anhangsbildern und Hinzufügen von Klassen

Ich habe Posts, deren jedes 4 angehängte Bilder enthält. Was ich in meiner single.php versuche, ist, alle 4 Bilder src in die Lage zu versetzen, jedem Bild eine andere Klasse hinzuzufügen.

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

folgendes habe ich versucht, aber ich erhalte ein Array, anstatt den src zu erhalten ... Ich glaube, ich bin der Lösung sehr nahe, kann aber nicht herausfinden, was ich falsch mache ...

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

kann mir jemand dabei helfen?

vielen Dank

8
user2882154

Wenn Sie nur eine zusätzliche Klasse hinzufügen möchten, sollten Sie wp_get_attachment_image verwenden. Es gibt einige zusätzliche Parameter, und der letzte wird zum Festlegen von Klassennamen verwendet.

Beispielnutzung:

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

Der Hauptvorteil dieses Ansatzes besteht darin, dass Sie auch die gesamten Attribute srcset kostenlos erhalten.

12
Ionut Staicu

wp_get_attachment_image_src gibt ein Array mit 3 Elementen zurück; die Bild-URL, die Breite und die Höhe. Sie müssen den ersten Index des Ergebnisses wiederholen.

Tatsächlich können Sie Ihren Code mit einer foreach-Schleife etwas schlanker gestalten:

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] . '" />';
}
0
TheDeadMedic