Вывести 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
 ) );
 

в 23.02.2016.
Добавить Комментарий

Не смог ответить в комментариях.

Работает

<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;
 

— не нужно, если у вас уже есть цикл

в 23.02.2016.

А что с комментариями не так?

в 23.02.2016.
Добавить Комментарий

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

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

в 23.02.2016.

И вам спасибо.

в 23.02.2016.
Добавить Комментарий

Ваш ответ

Размещая свой ответ, вы соглашаетесь с правилами сайта.