Come posso ottenere la descrizione/titolo/alt per un'immagine della galleria?
Sto visualizzando un'immagine della galleria ma voglio anche mostrare la didascalia dell'immagine. Posso ottenere le informazioni che inseriamo quando carichiamo un'immagine nella Dashboard di WordPress come "Titolo/Didascalia/ALT/Descrizione". Vorrei ottenere e visualizzare uno qualsiasi di questi.
<?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">
<!-- Qui voglio visualizzare il Titolo/Didascalia/ALT/Descrizione dell'immagine -->
<h2><?php echo $image_url->"DESCRIZIONE/TITOLO/ALT"; ?> </h2>
</div>
</div>
Leggendo la documentazione di get_post_gallery_images non ho trovato una soluzione per il mio problema.
Ho trovato anche questa risposta ma non so se funziona e ho errori nell'implementarla nel mio codice.
In ogni caso, come posso risolvere questo problema?

Devi ottenere i metadata
di ogni immagine, aggiungi questo al tuo file functions.php
:
function get_post_gallery_images_with_info($postvar = NULL) {
if(!isset($postvar)){
global $post;
$postvar = $post;//se il parametro non è stato inviato
}
$post_content = $postvar->post_content;
preg_match('/\[gallery.*ids=.(.*).\]/', $post_content, $ids);
$images_id = explode(",", $ids[1]); //otteniamo la lista degli ID della galleria come Array
$image_gallery_with_info = array();
//otteniamo le informazioni per ogni 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;
}
usalo nella tua logica in questo modo:
<?php
$gallery = get_post_gallery_images_with_info($post); //puoi usarlo anche senza parametri
foreach( $gallery as $image_obj ) :
?>
<div class="item" style="background-image: url('<?php echo $image_obj['src'] ?>'); background-size: cover">
<div class="caption">
<!-- Qui voglio visualizzare il Titolo/Didascalia/ALT/Descrizione dell'immagine -->
<h2><?php echo $image_obj['title']." ". $image_obj['caption']." ".$image_obj['description']; ?> </h2>
</div>
</div>
<?php
endforeach;
?>
produrrà un output come questo:
ogni immagine restituita dalla funzione è un array come questo:
Array
(
[alt] => Alt Caffè
[caption] => Didascalia caffè
[description] => Descrizione caffè
[href] => http://yoursite/2017/02/14/hello-world/coffee/
[src] => http://yoursite/wp-content/uploads/sites/4/2017/02/coffee.jpg
[title] => caffè
)
nota che href
e src
sono diversi, uno è il permalink e l'altro il URL
diretto.

Sono nuovo a WordPress e PHP - dove hai inserito questa parte di codice?

La didascalia di un'immagine è in realtà un meta_dato associato all'immagine e la funzione get_post_gallery_images restituisce solo un URL, quindi nell'array non avrai altre informazioni.
Potresti provare qualcosa come:
<?php
$gallery = get_post_gallery_images( $post );
foreach( $gallery as $image_url ) :
//ottieni l'ID del post dell'immagine
$image_id = url_to_postid( $image_url )
//ottieni le informazioni del "post" dell'immagine
$image = get_post($image_id);
//ottieni il titolo dell'immagine
$image_title = $image->post_title;
//ottieni la didascalia dell'immagine
$image_caption = $image->post_excerpt;
?>
<div class="item" style="background-image: url('<?php echo $image_url ?>'); background-size: cover">
<div class="caption">
<!-- Qui voglio visualizzare Titolo/Didascalia/ALT/Descrizione dell'immagine -->
<h2><?php echo $image_caption; ?> </h2>
</div>
</div>
