Используем BFI Thumb для создания кастомных размеров изображений на WordPress
Опубликовано: 01.09.2018
С одной стороны, разработчики должны создавать для WordPress темы, имеющие определенные критерии размеров изображений для загрузки на сайт. С другой стороны, очень неправильно ограничивать конечных пользователей такими рамками.
Как же быть в этой ситуации?
Смотрите также :
Лучшее решение, как в первом, так и во втором случае – это предусмотренный функционал темы, который будет сразу же генерировать нестандартный пользовательский размер картинок при загрузке.
И в сегодняшнем руководстве мы рассмотрим, как достичь этого с помощью PHP-библиотеки миниатюр изображений BFI Thumb .
Миниатюры изображений
Миниатюры изображений называли раньше просто миниатюрами (thumbnails). Поэтому вы будете встречать употребление двух вариантов одновременно.
Что такое миниатюры изображений?
Согласно WordPress Codex:
Миниатюры изображений или миниатюры – это изображения, которые используются в качестве превью (предпросмотра) для постов, страниц или пользовательских типов записей. Они отображаются на сайте в соответствии с выбранной вами темой. Наиболее удобными такие изображения являются для «журнальных» тем, в которых каждый пост предусматривает наличие картинки.
Включение поддержки для миниатюр изображений
В темах должна быть предусмотрена поддержка для миниатюр изображений в постах до появления интерфейса о назначении этих изображений в разделах Добавить/Редактировать запись.
Чтоб активировать поддержку миниатюр изображений в используемой вами теме, добавьте следующую строку кода в файл functions.php вашей темы:
<?php add_theme_support( 'post-thumbnails' ); ?>Отображение миниатюр записей в вашей теме
Отобразить миниатюру записи в используемой вами теме можно будет, если поместить следующий код в соответствующем месте шаблона записи, страницы или главной страницы:
<?php if ( has_post_thumbnail() ) { // check if the post has a Post Thumbnail assigned to it. the_post_thumbnail(); } ?>Вышеуказанный код проверяет, что у записи есть прикрепленная миниатюра перед тем как загрузить и отобразить саму запись.
Функция add_image_size()
С помощью функции можно зарегистрировать новые размеры изображений для миниатюр записей.
По умолчанию WordPress создает следующие размеры изображений, когда пользователь добавляет изображение в медиа-библиотеку:
маленький – (150px x 150px max) средний – (300px x 300px) большой – (640px x 640px) полный размер (исходный размер загруженного изображения)Регистрация новых размеров изображений
Новые изображения регистрируются с помощью функции add_image_size() следующим образом:
<?php add_image_size( $name, $width, $height, $crop ); ?>Параметры :
$name - (string) (required) Название изображения с новым размером. По умолчанию: 0 $width - (int) (optional) Ширина миниатюры записи в пикселях. По умолчанию: 0 $height - (int) (optional) Высота миниатюры записи. По умолчанию: 0 $crop - (boolean/array) (optional)Пример использования :
<?php if ( function_exists( 'add_image_size' ) ) { add_image_size( 'category-thumb', 300 ); // 300 pixels wide (and unlimited height) add_image_size( 'homepage-thumb', 220, 180, true ); // (cropped) } ?>Чтоб отобразить новые зарегистрированные размеры изображений в используемой вами теме, разместите название миниатюры изображения вашей пользовательской записи в функции the_post_thumbnail() , как показано ниже:
<?php if ( has_post_thumbnail() ) { the_post_thumbnail(‘category-thumb’); } ?>Знакомство с BFI Thumb
BFI Thumb относится к PHP классу или библиотеке, в которой изображения сразу же приобретают необходимый для WordPress размер.Установка и интегрирование
Скачайте BFI Thumb с домашней страницы Загрузите файл BFI_Thumb.php в корневой каталог вашей текущей темы оформления Включите этот файл в вашу тему, добавив следующую строку кода в файл functions.php : <?php require_once('BFI_Thumb.php'); ?> Используйте следующую функцию, если вы захотите отобразить миниатюру изображения в любом месте своей темы: ?php // Resize by width and height $params = array( 'width' => 400, 'height' => 300 ); bfi_thumb( "URL-to-image.jpg", $params ); ?>В функции выше ( bfi_thumb() ) можно заметить, что в ней используется URL изображения, размер которого нужно изменить в качестве первого параметра. А за ним следуют следующие параметры (размеры изображения). Вы, скорее всего, зададитесь вопросом, как определить URL нашей миниатюры записи?
Определить адрес миниатюры вашей записи поможет функция wp_get_attachment_image_src() , которая использует ID, размер и дополнительную иконку в качестве параметров.
<?php wp_get_attachment_image_src( $attachment_id, $size, $icon ); ?>Поэтому мы передаем функцию get_post_thumbnail_id() в качестве первого параметра. Он принимает Post ID в качестве параметра и возвращает ID миниатюры изображения, прикрепленного к записи.
Второй параметр – это размер (size). Он может быть маленьким, средним, большим или же таким, каким вы его добавили с помощью функции add_image_size() , или же задали параметры ширины и высоты в пикселях. Но чтоб убедиться, что наше изображение является высокого качества, мы используем его изначальный размер - full .
Теперь наш код должен выглядеть следующим образом:
<?php $size = 'full'; $params = array( 'width' => 400, 'height' => 300 ); $imgsrc = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID, '' ), $thumb_size ); bfi_thumb( $imgsrc[0], $params ); ?>Функция wp_get_attachment_image_src() возвращает заказанный упорядоченный ряд со значениями соответствующими
(0) url (1) ширина (2) высота (3) размер вложений изображения (или иконка, отображающая вложение).Но нас интересует только первый возвращаемый параметр - URL. Мы передаем его функции bfi_thumb() вместе с другими параметрами (ширина и высота), чтоб получить пользовательский размер миниатюры.
Готовая функция с нужным кодом
Так как мы собираемся использовать этот код снова и снова в нашей теме или в темах, то давайте добавим его в готовую функцию.
<?php function tuts_custom_img( $thumb_size, $image_width, $image_height ) { global $post; $params = array( 'width' => $image_width, 'height' => $image_height ); $imgsrc = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID, '' ), $thumb_size ); $custom_img_src = bfi_thumb( $imgsrc[0], $params ); return $custom_img_src; } ?>Сохраните этот код в своем файле functions.php .
Использование
Для изображений :
<img src="<?php echo tuts_custom_img('full', 300, 400);?>" />Для фоновых изображений :
<div style="background: transparent <?php echo tuts_custom_img('full', 300, 400); ?> no-repeat top center;"> ... </div>Преимущества кастомного размера изображений в сравнении с миниатюрами
Пользовательские размеры изображений, созданные с помощью библиотеки BFI Thumb, преобладают над пользовательскими миниатюрами, которые создаются/добавляются через функцию add_image_size() и вот благодаря каким критериям:
Функция the_post_thumbnail() отражает тэг изображения. Иногда все, что вам нужно – это url изображения. Например, если вам захочется использовать изображение в качестве фона. Пользовательские размеры изображений, зарегистрированные с помощью add_image_size() , не распространяются на старые изображения, которые были загружены перед тем, как размер изображения был зарегистрирован. BFI Thumb может изменять размер изображения в сторону уменьшения или увеличения. BFI Thumb также имеет дополнительные функции, как например: градация, цвет (заливка), непрозрачность, отмена цвета.Заключение
Мы рассмотрели миниатюры изображений, узнали, что это и как их можно использовать в наших темах. Также мы ознакомились с функцией add_image_size() , ее применением для добавления пользовательского размера изображения, когда оно загружено в медиа-библиотеку.
Мы познакомились с библиотекой BFI Thumb и продемонстрировали, как мы можем ее использовать для создания пользовательских размеров изображений из миниатюры записи или другого изображения.
Мы также упомянули об ограничениях при использовании add_image_size() для создания пользовательских размеров изображения и выгодах, которые BFI Thumb имеет в сравнении с ними.