Как получить подпись вложения (get_the_excerpt возвращает цитату родительской записи)?
Я вывожу вложения на странице родительской записи с помощью этого кода:
$args = array('post_type' => 'attachment', 'post_mime_type' => 'image', 'order'=> 'ASC', 'numberposts' => -1, 'post_status' => null, 'post_parent' => $post->ID );
$attachments = get_posts($args);
if ($attachments) {
foreach ( $attachments as $attachment ) {
$attachments_url[] = $my_image;
$attachments_caption[] = get_the_excerpt();
}
}
Проблема в том, что функция get_the_excerpt() возвращает цитату родительской записи, а не подпись вложения.
Знаете ли вы, как вывести подписи вложений? Спасибо.
get_the_excerpt()
должен нормально работать для получения описания.
Ваша проблема в том, что функция ищет запись для обработки в глобальных переменных, а в вашем коде вы не настраиваете их для вложений, которые перебираете.
Вам нужно использовать setup_postdata()
, чтобы это заработало.
Другой способ может быть таким:
get_post_field('post_excerpt', $attachment->ID);

Вы можете использовать wp_prepare_attachment_for_js( $id )
для получения всех необходимых данных о вложении.
Функция вернет массив со следующими элементами:
- id
- title
- filename
- url
- link
- alt
- author
- description
- caption
- name
- status
- uploadedTo
- date
- modified
- menuOrder
- mime
- type
- subtype
- icon
- dateFormatted
- nonces
- editLink
- sizes
- width
- height
- fileLength
- compat
Подробнее в Кодексе: wp_prepare_attachment_for_js()

Это решит вашу проблему
$attachments = attachments_get_attachments();
$total_attachments = count( $attachments );
if( $total_attachments ){
for( $i=0; $i<$total_attachments; $i++ ){
echo $attachments[$i]['title']; // вывод заголовка вложения
echo $attachments[$i]['caption']; // вывод подписи вложения
echo $attachments[$i]['id']; // вывод ID вложения
echo $attachments[$i]['location']; // вывод расположения файла
echo $attachments[$i]['mime']; // вывод MIME-типа
echo $attachments[$i]['filesize']; // вывод размера файла
}
}
