Вывести URL изображений во вложении поста внутри цикла
Доброго времени суток!
Подскажите пожалуйста, нужно вывести все изображения внутри цикла.
Использую функцию:
wp_get_attachment_url()
Выглядит так:
<image> <?php $id = $post->ID; $attachment_image = get_children( array( 'numberposts' => -1, 'post_mime_type' => 'image', 'post_parent' => $id, 'post_type' => 'attachment' ) ); $attachment_image = array_shift($attachment_image); $img = '' . wp_get_attachment_url( $attachment_image->ID ) . ''; echo $img; ?> </image>
Выводит URL таким образом:
<image>http://site.com/wp-content/uploads/001.jpg</image>
Только первое изображение во вложениях прикрепленных к записи.
Нужно реализовать следующим образом.. все тоже самое, но отобразить все URL внутри цикла так:
<image>http://site.com/wp-content/uploads/001.jpg</image>
<image>http://site.com/wp-content/uploads/002.jpg</image>
<image>http://site.com/wp-content/uploads/003.jpg</image>
Именно в теге <image> отдельно для каждого вложения (изображения).
Спасибо.
<ul> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); $attachments = get_posts( array( 'post_parent' => $post->ID, 'post_type' => 'attachment', 'numberposts' => -1, // show all 'post_status' => 'any', 'post_mime_type' => 'image', 'orderby' => 'menu_order', 'order' => 'ASC' ) ); if ( $attachments ) { foreach ( $attachments as $attachment ) { ?> <li><?php echo wp_get_attachment_image( $attachment->ID, 'full' ); ?> <p><?php echo apply_filters( 'the_title', $attachment->post_title ); ?></p> </li> <?php } } endwhile; endif; ?> </ul>
Внутри цикла получаем посты типа «attachment» с ‘post_parent’ => $post->ID.
Затем обрабатываем их в цикле.
Выводятся: картинки + заголовок, надеюсь сможете изменить вывод под себя?
Будут вопросы — обращайтесь.

Для выборки можно использовать попроще:
$attachments = get_posts( array( 'post_type' => 'attachment', 'numberposts' => -1, 'post_status' => null, 'post_parent' => $post->ID ) );
Не смог ответить в комментариях.
Работает
<ul> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); $attachments = get_posts( array( 'post_parent' => $post->ID, 'post_type' => 'attachment', 'numberposts' => -1, // show all 'post_status' => 'any', 'post_mime_type' => 'image', 'orderby' => 'menu_order', 'order' => 'ASC' ) ); if ( $attachments ) { foreach ( $attachments as $attachment ) { ?> <li><?php echo wp_get_attachment_image( $attachment->ID, 'full' ); ?> <p><?php echo apply_filters( 'the_title', $attachment->post_title ); ?></p> </li> <?php } } endwhile; endif; ?> </ul>
Но у меня уже есть цикл. Если вставлять вместе два цикла, то при отображении второй, третей и т.д. постов страница не открывается.
Покажите пожалуйста как это реализовать без
if ( have_posts() ) : while ( have_posts() ) : the_post();
Спасибо.

так просто не писать это))
if ( have_posts() ) : while ( have_posts() ) : the_post();
и
endwhile; endif;
— не нужно, если у вас уже есть цикл

А что с комментариями не так?
Точно))) Спасибо. Я только 5 дней назад кодекс начал изучать.. еще много чего не знаю)) Хорошо что ваш сайт есть)
Пишет: «У вас должно быть 200 очков чтобы добавить комментарий». Вам виднее конечно, но лучше сделать 0, чтобы авторы вопросов могли отвечать вам)

Спасибо, поправил.
И вам спасибо.