
Сегодня в кратком обзоре рассмотрим один метод установки миниатюр, но не в ручном режиме, а полностью на автомате. Это очень удобно, особенно, когда много материала и не всегда успеваешь создавать для каждой записи превью изображения. Или когда имеются статьи, довольно давно опубликованные, и на то время не предусматривались с использованием миниатюр. Но с тех пор могло что-то измениться, включая необходимость вывода миниатюр. И чтобы сохранить внешний вид и избежать рутинной работы, воспользуемся одним трюком, который установит миниатюры в автоматическом режиме.
Откройте файл functions.php, он находится внутри вашей темы. В конце перед знаком ?> добавляем следующий код:
//автом. миниатюра
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)){ //Defines a default image
$first_img = "/images/default.jpg";
}
return $first_img;
}
Как это работает: если запись не будет содержать в себе миниатюру, то с помощью функции preg_match_all выполняется поиск на наличие картинки в статье. После чего, первое найденное изображение подставляется как миниатюра поста. Но если вдруг у статьи не окажется ни одного изображения тогда используется заглушка, находящаяся по адресу '/images/default.jpg'.
Теперь осталось добавить вывод выше заданной функции в определенном месте. Открываем файл, к примеру, index.php и остальные, которые могут содержать показ миниатюр (search.php, categories.php, archive.php и т.д.). Вставляем одну строчку кода:
<?php echo' <img src="' . catch_that_image() . '" alt=""/>'; ?>
Куда нужно вставить? возле стандартной функции вывода миниатюр.
Пример.
<a href="<?php the_permalink() ?>"><?php echo get_the_post_thumbnail() ?> <?php echo' <img src="' . catch_that_image() . '" alt=""/>'; ?> </a>