Главная Новости

Автоматически устанавливаем миниатюры на WordPress


Опубликовано: 01.09.2018

видео Автоматически устанавливаем миниатюры на WordPress

Основы WordPress. Серия пятая. Анонсы записей

Сегодня в кратком обзоре рассмотрим один метод установки миниатюр, но не в ручном режиме, а полностью на автомате. Это очень удобно, особенно, когда много материала и не всегда успеваешь создавать для каждой записи превью изображения. Или когда имеются статьи, довольно давно опубликованные, и на то время не предусматривались с использованием миниатюр. Но с тех пор могло что-то измениться, включая необходимость вывода миниатюр. И чтобы сохранить внешний вид и избежать рутинной работы, воспользуемся одним трюком, который установит миниатюры в автоматическом режиме.



Откройте файл functions.php , он находится внутри вашей темы. В конце перед знаком ?> добавляем следующий код:

//автом. миниатюра if ( function_exists('add_theme_support') ) add_theme_support('post-thumbnails'); function catch_first_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 = bloginfo('template_url'). '/images/default.jpg'; } return $first_img; }

Как это работает: если запись не будет содержать в себе миниатюру, то с помощью функции preg_match_all выполняется поиск на наличие картинки в статье. После чего, первое найденное изображение подставляется как миниатюра поста. Но если вдруг у статьи не окажется ни одного изображения тогда используется заглушка, находящаяся по адресу '/images/default.jpg'.


Похожие записи Wordpress без плагина с миниатюрами - Константин Хмелев

Теперь осталось добавить вывод выше заданной функции в определенном месте. Открываем файл, к примеру, index.php и остальные, которые могут содержать показ миниатюр ( search.php , categories.php , archive.php и т.д.). Вставляем одну строчку кода:

<img class="def-thumb" src="<?php echo catch_first_image() ?>" alt="<?php the_title(); ?>"/>

Куда нужно вставить? возле стандартной функции вывода миниатюр.

Пример.

<a href="<?php the_permalink() ?>"><?php echo get_the_post_thumbnail() ?> <img class="def-thumb" src="<?php echo catch_first_image() ?>" alt="<?php the_title(); ?>"/> </a>

Случайная миниатюра

if ( function_exists('add_theme_support') ) add_theme_support('post-thumbnails'); function catch_first_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)){ $random = mt_rand(1, 10); //количество рандомных картинок от 1 до 10 echo get_bloginfo ( 'stylesheet_directory' ); echo '/images/random/'.$random.'.jpg'; } return $first_img; }

Этот вариант аналогичен первому только, за исключением, случайной миниатюры. То есть вместо одной картинки, которая выводится как заглушка, генерируется в случайном порядке изображения из указанной папки. Просто создайте папку с названием « random » в уже имеющей папке вашей темы « images ». Затем подберите любые картинки в формате jpg, дайте имена числами (для удобства), и загрузите в ранее созданную папку «random».

Функция выводится точно так же, как и в первом варианте и точно в том же месте.

<img class="def-thumb" src="<?php echo catch_first_image() ?>" alt="<?php the_title(); ?>"/>
rss