В последнее время часто встречаюсь с заданиями от заказчиков вывести в сайдбаре блоки «Последние записи», «Популярные записи», «Похожие записи» с картинками. Более продвинутые просят сделать эти функции без использования плагинов, другим же все равно — главное, чтобы работало.
Однако суть не в том. Проблемка возникла тогда, когда на сайте одного из заказчиков не оказалось миниатюр. То есть в записях иллюстрации присутствуют, а миниатюры не назначены.
А все плагины и скрипты, позволяющие вывести блоки с последними, родственными или популярными записями, рассчитаны как раз на то, что в записях присутствуют миниатюры, которые и выводятся в этих блоках.
Возник вопрос: как заменить миниатюры картинками из записей? Причем, картинка должна выводиться та, что расположена в самом начале записи (поста).
Благо, в интернете есть ответы на этот вопрос. Решений нашлось не так уж и много, в основном все повторялось с небольшими вариациями. И должен сразу сказать, что не во всех случаях получается заменить миниатюру первой картинкой из записи.
Например, в одном из скриптов для вывода похожих записей без использования плагинов у меня так и не получилось заменить миниатюру. Скрипт напрочь отказывался подставлять первую картинку из поста. Пришлось изменять скрипт. Но это частный случай.
На мой взгляд, все же проще подкорректировать или заменить скрипт, чем перелопачивать весь сайт, добавляя к каждой записи миниатюру. Особенно, если записей не одна сотня.
Сразу скажу, что автор сего решения не я. Я всего лишь законспектировал для себя это удачное решение, как заменить миниатюру в записи Вордпресс первой картинкой. Потому как приходится все чаще возвращаться к данному вопросу.
У кого и в каком случае может возникнуть вопрос замены миниатюры картинкой из поста в Вордпресс, я не буду рассуждать. Потому как человек, читающий данный конспект, наверняка озадачен не тем, где применить данное решение. Это он уже 100% знает.
Поэтому перехожу к практической части внедрения функции замены миниатюры первой картинкой из записи на блоге или сайте.
Первое, что мы делаем:
назначаем функцию, которая устанавливает первую картинку в качестве миниатюры
//Вывод первой картинки с поста 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; }
Открываем в админпанели своего сайта, созданного на Вордпресс, файл functions.php и копируем в него данный код. Лично я каждый подобный код внедряю в указанный файл последним. И обязательно такой код вставляю с комментариями. Потому как память человеческая не так надежна — со временем забывается, что и для чего внедрялось. Тем более, если приходится работать с многими сайтами.
Обращаю внимание: если в functions.php в самом низу кода есть закрывающая угловая скобка с вопросительным знаком, то вышеприведенный код нужно вставлять до них. В последнее время все чаще наблюдаю, что во многих темах в файле functions.php в конце нет закрывающей угловой скобки с вопросительным знаком. В таком случае код просто добавляется в конце functions.php.
Сохраняем изменения в файле functions.php. Это понятно))
Созданная функция еще не выводит автоматом первую картинку из записи Вордпресс вместо миниатюры. Для это нужно проделать еще кое-какие манипуляции с кодом в скрипте, который вы используете для вывода Последних или Популярных, Похожих записей.
За вывод миниатюры отвечает следующий код
<?php the_post_thumbnail(); ?>
Этот код нужно заменить следующим
<img src="<?php echo first_post_image() ?>" alt="<?php the_title(); ?>" />
Альт — необязательный элемент в данном коде, но желательный. Если посчитаете его ненужным, можно его просто удалить. И тогда код будет выглядеть так
<img src="<?php echo first_post_image() ?>" />
Вот, в общем-то, и все. Несколько движений мышкой (скопировать — вставить) — и на вашем сайте вместо миниатюр можно выводить первую картинку из записи.
Обратите внимание: внизу в коде созданной нами функции есть три строки, отвечающих за подмену первой картинки из поста дефолтовой картинкой на случай, если в записи нет ни одного изображения.
Эту картинку вы должны загрузить сами и прописать к ней путь. В данном примере картинка загружена в папку images внутри используемой темы и имеет название noimages.jpg. Вы можете называть картинку как угодно и загружать ее можно через админпанель вашего блога на Вордпресс, воспользовавшись встроенной функцией загрузки медиафайлов.
В этом случае путь к картинке будет прописан несколько иначе, так как по умолчанию ВП загружает все медиафайлы в папку uploads. Чтобы получить адрес загруженной картинки, нужно зайти в раздел Медиафайлы и выбрать для редактирования нужное изображение. В открывшемся окне, кроме всего прочего, можно увидеть абсолютную ссылку на выбранную картинку.
Можно скопировать эту ссылку полностью и вставить ее вместо того кода в кавычках в созданной нами функции, который прописан для примера. А можно оставить ее в таком же сокращенном виде, скопировав из адреса вашей картинки только ту часть, которая стоит после /wp-content/themes/
За помощь в получении столь ценной для меня информации спасибо Виталию Гнатковскому http://gnatkovsky.com.ua/pervaya-kartinka-iz-zapisi-vmesto-miniatyury-wordpress-bez-plagina.html