Как получить WP галерею Image Captions?

Я пытаюсь получить галерею изображений и информацию о сообщении через цикл. Все, что я получаю источники изображений, но не подписи. Вот мой код

<?php
/* The loop */
while ( have_posts() ) :
the_post();
if ( get_post_gallery() ) :
$gallery = get_post_gallery( get_the_ID(), false );
/* Loop through all the image and output them one by one */
foreach( $gallery['src'] AS $src ) {
?>

<img src="<?php echo $src; ?>" class="my-custom-class" alt="Gallery image" />

<?php
}
endif;
endwhile;
?>

Используя этот цикл, я получаю только источник изображений галереи в посте. Но я хочу также получить подписи к изображениям.

4

Решение

Нашел решение на wordpress.org:

Вставьте это в ваши functions.php:

function wp_get_attachment( $attachment_id ) {

$attachment = get_post( $attachment_id );
return 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
);
}

Затем вы можете просто ввести идентификатор и получить любую мета, что вам нужно, например:

attachment_meta = wp_get_attachment(your_attachment_id);

И затем либо перебирайте значения массива, либо просто ссылайтесь по имени ключа того, что вы хотите (т.е. заголовок, описание и т. Д.):

echo $attachment_meta['caption'];

Выше будет повторять заголовок изображения.

Кредит идет в Люк Млсна а также sporkme за это.

6

Другие решения

wp_prepare_attachment_for_js функция действительно хороша для такого рода вещей. Он возвращает тонну информации о вложениях, все, что нам когда-либо понадобится, я думаю.

Вот оригинальный код, замененный на тот, который делает подпись доступной. В этом случае я поместил заголовок в тег alt:

<?php
/* The loop */
while ( have_posts() ) :
the_post();
if ( get_post_gallery() ) :
$gallery = get_post_gallery( get_the_ID(), false );
/* create an array of IDs from  */
$gids = explode( ",", $gallery['ids'] );
/* Loop through all the image and output them one by one */
foreach ($gids as $id) {
/* pull all the available attachment data with the new function */
$attachment = wp_prepare_attachment_for_js($id);
/* Uncomment the next line to see all the available data in $attachment */
//var_dump($attachment);
/* pick and choose which bits are needed */
?>
<img src="<?php echo $attachment['sizes']['thumbnail']['url']; ?>" class="my-custom-class" alt="<?php echo $attachment['caption']; ?>" />
<?php
}
endif;
endwhile;
?>

Стоит отметить, что эта функция также возвращает все доступные размеры изображений, поэтому она может быть полезна при использовании комбинации нестандартные размеры изображений а также srcset для адаптивных имиджевых решений 🙂

4

вместо того, чтобы передать get_the_ID, просто передайте весь пост $ и используйте код примерно так

$gallery = get_post_gallery( $post, false );
$gids = explode( ",", $gallery['ids'] );

foreach( $gids as $id ) {
// here you can use the $id to fetch any details of image like below and many more
wp_get_attachment_url( $id );
wp_get_attachment_metadata( $id );
}

Вы можете попробовать распечатать значение этих функций и использовать его в соответствии с вашими требованиями

1
По вопросам рекламы [email protected]