PHP автоматическое изменение размера изображения и создание миниатюр.

О плагине создания миниатюр для WordPress

После активации, плагин ничего не делает, чтобы он начал работать нужно будет редактировать шаблон (вызывать функции в том месте, где необходимы миниатюры изображений). Если просто установить и активировать плагин, он ничего делать не будет!

В целом, скрипт очень похож на timthumb.php, однако отличается и в чем-то лучше:

    Не нужно вручную создавать произвольное поле со ссылкой на картинку. Поле создается автоматически.

    Работает немного быстрее timthumb.php - я сделал все чтобы скрипт работал максимально быстро, никаких проверок без острой необходимости, во всем этом помогает кэш;

    Кэш чиститься вручную. В timthumb.php кэш постоянно проверяется, старые файлы удаляются. На проверку уходят ресурсы (мелочь, но все же). На этом можно экономить;

    Ресайзинг можно использовать прямо в посте, указав картинке class mini и нужные размеры;

    Гораздо удобнее использовать при интеграции в тему WordPress: не нужно получать значение произвольного поля, проверять существует ли поле, чтобы вывести картинку заглушку. Все это будет делаться автоматом.

  1. На timthumb.php много хакерских атак.

Принцип работы Kama Thumbnail

Создает папку кэша: wp-content/cache/thumb . В нее будут создаваться все миниатюры.

Миниатюры создаются всякий раз, когда вызывается одна из функций плагина для создания миниатюры - их всего 3: kama_thumb_src() , kama_thumb_img() , kama_thumb_a_img() . В функцию можно передать размеры миниатюры и URL картинки из которой нужно сделать миниатюру. URL картинки можно не передавать, тогда функция будет искать картинку для текущей записи.

Как плагин ищет картинку для текущей записи? При публикации или обновлении поста, плагин ищет ссылку на оригинал картинки и записывает её в произвольное поле поста, затем в теме по этой ссылке создается миниатюра. Ссылка определяется в следующем порядке:

    Если у поста установлена миниатюра WordPress, её ссылка будет взята;

    Если у поста нет ни миниатюры WP ни картинки в тексте, то плагин проверит нет ли у поста загруженной для него картинки (вложения). Если вложение есть, то ссылка будет взята от туда;

  1. Если ничего не найдено, то в произвольное поле будет добавлена запись-заглушка: "no_photo". Нужно это, чтобы не производить каждый раз эти операции по поиску ссылки.

При удалении плагин удаляет за собой все: произвольные поля, опции в базе данных, кэш картинок, папку кэша.

Использование (параметры)

После установки плагина в шаблоне можно использовать функции:

// возвращает УРЛ созданной миниатюры echo kama_thumb_src($args, $src); // возвращает готовую картинку (img тег) echo kama_thumb_img($args, $src); // возвращает ссылку-картинку. Ссылка ведет на оригинал картинки. echo kama_thumb_a_img($args, $src); // получает ширину или высоту картинки. Или любое свойство экземпляра класса, // который создает картинку. Обычно там могут пригодится только ширина или высота... // функция нужна, когда создается миниатюра без заранее известной ширины или высоты... echo kama_thumb($optname); // Пример: echo ""; // но в данном случае лучше использовать готовую kama_thumb_img() она все это учитывает... $args(строка/массив)

Аргументы по которым создавать миниатюру. Все возможные параметры:

$src(строка)

В этом случае плагине не будет пытаться получить ссылку из поста, а будет обрабатывать указанную тут картинку.

Можно указать число, тогда плагин будет считать что указано ID вложения - медиафайла WordPress и сам получит URL этого медиафайла и обработает его...

По умолчанию: ""

Если параметр передается как массив, то второй аргумент $src можно передать в этом массиве, под ключом: src , url , link или img:

Echo kama_thumb_img(array("src" => "http://yousite.com/IMAGE_URL.jpg", "w" => 150, "h" => 100,));

Заметки

Параметры можно указывать строкой или массивом
// строкой kama_thumb_img("w=200 &h=100 &alt=название картинки &class=aligncenter", "ссылка на произвольную картинку"); // "ссылка на произвольную картинку" должна указываться как второй аргумент функции. Потому что в ссылке могут быть свои параметры запроса, чтобы не смешались с указанными. // или массивом (рекомендуется) kama_thumb_img([ "width" => 200, "height" => 150, "class" => "alignleft", "src" => "", ]);
Можно указать только ширину или высоту

