На моей странице изображения галереи циклически, и я хотел бы показать их название как подпись. Поскольку get_post_gallery_images
извлекает только эскиз изображений галереи, которые я пытался использовать get_attached_media('image', $post);
вместо.
Следующий код дает мне url и название изображений галереи:
foreach ($ images as $ image) {$ titleArr [] = $ image-> post_title; $ urlArr [] = wp_get_attachment_url ($ image-> ID); }
Однако get_attached_media('image', $post);
возвращает все изображения, которые когда-либо были прикреплены к этому сообщению, даже если они больше не используются в сообщении. Кроме того, для сообщений, где изображения галереи прикреплены к другому сообщению, они не отображаются.
Есть ли эквивалент get_attached_media('image', $post);
который возвращает все URL-адреса изображений и заголовки изображений, находящихся в настоящее время в галерее. Предпочтительно в порядке галереи.
Найден ответ с использованием Shortcode, который помог: Как получить изображения вложений в страницу / сообщение в галерее, чтобы они были установлены в бэкэнд с помощью WP_Query ()?
Теперь мой рабочий код выглядит так:
// Extract the shortcode arguments from the $page or $post $shortcode_args = shortcode_parse_atts(get_match('/\[gallery\s(.*)\]/isU', $post->post_content)); // get the ids specified in the shortcode call $ids = $shortcode_args["ids"]; $attachments = get_posts( array( 'include' => $ids, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'menu_order ID', 'orderby' => 'post__in', //required to order results based on order specified the "include" param ) ); if ($attachments) { foreach ( $attachments as $attachment ) { $urlArr[] = wp_get_attachment_url($attachment->ID); $titleArr[] = $attachment->post_title; } }