Мне нужно получить подписи ко всем изображениям, которые я загружаю в галерею с помощью приставки.
Это код в опциях темы с системой редуксов: https://docs.reduxframework.com/core/fields/gallery/
Я пытался показать подписи на сайте WordPress с этим кодом (только для тестирования):
<?php
$attachmentIds = explode(',', $redux_demo['opt-gallery']);
foreach($attachmentIds as $attachmentId):
$metaAttachment = wp_get_attachment_metadata( $attachmentId );
echo '<pre>';
print_r( $metaAttachment );
echo '</pre>';
?>
Но этот код возвращает меня => (пусто)
Array ( [ширина] => 330 [высота] => 180 [файл] => 2015/10 / 330x1805.jpg [размеры] => массив ( [thumbnail] => массив ( [файл] => 330x1805-150x150.jpg [ширина] => 150 [высота] => 150 [MIME-тип] => изображение / JPEG ) [средний] => массив ( [файл] => 330x1805-300x164.jpg [ширина] => 300 [высота] => 164 [MIME-тип] => изображение / JPEG ) ) [image_meta] => массив ( [диафрагма] => 0 [кредит] => [камера] => [подпись] => [made_timestamp] => 0 [авторское право] => [focal_length] => 0 [iso] => 0 [shutter_speed] => 0 [title] => [ориентация] => 0 ) )
Поле заголовка имеет значение, но кажется, что приставка не сохраняет информацию, или мой код неверен?
Это решение, которое я искал:
В файле 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
);
}
В вашем файле шаблона:
<?php
global $redux_demo;
$myGalleryIDs = explode(',', $redux_demo['opt-gallery']);
foreach($myGalleryIDs as $myPhotoID):
$photoArray = wp_get_attachment($myPhotoID);
?>
<a href="<?php echo wp_get_attachment_url( $myPhotoID ); ?>" class="lightbox" title="<?php echo $photoArray; ?>">
<img src="<?php echo wp_get_attachment_url( $myPhotoID ); ?>" class="img-rounded" alt="<?php echo $photoArray[title]; ?>">
</a>
<?php endforeach; ?>
Я надеюсь, что это помогает! 🙂
Других решений пока нет …