Часто бывает необходимо получить src всех картинок поста или стационарной страницы, например, в виде массива для последующей верстки шаблона. Сделать это можно многими способами. Но тут есть некоторые тонкости.
Первый способ
Для получения и вывода всех изображений, прикрепленных посту, можно воспользоваться функцией get_posts(). В аргументах функции надо задать: post_parent - id поста, картинки которого мы хотим получить, post_type' => 'attachment', 'post_mime_type' => 'image', остальное - по вкусу.
$args = array(
'order' => 'ASC',
'post_type' => 'attachment',
'post_parent' => '26',
'post_mime_type' => 'image',
'post_status' => null,
'numberposts' => -1
);
$attachments = get_posts($args);
if ($attachments) {
foreach ($attachments as $attachment) {
$img_url = wp_get_attachment_image_url($attachment->ID, full);
}
}
wp_reset_postdata();
Не забываем ставить wp_reset_postdata()!
Картинки можно вывести, например, в виде галереи prettyPhoto:
<ul class="gallery"> <li>>a title="Фото" href="<?php echo $img_url; ?>" rel="prettyPhoto[gallery1]"><img src="<?php echo $img_url; ?>" alt="Фото" /></a></li> </ul>
Второй способ
Можно использовать функцию get_page_children() - она получает все дочерние элементы, в том числе и рисунки.
$my_wp_query = new WP_Query();
$img_pages = $my_wp_query->query(array('post_type' => 'attachment','post_mime_type' => 'image'));
$img_children=get_page_children( $post->ID, $img_pages );
Это вставляется внутрь основного цикла. $post->ID - это id текущего поста в цикле. Если нужны картинки конкретного поста, ставим сюда конкретный ID.
Третий способ
Самый короткий и простой способ - получить изображения с помощью get_attached_media():
$imgs = get_attached_media( 'image', $post->ID );
foreach($imgs as $img){
$image_url = $img->guid;
echo '<img src="'. $image_url .'" />';
}
Когда это не работает
Если при вставке картинок в пост они не загружались с компьютера, а брались из медиа-библиотеки, все три способа, приведенные выше не сработают, если картинки были уже прикреплены ранее к какому-то другому посту. Но выход есть: нужно получить текст поста в переменную и с помощью регулярного выражения вытащить из него src картинок. Далее можно сверстать страницу по своему вкусу.
<?php $str= get_the_content();
preg_match_all('/src="([^"]+)"/i', $str, $matches);
$img_urls = $matches[1]; ?>
<?php if($img_urls) { ?>
<ul class="gallery">
<? foreach ($img_urls as $img_url) {?>
<li><a href="<?php echo $img_url; ?>" rel="prettyPhoto[cat-<?php echo $post->ID; ?>]" title="<?php the_title(); ?>"><img src="<?php echo $img_url; ?>" alt="" /></a></li>
<?php }} ?>
</ul>
Иконка поста
Вывести иконку поста можно, например, так:
$image_url = wp_get_attachment_image_src( get_post_thumbnail_id(), 'medium'); echo '<div class="post_thumbnail"><img src="'.$image_url[0].'" alt="" /></div>';
ID), 'thumb'); $title = get_the_title($post->ID); if($thumb_url) { echo "$thumb_url[0]"; } ?>Здравствуйте! Здравствуйте! Не подскажите, как вывести картинку в начале поста, которая установлена в качестве миниатюры, но в самой теме разработчиком не предусмотрен ее вывод в начале поста. Не судите строго, если сформулировал свой вопрос не достаточно правильно, я только учусь работать с вордпресс.
ID), ‘thumb’); $title = get_the_title($post->ID); if($thumb_url) { echo «$thumb_url[0]»; } ?>
$thumb_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'thumb'); $title = get_the_title($post->ID); if($thumb_url) { echo "$thumb_url[0]"; }админ! сделай чтоб код можно было писать!
И удали мой бред этот ))))