Создаем цикл изображений

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

Решение
Для создания собственного цикла изображений сначала нужна функция PHP, которая будет вытаскивать первые изображения из каждой заметки, и возвращать их URL. Скопируйте следующий код в ваш файл functions.php. Обязательно установите изображение по умолчанию в строке 10.
function catch_that_image() {
  global $post, $posts;
  $first_img = '';
  ob_start();
  ob_end_clean();
  $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
  $first_img = $matches [1] [0];
 
  if(empty($first_img)){ //Определяем изображение по умолчанию
    $first_img = "/images/default.jpg";
  }
  return $first_img;
}

После сохранения файла можно изменять главный цикл:
<?php
if (have_posts()) :
    while (have_posts()) : the_post(); ?>
        <a href="<?php the_permalink();?>" title="<?php the_title(); ?>" class="img-loop">
        <img src="http://путь_к_папке_с_изображениями/<?php echo catch_that_image() ?>" alt="<?php the_title(); ?>" />
        </a>
    endwhile;
endif;
?>

Описание решения
Первая часть кода является функцией catch_that_image(), которая включается в файл functions.php. Данная функция разбирает код содержание записи с использованием глобальных переменных $post и $posts и регулярных выражений PHP. Если изображения не найдено (то есть, запись не имеет ни одного изображения), возвращается адрес изображения по-умолчанию. Иначе функция возвращает адрес первого изображения в заметке.

Вторая часть кода является главным циклом. В данном цикле не выводится текстовое содержание. Вместо него выводиться первое изображение заметки с помощью функции catch_that_image().
Теги:
цикл изображений
Добавлено: 01 Мая 2018 20:28:28 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...