//Вывод первой картинки с поста 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. Тогда ваши миниатюры будут выглядеть так, как Вам нужно.
На этом все, спасибо за внимание 🙂