Вывести все изображения из постов
Много людей интересовались, как же вывести все изображения опубликованные в постах. Мы придумали простое решение для этого дела.
Следующий код нужно будет вставить в код вашей темы WordPress, он ищет все изображения в постах, сохраняет их в массив и затем выводит.
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php
$szPostContent = $post->post_content;
$szSearchPattern = '~<img [^\>]*\ />~';
// Запускаем preg_match_all для сохранения всех изображений в $aPics
preg_match_all( $szSearchPattern, $szPostContent, $aPics );
// Проверяем на количество
$iNumberOfPics = count($aPics[0]);
if ( $iNumberOfPics > 0 ) {
// Здесь мы решаем, что делать с изображениями
// В этом примере мы их просто показываем
for ( $i=0; $i < $iNumberOfPics ; $i++ ) {
echo $aPics[0][$i];
};
};
endwhile;
endif;
?>
Обработать изображения вы можете любым способом, можно подключить карусель на Ajax и выводить их красивенько.
Понравилась статья?
Подпишись на нашу
Хочешь постовой?
Напиши на своем блоге о нашем сайте и в скором времени получишь от нас трекбек!










Как при помощи этого когда сделать виджет? чтобь выводились картинки в виджете с новости и они были кликабельные? Буду очень благодарен за помощь!
Смотря откуда выводить картинку, если из произвольного поля – это одно, если из текста самого поста, то это уже совсем другая задача, что вам конкретно нужно?
Здорово!
А можно сделать, чтобы картинки были ссылками на посты, из которых они выведены?
А если бы вместе с картинкой выводилось еще название и анонс поста – было бы вообще замечательно.
Я пыталась сделать это самостоятельно, но ничего не вышло.
Поможете?
Можно, но только тогда сделать это проще совсем по другому. Вот код без стилей оформления:
$rc_posts = get_posts("category=1&numberposts=2&orderby=date");foreach($rc_posts as $rc_post){
$first_img = '';
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $rc_post->post_content, $matches);
$first_img = $matches [1] [0];
if(empty($first_img)){ //Подключаем картинку по умолчанию, если в посте нет изображений
$first_img = "/images/preview.jpg";
}
echo '<img src="'.$first_img.'" />';
echo '<li><a href="' . get_permalink($rc_post) . '" rel="nofollow">' . get_the_title($rc_post) . '</a><br />';
echo wpautop($rc_post->post_excerpt);
echo '</li>';
}
wprecipe, спасибо, почти то, что нужно.
А нужно чтобы на страницу записи можно было загрузить много изображений, так, как здесь –
А на Главной, чтобы из последней статьи, сменяя др.др. выводились картинки.
как на этой странице – .
Это я пытаюсь адаптировать под наши реалии тему Broker.
В ней очень странно реализован вывод изображений. Вроде через произвольные поля, но когда я пытаюсь их вывести обычным способом – ключ+значение, ничего не выводится.
вы не возьметесь это доработать?
Кстати, в последнем коде, картинки не являются ссылками на посты, из которых они выведены. Если тупо вставить ссылку вокруг изображения, выдает ошибку.
Как это правильно сделать?
wprecipe, а как сделать, чтобы и картинка и надпись загружались одновременно, а то сначала на пустом экране выводится надпись, потом ее сменяет картинка, потом следующая надпись и т.д.
Хотелось, чтобы одновременно и надпись и картинка, и не было в промежутке пустой страницы.
Я забросала вас вопросами. Sorry…
Чтобы картинки стали активными ссылками, надо строку
echo ‘<img src=”‘.$first_img.’” />’; заменить на
echo ‘<a href=”‘ . get_permalink($rc_post) . ‘” rel=”nofollow”><img src=”‘.$first_img.’” /></a>’;
Скидывайте ссылку на то, что у вас есть, доработаем совместными усилиями.
Спасибо за желание помочь.
Я воспользовалась вашим кодом:
$rc_posts = get_posts("category=223&numberposts=&orderby=date");
foreach($rc_posts as $rc_post){
$first_img = '';
$output = preg_match_all('//i', $rc_post->post_content, $matches);
$first_img = $matches [1] [0];
if(empty($first_img)){ //Подключаем картинку по умолчанию, если в посте нет изображений
$first_img = "/images/preview.jpg";
}
echo '';
echo '' . get_the_title($rc_post) . '';
}
Этот код создает очень красивый эффект смены картинок.
Но, к сожалению, он не выводить картинки из произвольных полей, только из текста.
А нужно как раз из произвольных полей.
И второе, хотелось, чтобы на фоне картинки появлялось название поста, из которого эта картинка взята.
Сейчас Название и сама Картинка появляются попеременно: сначала название, а потом изображение, потом опять название следующего поста, его сменяет картинка из этого поста.
В промежутках между картинками, пустой экран с одиноким названием поста выглядит некрасиво.
Как сделать:
- чтобы картинки выводились из произвольных полей.
- одновременно появлялось название поста и картинка из него. (Я потом оформлю стилями так, чтобы название было на темной полосе внизу картинки).
Буду очень благодарна за помощь.
Написал вам на почту.
wprecipe, большущее спасибо за помощь и за отзывчивость.
Это то, что нужно.
А подскажите, как мне получить все изображения всех постов. Получаю только последних 5 (видимо из-за опции, по 5 постов на страницу)???
Перед циклом поставьте query_posts(’posts_per_page=5′); – цифра это количество постов на страницу, после цикла обязательно сбросить wp_reset_query();
Здраствуйте! Поставил код
$rc_posts = get_posts(”category=1&numberposts=2&orderby=date”);
foreach($rc_posts as $rc_post){
$first_img = ”;
$output = preg_match_all(’//i’, $rc_post->post_content, $matches);
$first_img = $matches [1] [0];
if(empty($first_img)){ //Подключаем картинку по умолчанию, если в посте нет изображений
$first_img = “/images/preview.jpg”;
}
echo ”;
echo ‘‘ . get_the_title($rc_post) . ‘‘;
echo wpautop($rc_post->post_excerpt);
echo ”;
}
У меня отображаютса иероглифи руского язика! И можна зделать так штоб новости виводились в ряд тоисть 5 новостей в одному ряду потом 5 другом и так далие?
тоисть 5 картинок!
Если вам нужно в ряд отобразить картинки, это делается при помощи стилей, делайте float:left;
Что же касаемо иероглифов, проверьте в какой кодировке файл, можно при помощи notepad++ сохранить как utf8 без bom
А можите написать код штоб он видавал 3 ряда по 5 картинок по горизонтале? Когда вставляю Ваш код functions.php мне видает
Warning: Cannot modify header information – headers already sent by (output started at /home/kempe119/domains/hatunka.in.ua/public_html/wp-content/themes/tech-blog-22/functions.php:26) in /home/kempe119/domains/hatunka.in.ua/public_html/wp-content/plugins/post-star-rating/psr.class.php on line 368
яЛП яЛП
Можите скинуть на пошту?
ТОисть штоб он брал из трех нових постов толька картинку и назву поста и если появились новие пости он их менял!
Отпешите!!!!!
Код нужно вставлять в файл шаблона, например index.php или page.php.
$rc_posts = get_posts(”category=1&numberposts=15&orderby=date”);
foreach($rc_posts as $rc_post){
$first_img = ”;
$output = preg_match_all(’/<img.+src=[\'"]([^\'"]+)[\'"].*>/i’, $rc_post->post_content, $matches);
$first_img = $matches [1] [0];
if(empty($first_img)){ //Подключаем картинку по умолчанию, если в посте нет изображений
$first_img = “/images/preview.jpg”;
}
echo ‘<li><img src=”‘.$first_img.’” />’;
echo ‘<a href=”‘ . get_permalink($rc_post) . ‘” rel=”nofollow”>’ . get_the_title($rc_post) . ‘</a><br />’;
echo wpautop($rc_post->post_excerpt);
echo ‘</li>’;
}
Этот код вам подойдет, всё, что осталось – описать оформление в стилях темы
echo ‘’; заменить на
echo ‘’;
Не почучаетса зделать картинку сьілкой???
Отпишите!!!!!! Не получаетса зделать картинки силками!!!!
в первом выводе echo, после li вставить вторую строку, заменить get_the_title($rc_post) на картинку из первой строки