Портрет на заказ цена Заказать портрет по фото онлайн justhappy информация

Вывести все изображения из постов

Полезные рецепты для WordPress

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

Следующий код нужно будет вставить в код вашей темы 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 и выводить их красивенько.

Хочешь постовой?

Напиши на своем блоге о нашем сайте и в скором времени получишь от нас трекбек!

24 комментариев »

  1. Как при помощи этого когда сделать виджет? чтобь выводились картинки в виджете с новости и они были кликабельные? Буду очень благодарен за помощь!

    Отзыв оставил: DimaUA — 13 февраля 2010 @ 18:47
  2. Смотря откуда выводить картинку, если из произвольного поля – это одно, если из текста самого поста, то это уже совсем другая задача, что вам конкретно нужно?

    Отзыв оставил: wprecipe — 15 февраля 2010 @ 6:33
  3. Здорово!
    А можно сделать, чтобы картинки были ссылками на посты, из которых они выведены?
    А если бы вместе с картинкой выводилось еще название и анонс поста – было бы вообще замечательно.
    Я пыталась сделать это самостоятельно, но ничего не вышло.

    Поможете?

    Отзыв оставил: Ksana — 30 марта 2010 @ 1:56
  4. Можно, но только тогда сделать это проще совсем по другому. Вот код без стилей оформления:
    $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 — 30 марта 2010 @ 14:17
  5. wprecipe, спасибо, почти то, что нужно.

    А нужно чтобы на страницу записи можно было загрузить много изображений, так, как здесь – http://gorillathemes.com/broker/single-family-home-2/

    А на Главной, чтобы из последней статьи, сменяя др.др. выводились картинки.
    как на этой странице – http://gorillathemes.com/broker/.

    Это я пытаюсь адаптировать под наши реалии тему Broker.
    В ней очень странно реализован вывод изображений. Вроде через произвольные поля, но когда я пытаюсь их вывести обычным способом – ключ+значение, ничего не выводится.

    вы не возьметесь это доработать?

    Отзыв оставил: Ksana — 30 марта 2010 @ 21:26
  6. Кстати, в последнем коде, картинки не являются ссылками на посты, из которых они выведены. Если тупо вставить ссылку вокруг изображения, выдает ошибку.
    Как это правильно сделать?

    Отзыв оставил: Ksana — 30 марта 2010 @ 21:29
  7. wprecipe, а как сделать, чтобы и картинка и надпись загружались одновременно, а то сначала на пустом экране выводится надпись, потом ее сменяет картинка, потом следующая надпись и т.д.
    Хотелось, чтобы одновременно и надпись и картинка, и не было в промежутке пустой страницы.
    Я забросала вас вопросами. Sorry…

    Отзыв оставил: Ksana — 30 марта 2010 @ 21:49
  8. Чтобы картинки стали активными ссылками, надо строку
    echo ‘<img src=”‘.$first_img.’” />’; заменить на
    echo ‘<a href=”‘ . get_permalink($rc_post) . ‘” rel=”nofollow”><img src=”‘.$first_img.’” /></a>’;

    Отзыв оставил: wprecipe — 31 марта 2010 @ 3:42
  9. Скидывайте ссылку на то, что у вас есть, доработаем совместными усилиями.

    Отзыв оставил: wprecipe — 31 марта 2010 @ 3:44
  10. Спасибо за желание помочь.
    Я воспользовалась вашим кодом:

    $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) . '';
    }

    Этот код создает очень красивый эффект смены картинок.
    Но, к сожалению, он не выводить картинки из произвольных полей, только из текста.

    А нужно как раз из произвольных полей.

    И второе, хотелось, чтобы на фоне картинки появлялось название поста, из которого эта картинка взята.

    Сейчас Название и сама Картинка появляются попеременно: сначала название, а потом изображение, потом опять название следующего поста, его сменяет картинка из этого поста.

    В промежутках между картинками, пустой экран с одиноким названием поста выглядит некрасиво.

    Как сделать:
    - чтобы картинки выводились из произвольных полей.
    - одновременно появлялось название поста и картинка из него. (Я потом оформлю стилями так, чтобы название было на темной полосе внизу картинки).

    Буду очень благодарна за помощь.

    Отзыв оставил: Ksana — 1 апреля 2010 @ 18:27
  11. Написал вам на почту.

    Отзыв оставил: wprecipe — 1 апреля 2010 @ 23:29
  12. wprecipe, большущее спасибо за помощь и за отзывчивость.
    Это то, что нужно.

    Отзыв оставил: Ksana — 2 апреля 2010 @ 12:04
  13. А подскажите, как мне получить все изображения всех постов. Получаю только последних 5 (видимо из-за опции, по 5 постов на страницу)???

    Отзыв оставил: Борис — 2 апреля 2010 @ 15:02
  14. Перед циклом поставьте query_posts(’posts_per_page=5′); – цифра это количество постов на страницу, после цикла обязательно сбросить wp_reset_query();

    Отзыв оставил: wprecipe — 2 апреля 2010 @ 16:21
  15. Здраствуйте! Поставил код

    $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 другом и так далие?

    Отзыв оставил: Kemper — 19 апреля 2010 @ 4:19
  16. тоисть 5 картинок!

    Отзыв оставил: Kemper — 19 апреля 2010 @ 22:06
  17. Если вам нужно в ряд отобразить картинки, это делается при помощи стилей, делайте float:left;
    Что же касаемо иероглифов, проверьте в какой кодировке файл, можно при помощи notepad++ сохранить как utf8 без bom

    Отзыв оставил: wprecipe — 19 апреля 2010 @ 22:27
  18. А можите написать код штоб он видавал 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
    яЛП яЛП

    Можите скинуть на пошту?

    Отзыв оставил: Kemper — 19 апреля 2010 @ 22:41
  19. ТОисть штоб он брал из трех нових постов толька картинку и назву поста и если появились новие пости он их менял!

    Отзыв оставил: Kemper — 19 апреля 2010 @ 22:45
  20. Отпешите!!!!!

    Отзыв оставил: Kemper — 22 апреля 2010 @ 19:49
  21. Код нужно вставлять в файл шаблона, например 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>’;
    }
    Этот код вам подойдет, всё, что осталось – описать оформление в стилях темы

    Отзыв оставил: wprecipe — 23 апреля 2010 @ 10:01
  22. echo ‘’; заменить на
    echo ‘’;

    Не почучаетса зделать картинку сьілкой???

    Отзыв оставил: Kemper — 23 апреля 2010 @ 16:16
  23. Отпишите!!!!!! Не получаетса зделать картинки силками!!!!

    Отзыв оставил: Kemper — 25 апреля 2010 @ 11:01
  24. в первом выводе echo, после li вставить вторую строку, заменить get_the_title($rc_post) на картинку из первой строки

    Отзыв оставил: fun — 26 апреля 2010 @ 10:02

RSS лента комментариев к этой записи. TrackBack URL

Оставить комментарий