Как получить все URL изображений, прикрепленных к записи?
Я искал везде, но никак не могу найти решение.
Я пытаюсь вывести XML-фид со всеми изображениями, прикрепленными к записи из пользовательского типа записи:
</BasicDetails>
<Pictures>
<Picture>
<PictureUrl><?php echo wp_get_attachment_url( get_post_thumbnail_id($post->ID)); ?></PictureUrl>
<Caption></Caption>
</Picture><Picture>
<PictureUrl></PictureUrl>
<Caption></Caption>
</Picture>
</Pictures>
Я использую wp_get_attachment_url, но он возвращает только одно изображение (а их больше одного для каждой записи)
<?php echo wp_get_attachment_url( get_post_thumbnail_id($post->ID)); ?>
Элемент <Picture>
повторяющийся, поэтому для каждого нового изображения должен начинаться новый блок.
Любая помощь будет очень ценной!
Вам нужно пройтись по вложениям внутри цикла записи, замените указанный участок кода на этот (собран из другого найденного мной кода, связанного с похожей проблемой, но не был протестирован):
</BasicDetails>
<?php $args = array(
'post_parent' => $post->ID, // Родительский пост
'post_type' => 'attachment', // Тип поста - вложение
'numberposts' => -1, // показать все
'post_status' => 'any', // Любой статус
'post_mime_type' => 'image', // Только изображения
'orderby' => 'menu_order', // Сортировка по порядку меню
'order' => 'ASC' // По возрастанию
);
$images = get_posts($args);
if($images) { ?>
<Pictures>
<?php foreach($images as $image) { ?>
<Picture>
<PictureUrl><?php echo wp_get_attachment_url($image->ID); ?></PictureUrl> // URL изображения
<Caption><?php echo $image->post_excerpt; ?></Caption> // Подпись изображения
</Picture>
<?php } ?>
</Pictures>
<?php } ?>
<Agent>
РЕДАКТИРОВАНО - Обновлено на основе правок автора вопроса.

@Marco предполагая, что после этого фрагмента кода сразу идет какой-то php код, последний тег должен быть открыт да, если вы выводите больше тегов, вы можете просто добавить ?>
в конце. Так что это будет либо как опубликовано <?php }
, либо <?php } ?>

Понял, хотя я добавил указанное выше условие if(
в function.php, и это вызвало падение моего сайта. Я должен был упомянуть, что использую коммерческую тему, которая сильно кастомизирована.

@Marco, не мог бы ты обновить вопрос, добавив весь соответствующий раздел functions.php, а также любой фронтенд-код?

@Marco, я обновил решение и добавил немного контекста в начало и конец блока кода. Дай мне знать, как у тебя дела. Если снова появится белый экран, можешь включить wp_debug в wp-config.php и проверить, какая ошибка выводится?

попробую, как только мой сервер снова заработает (не по теме, но не используйте bluehost)

Потрясающе!! Если бы вы были в Нью-Йорке, я бы купил вам пиво. У меня есть ещё одна проблема - post_per_page почему-то ограничивается 45. Когда я ставлю -1
, получаю ошибку парсинга. Есть идеи?

@Marco Хотел бы! Можешь попробовать добавить nopaging => true,
в аргументы твоего запроса постов в начале.

хаха, ну если вдруг — дай мне знать! nopaging, кажется, не сработал. Может, мне стоит создать новый вопрос.

Давай продолжим обсуждение в чате.