Тогда противоположная сторона (высота или ширина) будут подобраны пропорционально уменьшенной копии;

Параметр src

Нужен для случаев, когда нужно создать миниатюру к любой картинке.

Если параметры передаются строкой, то src нужно указывать во втором аргументе функции.

Очистка кэша

В настройках плагина есть 2 кнопки очистки кэша: "весь кэш" и "кэш заглушек". Нужно это для случаев, когда по каким-либо причинам, плагин не смог создать миниатюру по УРЛ. В этом случае для картинки создается заглушка, чтобы не пытаться создать картинку каждый раз при вызове. При очистке кэша заглушек, удаляются только заглушки и для всех заглушек, плагин пытается создать миниатюры еще раз.

Поэтому, если вы вдруг увидели что плагин не создал миниатюры для некоторых картинок, то попробуйте очистить кэш заглушек.

Картинки с других доменов

По умолчанию можно создавать картинки только с текущего домена или поддоменов.

Чтобы можно было создавать картинки с внешних доменов укажите названия разрешенных доменов в настройках плагина: Настройки - Медиафайлы или в параметре allow при вызове функции.

Если вместо названия домена(ов) указать any , то будет разрешено создание картинок с любых доменов.

Миниатюра в тексте статьи (шоткод)

Если в статье нужно уменьшить картинку и сделать её ссылкой на оригинал, то укажите картинке класс mini и задайте нужные размеры (width или height).

Например, мы вставили картинку в статью:

Но такая большая не нужна, а нужно её уменьшить не визуально, а реально. Для этого добавляем к ней класс mini и указываем нужные размеры (width="300"):

Высота, которую мы удалили будет подобрана автоматически, пропорционально.

Такой подход - не использовать шоткод, мне показался удобнее: мы можем создавать миниатюры к картинкам и при этом видеть как картинка выглядит при редактировании поста, также при возможном удалении плагина, картинки в постах по-прежнему будут показываться (не останется непонятный шоткод).

Чтобы картинка миниатюра создавалась, эта опция должна быть включена в настройках Kama Thumbnail: Настройки > Медиафайлы.

Проверка обязательной установки плагина

Если вы используете этот плагин, то скорее всего тема без него работать уже не будет. Поэтому хорошо бы сделать проверку с предупреждением пользователя, если он отключит плагин, что плагин обязательный и его нужно включить для корректной работы темы.

Для этого поместите такой код в файл темы functions.php .

// обязательный для темы плагин kama thumbnail if(! is_admin() && ! function_exists("kama_thumb_img")){ wp_die("Активируйте обязательный для темы плагин Kama Thumbnail"); }

Теперь в случае деактивации плагина, во фронтэнде пользователь увидит сообщение: «Активируйте обязательный для темы плагин Kama Thumbnail».

Скорость работы функций (замеры)

Первая обработка картинки долгая и скорость зависит от размера картинки. Остальные обработки уже гораздо быстрее, потому что берется из кэша...

Замеры проводились на картинке размером 32КБ (650x350), из которой создавалась миниатюра размером 100x100.

  • kama_thumb_src() - 1 раз = 0.01403, 50 000 раз = 0.54830 сек. (очень быстро)
  • kama_thumb_img() - 1 раз = 0.01471, 50 000 раз = 1.38748 сек. (быстро)
  • kama_thumb_a_img() - 1 раз = 0.01471, 50 000 раз = 1.72967 сек. (быстро)

При работе с кэшем, а это 99% работы плагина, нет разницы какой у картинки размер...

Сообщения о необходимости установить этот плагин

Допустим, ваша тема или плагин использует этот плагин и требует его установки для корректной работы. Так, если плагин не установлен тема может совсем не работать, потому что будет использовать функцию, которой попросту нет в PHP. Давайте отловим такой момент и выведем PHP ошибку уровня NOTICE:

