it-swarm.com.de

Wie kann ich eine Bildbeschreibung/einen Titel/eine Alternative für ein Galeriebild erhalten?

Ich zeige ein Galeriebild an, möchte aber auch die Beschriftung für das Bild anzeigen. Ich kann die Informationen erhalten, die wir einfügen, wenn wir ein Bild in WordPress Dashboard wie "Titel/Beschriftung/ALT/Beschreibung" hochladen. Ich möchte jemanden holen und anzeigen.

<?php    
    $gallery = get_post_gallery_images( $post );
    foreach( $gallery as $image_url ) :    
?>                                

    <div class="item" style="background-image: url('<?php echo $image_url ?>'); background-size: cover">
        <div class="caption">                
            <!-- Here I want display the Title/Caption/ALT/Description of image -->
            <h2><?php echo $image_url->"DESCRIPTION/TITLE/ALT"; ?> </h2>
        </div>                                        
    </div>

Beim Lesen der Dokumente von get_post_gallery_images habe ich keine Lösung für mein Problem gefunden.
Ich fand auch diese Antwort aber ich weiß nicht, ob es funktioniert und ich habe Fehler in meinem Code zu implementieren.

Wie kann ich das lösen?

2
Zkk

Sie müssen die metadata jedes Bildes abrufen und diese zu Ihrer functions.php-Datei hinzufügen:

function get_post_gallery_images_with_info($postvar = NULL) {
    if(!isset($postvar)){
        global $post;
        $postvar = $post;//if the param wasnt sent
    }


    $post_content = $postvar->post_content;
    preg_match('/\[gallery.*ids=.(.*).\]/', $post_content, $ids);
    $images_id = explode(",", $ids[1]); //we get the list of IDs of the gallery as an Array


    $image_gallery_with_info = array();
    //we get the info for each ID
    foreach ($images_id as $image_id) {
        $attachment = get_post($image_id);
        array_Push($image_gallery_with_info, array(
            'alt' => get_post_meta($attachment->ID, '_wp_attachment_image_alt', true),
            'caption' => $attachment->post_excerpt,
            'description' => $attachment->post_content,
            'href' => get_permalink($attachment->ID),
            'src' => $attachment->guid,
            'title' => $attachment->post_title
                )
        );
    }
    return $image_gallery_with_info;
}

benutze es in deiner Logik so:

<?php    
    $gallery = get_post_gallery_images_with_info($post); //you can use it without params too
    foreach( $gallery as $image_obj ) :    
?>                                

    <div class="item" style="background-image: url('<?php echo $image_obj['src'] ?>'); background-size: cover">
        <div class="caption">                
            <!-- Here I want display the Title/Caption/ALT/Description of image -->
            <h2><?php echo $image_obj['title']." ". $image_obj['caption']." ".$image_obj['description']; ?> </h2>
        </div>                                        
    </div>
<?php    
endforeach;
?>

es wird so ausgegeben:

 enter image description here 

jedes von der Funktion zurückgegebene Bild ist ein Array wie folgt:

Array
        (
            [alt] => Alt Coffe
            [caption] => Caption coffe
            [description] => Description coffe
            [href] => http://yoursite/2017/02/14/hello-world/coffee/
            [src] => http://yoursite/wp-content/uploads/sites/4/2017/02/coffee.jpg
            [title] => coffee
        )

beachten Sie, dass href und src unterschiedlich sind, einer ist der Permalink und der andere die direkte URL.

2
David Lee

Die Beschriftung für ein Bild besteht eigentlich aus Metadaten, die an das Bild angehängt sind, und get_post_gallery_images gibt nur eine URL zurück, sodass Sie im Array keine weiteren Informationen haben.

Sie könnten versuchen, etwas wie:

<?php    
    $gallery = get_post_gallery_images( $post );
    foreach( $gallery as $image_url ) :  

    //get the id of the image post.
    $image_id = url_to_postid( $image_url ) 
    //get the image "post" information
    $image = get_post($image_id);
    //get the image title
    $image_title = $image->post_title;
    //get the image caption
    $image_caption = $image->post_excerpt;

?>                                

    <div class="item" style="background-image: url('<?php echo $image_url ?>'); background-size: cover">
        <div class="caption">                
            <!-- Here I want display the Title/Caption/ALT/Description of image -->
            <h2><?php echo $image_caption; ?> </h2>
        </div>                                        
    </div>
1
Kyon147