//Вывод первой картинки с поста
function first_post_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 = "/wp-content/themes/НАЗВАНИЕТЕМЫ/images/noimages.jpg";
// укажите путь к изображению, которое будет выводится по умолчанию.
}
return $first_img;
}
Скрипт вытягивает первое изображение из записи, но если его нет, то он ставит картинку по умолчанию. Чтобы вывести изображение по умолчанию вы должны создать его, назвав noimages.jpg и поместить в папку images. В 11 строке укажите путь к изображению.
1. Подключаем функцию вывода первой картинки в теме
Миниатюра подключается во всех файлах где в цикле выводятся записи - это index.php, content.php, archive.php, category.php, single.php и тд,
Для подключения нужно вставить следующий код после определения цикла, который выглядит примерно так:
<?php if(have_posts()) : ?> <?php while(have_posts()) : the_post(); ?>
Сам код вывода нашей функции:
<a href="<?php the_permalink() ?>" title="<?php the_title(); ?>">
<img src="<?php echo first_post_image() ?>" alt="<?php the_title(); ?>" />
</a>
так картинка будет кликабельна и по ссылке вы перейдете в саму запись.
А вот в записи нужно вывести некликабельную картинку. Для этого нужно в single.php добавить код без ссылки
<img src="<?php echo first_post_image() ?>" alt="<?php the_title(); ?>" />
Теперь в Вашей теме не будет записей без миниатюр.
Как я писал выше, добавлять теперь в записи миниатюры не надо (всеравно их не выводит), просто в начало поста или где нужно вставляйте картинку. Первая по счету, автоматом станет миниатюрой.
Еще небольшое дополнение к статье.
Если Вам надо, чтобы выводилась миниатюра, а если ее нет, первая картинка с записи, то нужно вместо сроки вывода, что Выше вставлять условие следующего вида:
<?php if ( has_post_thumbnail() ) { the_post_thumbnail('thumbnail'); }
else { ?>
<img src="<?php echo first_post_image() ?>" alt="<?php the_title(); ?>" />
<?php } ?>
Конечно же добавляете свои классы стилей и оформителе их в CSS. Тогда ваши миниатюры будут выглядеть так, как Вам нужно.
На этом все, спасибо за внимание 🙂