If(! function_exists("kama_thumb_src")){ add_action("admin_notices", function(){ echo "

". __("This theme requires plugin Kama Thumbnail. Install it please.", "dom") ."

"; }); function kama_thumb_src(){} function kama_thumb_img(){} function kama_thumb_a_img(){} function kama_thumb(){} }

Примеры

#1 Получаем миниатюру

Внутри цикла WordPress, где нужна миниатюра к посту, с размерами 150х100, используем такой код:

В результате на месте этого кода появится готовый тег :

#1.2 Уменьшение картинки только по указанной стороне

Чтобы получить не кадрированную пропорционально уменьшенную картинку по указанной стороне: по ширине или по высоте, нужно указать только ширину или высоту, тогда противоположная сторона будет подобрана пропорционально. Кадрирования при этом не будет.

Kama_thumb_img("w=200");

Теперь ширина всегда будет 200, а высота какая получится... При этом картинка всегда будет полная, без кадрирования.

#2 Не выводим картинку-заглушку

Чтобы картинка-заглушка не выводилась, если у записи нет картинок, то нужно определить параметр no_stub:

#3 Проверка наличия картинки для записи

Если нужно проверить есть ли у поста картинка и если нет, то сделать что-то другое, то используйте такой код:

$img = kama_thumb_img("w=150 &h=150 &no_stub"); if(! $img) echo "Картинки нет";

#4 Получаем только УРЛ миниатюры

Если не нужно выводить готовый тег img , а нужно получить только ссылку на миниатюру, чтобы затем её использовать, используйте функцию kama_thumb_src() :

Вернет УРЛ миниатюры: /wp-content/cache/thumb/ec799941f_100x80.png . Этот УРЛ можно использовать, например, так:

" alt="" />

#5 Получаем миниатюру-ссылку на оригинал

Если нужно сделать миниатюру, как картинку, кликнув на которую откроется большое изображение, то используйте такой код:

#6 Получаем миниатюру по ссылке на картинку

Если нужно создать миниатюру на определенную картинку (не картинку из текста статьи), то можно передать второй аргумент функции, в котором указать ссылку на картинку.

$src = "http://домен/картинка.jpg"; echo kama_thumb_img("w=150 &h=100 &class=alignleft", $src);

#7 Параметр post_id

По умолчанию миниатюры создаются для текущего поста, тот который записан в глобальной переменной $post . Иногда эта переменная определена неправильно и картинки могут создаваться другие, относящиеся к другому посту. Чтобы точно определить для какого поста должна создаться миниатюра определите post_id . Если вызов происходит в Цикле WordPress , то этот параметр указывать не нужно!

#8 Картинки с других доменов: параметр allow

Если в настройках плагина, в разрешенных хостах, не установлен нужный хост и не установлена строка any (разрешить все домены). То разрешенные домены можно указать в параметре allow:

Допустим наш домен это site.ru , а нам нужно создать картинку с сайта "http://static.othersite.ru/img.jpg" .

// можно указать точно echo kama_thumb_img("w=200 &h=150 &allow=othersite.ru", "http://static.othersite.ru/img.jpg"); // или можно указать для всех, чтобы можно было создавать с любого сайта echo kama_thumb_img("w=200 &h=150 &allow=any", "http://other-site.ru/img.jpg"); // точно можно указывать несколько доменов через запятую echo kama_thumb_img("w=200 &h=150 &allow=othersite.ru, foo.com", "http://foo.com/img.jpg");

Использование не как плагин (интеграция в тему)

Если вы разрабатываете тему и вам нужен функционал этого плагина, но при этом не нужно устанавливать плагин. То этот плагин можно использовать не как плагин, а как часть темы или как mustuse плагин .

Для этого нужно скопировать папку плагина (со всеми файлами) в папку темы и подключить основной файл плагина kama_thumbnail.php в файле functions.php . Это все!

Например, в теме есть папка includes и в нее мы скопировали папку плагина, тогда главный файл нужно подключить так:

Require_once "includes/kama-thumbnail/kama_thumbnail.php";

Отключение страницы опций

Если страница опций не нужна (делаете сайт для клиента). То её можно отключить. Для этого нужно прописать нужные опции через фильтр kama_thumb_def_options . Сделать это можно в файле темы functions.php или где-либо еще:

// Переопределяет настройки плагина Kama Thumbnail // Автоматически отключают страницу опций в админке и использование опций. add_filter("kama_thumb_def_options", function($opts){ /* исходные, см. код плагина "meta_key" => "photo_URL", // называние мета поля записи. "cache_folder" => "", // полный путь до папки миниатюр. "cache_folder_url" => "", // URL до папки миниатюр. "no_photo_url" => "", // УРЛ на заглушку. "use_in_content" => "mini", // искать ли класс mini у картинок в тексте, чтобы изменить их размер. "no_stub" => false, // не выводить картинку-заглушку. "auto_clear" => false, // очищать ли кэш каждые Х дней. "auto_clear_days" => 7, // каждые сколько дней очищать кэш. "rise_small" => true, // увеличить создаваемую миниатюру (ширину/высоту), если её размер меньше указанного размера. "quality" => 90, // качество создаваемых миниатюр. "allow_hosts" => "", // доступные хосты, кроме родного, через запятую. "any" - любые хосты. "debug" => 0, // режим дебаг (для разработчиков). */ $opts["cache_folder"] = get_template_directory() . "/cache"; $opts["cache_folder_url"] = get_template_directory_uri() ."/cache"; $opts["no_stub"] = true; $opts["auto_clear"] = true; return $opts; });

Условие использования - упоминание об этом плагине или этой странице в описании темы.

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

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

Примечание : Если вы решите изменять размеры картинок, при помощи CSS, то вас ждет один неприятный сюрприз. Дело в занимаемом дисковом пространстве картинок. К примеру, если вы выведите на сайте 100Кб картинку, и установите в CSS свойство width в "50px", то, несмотря на то, что картинка будет выглядеть маленькой, она по прежнему будет занимать 100Кб. Наверное, вы уже понимаете сколько лишнего трафика будет проходить каждый раз, когда будет открываться страница хотя бы с десятком таких миниатюр.

Примечание : Большинство готовых модулей уже содержат встроенные механизмы для автоматического создания миниатюр и может показаться, что использование этих механизмов будет самым простым выходом. Однако, в большинстве случаев эти механизмы либо имеют зашитые настройки, которые не просто изменить или вынести в отдельный блок настроек, либо используют другие части модуля, либо равномерно распределены по всему модулю (их код разбросан по разным файлам).

Пишем инструмент для автоматического создания миниатюр

Примечание: Если вас не интересуют этапы создания и вам нужен готовый модуль, то перейдите к следующему разделу "Настройка скрипта".

Перед тем, как начинать писать инструмент, необходимо определиться с минимальным набором требований. После некоторого времени у вас появиться подобного рода список:

  • Уникальность имен миниатюр . Когда у вас много статей или товаров, то, велика вероятность, что найдутся, как минимум, два изображения с одинаковыми названиями. Так же вы просто можете сортировать картинки по каталогам, не заботясь об уникальности имен.
  • Поддержка разных типов картинок . В основном, это gif, png и jpg.
  • Динамические размеры . В любой момент времени вам могут потребоваться другие размеры миниатюр. Например, вы изменили немного верстку для отображения элементов списка и вам необходимо изменить размеры миниатюр. Это действие должно решаться простым изменением параметра в url.
  • Кэширование картинок . Картинки должны не только физически создаваться на диске (т.к. изменение размера изображения занимает время), но и кэшироваться браузером (каждое обращение за картинкой - это лишний запрос). А так же сами картинки должны периодически заново создаваться. Ведь, возможно, что какие-то картинки были изменены, со времени создания миниатюр.
  • Возможность быстро удалить все миниатюры . Все миниатюры должны храниться в одном месте. В противном случае, банальная очистка сайта от лишних файлов или необходимость массового пересоздания миниатюр вызовут у вас определенные трудности.
  • Простота внедрения . Скрипт должен легко встраиваться на любой сайт и использовать минимальный набор базовых функций языка php.

После того, как были определены требования, можно приступать к написанию.

Создайте файл с названием "thumb.php" и внесите первый блок - блок с параметрами:

В этом блоке определены следующие параметры: каталог для хранения миниатюр, ограничения размера (ширины) и его значение по умолчанию, время кэширования результата, значение идентификатора по умолчанию. Если большая часть параметров понятна, то параметр идентификатора необходимо пояснить. Идентификатор используется для того, чтобы отделить картинки с одинаковыми названиями друг от друга. Целочисленный ID есть практически везде, он есть у любой статьи и у любого товара. В крайнем случае, его достаточно просто определить.

Примечание : Изменение размера картинки происходит пропорционально, поэтому достаточно использовать только ширину миниатюры.

Теперь, необходимо определиться с названиями параметров и шаблоном ссылки, а так же реализовать блок считывания значений параметров и их проверки. Шаблон ссылки делаем следующим образом:

  • site.ru/thumb.php?&&

Примечание : Короткие имена выбраны для простоты. Вы можете изменить названия параметров, но тогда придется немного подкорректировать код.

Определяем блок:

// Проверяем наличие параметра с полным путем к картинке if (isset($_GET["f"])) $f = (string) $_GET["f"]; // Если параметра нет, то выходим else exit; // Получаем информацию о пути $path_parts = pathinfo($f); // Получаем родительский каталог, // где хранится картинка $path_images = $path_parts["dirname"]; // Получаем полное название картинки $f = $path_parts["basename"]; // Разбираем название файла $image_filename = basename($f,".".$path_parts["extension"]); $image_extension = $path_parts["extension"]; // Проверяем, что название картинки состоит из символов, тире и цифр // Вы можете удалить эту проверку, // например, в случае если вы используете кириллицу if (!preg_match("/^({1,100})$/", $f)) exit; // Получаем ширину файла if (isset($_GET["s"])) $s = (int) $_GET["s"]; else $s = $size_def; // Проверяем ограничение минимального размера миниатюры if ($s < $size_min) $s = $size_min; // Проверяем ограничение максимального размера миниатюры if ($s > $size_max) $s = $size_max; // Используем id статьи как унификатор if (isset($_GET["id"])) $id = (int) $_GET["id"]; else $id = $id_def; // Идентификатор не может быть отрицательным if ($id < 0) $id = $id_def;

Теперь, необходимо на всякий случай проверить наличие функции для определения mime типа. И если таковой не окажется, то создать свою:

// Проверка наличия функции для получения типа if (!function_exists("mime_content_type")) { function mime_content_type($f) { $extension = pathinfo($f, PATHINFO_EXTENSION); $extension = strtolower($extension); switch ($extension) { case "jpg": case "jpeg": return "image/jpeg"; break; case "png": case "gif": return "image/". $extension; break; } } }

Теперь, создаем блок, который проверяет существует ли такая миниатюра и не истек ли ее срок жизни. В случае удачи, отдаем картинку на клиент:

// Формируем физический путь к миниатюре $file_thumb = $_SERVER["DOCUMENT_ROOT"] . "/" . $path_thumbs . $image_filename ."-thumb-" . $id . "-" . $s .".". $image_extension; // Если файл с миниатюрой существует if (file_exists($file_thumb)) { $cache_modified = time() - @filemtime($file_thumb); // Если время кэширования картинки не истекло, // то возвращаем картинку if ($cache_modified < $cache_lifetime) { // Время последнего изменения header("Last-Modified: ". gmdate("D, d M Y H:i:s", filemtime($file_thumb)) ." GMT", true, 200); // Длина header("Content-Length: ". filesize($file_thumb)); // Тип header("Content-Type: ". mime_content_type($file_thumb)); // Кэширование header("Cache-Control: public"); header("Expires: " . date("r", @filemtime($file_thumb) + $cache_lifetime)); echo file_get_contents($file_thumb); exit; } }

Теперь, пишем блок, который создает миниатюру для картинки, на основе всех полученных параметров.

// Формируем физический путь к картинке $file_image = $_SERVER["DOCUMENT_ROOT"] . "/" . $path_images ."/". $f; // Если картинка существует, // то создаем миниатюру if (file_exists($file_image)) { // Получаем размеры и тип файла $is = getimagesize($file_image); // Если файл не является изображением, // то ничего не возвращаем if ($is === false) exit; // В соответствии с типом получаем картинку switch ($is) { case 1: $image = imagecreatefromgif($file_image); break; case 2: $image = imagecreatefromjpeg($file_image); break; case 3: $image = imagecreatefrompng($file_image); break; default: exit; break; } // Считаем коэффициент для изменения размера высоты $coefficient = $s / $is ; // Если ширина картинки больше требуемой if ($is > $s) { $th_width = $s; $th_height = floor($is * $coefficient); $thumb = imagecreatetruecolor($th_width, $th_height); imagecopyresampled($thumb, $image, 0, 0, 0, 0, $th_width, $th_height, $is, $is); } // Иначе отдаем картинку "как есть" // Примечание: Увеличение картинки в большинстве случаев сделает ее некрасивой. // Поэтому лучше заменить слишком мелкую картинку и затем заменить ее большой. // Например, из картинки 16х16 врядли получится нормальная картинка 200х200 else { $thumb = $image;} // Сохраняем файл, в соответствии с типом switch ($is) { case 1: imagegif($thumb, $file_thumb); break; case 2: imagejpeg($thumb, $file_thumb); break; case 3: imagepng($thumb, $file_thumb); break; default: exit; break; } // Отдаем изображение браузеру header("Last-Modified: ". gmdate("D, d M Y H:i:s", filemtime($file_thumb)) ." GMT", true, 200); header("Content-Length: ". filesize($file_thumb)); header("Content-Type: ". mime_content_type($file_thumb)); header("Cache-Control: public"); header("Expires: " . date("r", time() + $cache_lifetime)); echo file_get_contents($file_thumb); }

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

Настраиваем php-скрипт для автоматического изменения размеров изображений

Примечание: Если вы пропустили раздел "Пишем инструмент" или же не создавали файл, то скачать готовый файл вы можете тут: thumb.zip

Полученный файл скопируйте в то место, где вам будет угодно. Например, в папку "utils". После чего приступите к настройке. Откройте файл и перезапишите настройки по умолчанию:

  • $path_thumbs - путь к папке для хранения миниатюрами (по умолчанию путь "images/thumbs/"). Не забудьте создать этот каталог.
  • $size_min - минимальная ширина миниатюры в пикселях (по умолчанию 1).
  • $size_def - ширина миниатюр в пикселях по умолчанию (по умолчанию 40)
  • $size_max - максимальный размер в пикселях миниатюры (по умолчанию 1600)
  • $cache_lifetime - время кэширования каждой миниатюры в секундах (по умолчанию 84000 * 30, т.е. тридцать дней)
  • $id_def - значение идентификатора по умолчанию (по умолчанию 0). Идентификатор применяется для создания уникальных имен миниатюр.

После внесения настроек, php-скрипт для автоматического изменения размеров уже можно использовать. Для этого еще раз вспоминаем шаблон:

  • site.ru/utils/thumb.php?&&

Пример реального запроса будет выглядеть так:

  • site.ru/utils/thumb.php?id=15 &s=100 &f=images/razdel-1/statya-15/start.png

Однако, в эпоху использования красивых ЧПУ ссылок, такой запрос будет выглядеть несколько некрасиво. Поэтому необходимо добавить в файл ".htaccess" в корне сайта следующие строки (при условии, что хостинг поддерживает mod_rewrite и что в файле.htaccess есть строка с "RewriteEngine On"):

#Добавлять строки после строки "RewriteEngine On" #Thumbs RewriteRule ^thumb/({1,11})/({1,11})/(.*) utils/thumb.php?id=$1&s=$2&f=$3

  • site.ru/thumb/{Идентификатор} /{Ширина} /{Полный путь к изображению}

После этого, пример реального запроса будет выглядеть следующим образом:

  • site.ru/thumb/15/100/images/razdel-1/statya-15/start.png

Миниатюры, по сути, дублируют изображения на сайте. Поэтому может потребоваться настройка файла robots.txt. Конечно, поисковые системы должны адекватно реагировать на существование миниатюр, и не считать это за попытку манипуляцией поисковой выдачи. Тем не менее, если вы сомневаетесь в этом, то стоит добавить к правилам в robots.txt следующие строки (при условии, что thumb.php находится в папке utils):

Disallow: /thumb/ Disallow: /utils/thumb.php

Теперь, у вас есть отличный инструмент для автоматического изменения размеров изображений на php, который динамически создает и кэширует миниатюры с уникальными названиями в одной директории, поддерживает разные форматы изображений и легко внедряется на любой сайт.

Скачать готовый инструмент можно тут:


Всем привет! Прошла уже неделя с тех пор, как мы уехали из Питера и поселились в деревушке Хиккадува на Шри-Ланке. Чуть подробнее об этом в конце поста.

Сегодня вы узнаете, как создавать, добавлять и редактировать миниатюры к записям в Вордпресс. Разберемся, для чего они нужны, а также с тем, как можно добавить превью на блог автоматически.

Как используют миниатюры на WordPress-блоге?

Миниатюры картинок в WordPress чаще всего используются в анонсах к записям на блоге. Анонсы выводятся на главной или в рубриках. Как правило, иллюстрация анонса, это уменьшенная копия картинки в самой статье. Также эти превьюшки будут появляться при выводе похожих записей под статьей, если ваша тема предполагает такую опцию, или у вас установлен соответствующий плагин. Это также актуально для последних и популярных записей в сайдбаре, если они у вас предусмотрены.

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

Теперь перейдем к тому, как выводить миниатюры на WordPress-блоге и их настройкам.

Вывод превью к записи в WordPress

Чтобы проверить, поддерживает ли ваш шаблон WordPress вывод миниатюр, нужно зайти в редактор записей или страниц. Если поддерживает, вы должны увидеть следующее:

У меня эта опция находится в правом нижнем углу на странице редактирования.

Теперь, чтобы создать превьюшку для статьи, нажимаем «Задать миниатюру».

Вы можете выбрать уже загруженные картинки из библиотеки файлов, или загрузить новую. Поскольку миниатюра задается уже после того, как статья написана и оформлена, скорее всего, нужное фото будет в библиотеке. Вам остается только его выбрать, а далее в зависимости от вашего шаблона, будет сформирована превьюшка нужного вам размера.

Если вас по каким-то причинам не устраивает размер или стиль картинки, вы можете зайти в редактор фото и задать необходимые параметры вручную.

Задать размеры миниатюры к записям в WordPress можно в админке: «Настройки» — «Медиафайлы»:

Что же делать, если вывод миниатюр не предусмотрен в вашей теме, а вам они нужны?

Для этого можно использовать следующую функцию в файл functions.php вашей темы:

add_theme_support (‘post-thumbnails’); ?>

Авто миниатюры в Вордпресс с помощью плагина

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

К счастью, для того, чтобы упростить нам жизнь, созданы плагины для автоматической генерации миниатюр к записям в WordPress.

Для того чтобы найти подходящий плагин, введем в строке их поиска thumbnails (с англ. – эскизы).

Таким образом, мы отыщем наиболее актуальные и популярные плагины для нашей задачи.

Один из часто используемых и простых плагинов для изменения размеров всех миниатюр в WordPress – Regenerate Thumbnails:

После установки, заходим «Инструменты» — «Regen.Thumbnails»:

В появившемся окне нажимаем кнопку «Regenerate All Thumbnails», если вы хотите подогнать все превью к заданному в настройках блога размеру.

Ждем, пока закончится процесс:

Один из самых простых плагинов по вставке авто миниатюр ко всем записям на Вордпресс — Easy Add Thumbnail.

Он автоматически создает превьюшку на основе первой картинки в посте. Для этого вам достаточно просто его активировать, ничего настраивать не нужно.

Еще один плагин для создания миниатюр к записям в WordPress – Generate Post Thumbnails. Он позволяет задать номер картинки в записи, по которой будет формироваться превью.

Как видите, вывести миниатюры в WordPress и даже их автоматически генерировать очень просто.

P.S. Хиккадува — замечательное туристическое местечко на юго-восточном побережье Шри-Ланки. Здесь нам нравится: буйная сочная растительность, чистый бушующий океан с большущими волнами, много кокосов и прочих фруктов, доброжелательные местные жители. Снимаем домик за 45000 рупий (21000 рублей). Сезон дождей сейчас заканчивается и в ближайшие несколько месяцев погода должна быть прекрасной! Приезжайте в гости:)