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

Без плагина WordSmall

миниатюры вордпресс

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

Откройте файл 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'.

Теперь осталось добавить вывод выше заданной функции в определенном месте. Открываем файл, к примеру, 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(); ?>"/>
Автор, он же Андрей, он же Admin, он же WordSmall

Лентяй-любитель, окончил высшую школу безделья с многочисленными знаками отличия. Создатель этого небольшого «чудо-блога» о еще более «чудном» контенте.

E-mail Google+ Twitter
Добавить комментарий
bold quote code