Опис
Цей плагін призначений переважно для розробників. Щоб він працював, вам потрібно використовувати його функції у вашій темі або плагіні.
Цей плагін пропонує такі функції, як обрізка з розпізнаванням облич, вибір точки фокусування для кожного зображення, функцію виведення розмірів, що адаптуються до екрану, за допомогою тегу <picture> та багато іншого.
Чому варто використовувати цей плагін?
WordPress автоматично створює безліч зменшених зображень для кожного завантаженого зображення.
Зазвичай вам потрібні лише 1 або 2 з них, тому це марна трата місця на сервері та ресурсів.
Крім того, за замовчуванням обрізані зображення створюються з центру, що часто може становити проблему.
Цей плагін дозволяє:
- вимкнути автоматичне визначення розмірів зображень
- динамічно генерувати лише необхідні розміри зображень для тих зображень, які дійсно потрібні
- видалити розміри зображень, згенеровані цим плагіном, окремо або всі разом
- вказати іншу точку фокусування, яка буде у фокусі під час створення обрізаних версій зображення
- автоматично визначати точку фокусування за допомогою алгоритму розпізнавання обличчя
- вимкнути поріг розміру великих зображень, щоб зображення розміром понад 2560×2560 пікселів НЕ зменшувалися
Як це працює
- якщо ви вимкнете існуючі автоматично згенеровані розміри зображень, то для новозавантажених зображень ці розміри не створюватимуться
- у коді потрібно вказати, якого розміру має бути зображення
- зображення створюється динамічно під час першого відвідування сторінки та зберігається у папці
uploads - під час кожного наступного відвідування цієї сторінки буде завантажуватися лише вже згенероване зображення
Функції
bis_get_attachment_image_src( $attachment_id, $size, $crop )
Функція, створена на основі стандартної функції wp_get_attachment_image_src.
Якщо ви раніше використовували Fly Dynamic Image Resizer, вам не потрібно замінювати функції fly_get_attachment_image_src у своєму коді — передбачено резервний варіант, тож ви можете деактивувати Fly Dynamic Image Resizer, і функція все одно працюватиме.
Параметри:
-
attachment_id (ціле число) (обов’язкове)
Ідентифікатор вкладеного зображення
Приклад:123абоget_post_thumbnail_id()абоget_field(“my_image”) -
size (масив) (обов’язкове)
Масив із значеннями ширини та висоти
Приклад:[ 1920, 1080 ] -
обрізання (логічне/ціле число/масив/рядок)(необов’язково)
Пропустіть це або передайтеfalseабо0, якщо ви не хочете обрізати, а просто змінити масштаб,
інакше передайтеtrueабо1, щоб використовувати обрізання фокальної точки, вибране в адміністративному медіа (за замовчуванням по центру),
або передайте масив з рядковими параметрами осі x та осі y, такими як[ 'right', 'bottom' ]
або передайте масив з числовими параметрами осі x та осі y, такими як[ 0.5, 0.8 ]
або передайте рядок'face'для автоматичного визначення положення обличчя (може бути вичерпним для ресурсів сервера)
Повернення:
array(
'src' => (string) url of the image,
'width' => (integer) width in pixels,
'height' => (integer) height in pixels
)
bis_get_attachment_image( $attachment_id, $size, $crop, $attr )
Функція, створена на основі стандартної функції wp_get_attachment_image.
Якщо ви раніше використовували Fly Dynamic Image Resizer, вам не потрібно замінювати функції fly_get_attachment_image у своєму коді — передбачено резервний варіант, тож ви можете деактивувати Fly Dynamic Image Resizer, і функція все одно працюватиме.
Параметри:
-
attachment_id (ціле число) (обов’язкове)
Ідентифікатор вкладеного зображення
Приклад:123абоget_post_thumbnail_id()абоget_field(“my_image”) -
size (масив) (обов’язкове)
Масив із значеннями ширини та висоти
Приклад:[ 1920, 1080 ] -
обрізання (логічне/ціле число/масив/рядок)(необов’язково)
Пропустіть це або передайтеfalseабо0, якщо ви не хочете обрізати, а просто змінити масштаб,
інакше передайтеtrueабо1, щоб використовувати обрізання фокальної точки, вибране в адміністративному медіа (за замовчуванням по центру),
або передайте масив з рядковими параметрами осі x та осі y, такими як[ 'right', 'bottom' ]
або передайте масив з числовими параметрами осі x та осі y, такими як[ 0.5, 0.8 ]
або передайте рядок'face'для автоматичного визначення положення обличчя (може бути вичерпним для ресурсів сервера) -
attr (масив) (необов’язковий)
Масив атрибутів
Спеціальний атрибутretinaдозволяє автоматично генерувати srcset для@2xпристроїв з екраном Retina
Приклад:array( “retina” => true, “alt” => “Custom alt text”, “class” => “my-class”, “id” => “my-id” )
Повернення:
<img src="https://web.com/wp-content/uploads/bis-images/1234/your-image-500x500-f50_50.jpg" width="500" height="500" alt="Alt text">
bis_get_attachment_picture( $attachment_id, $sizes, $attr )
Параметри:
-
attachment_id (ціле число) (обов’язкове)
Ідентифікатор вкладеного зображення
Приклад:123абоget_post_thumbnail_id()абоget_field(“my_image”) -
sizes (масив) (обов’язкове)
Масив, що містить париключ => значення
деключозначає точку розриву
азначення— це масив, що містить ширину, висоту, обрізку та alternative_attachment_id
Приклад:[ 767 => [ 767, 400, 1, 987 ], 9999 => [ 1200, 500, 1 ] ]
Це згенерує<source media="(max-width:767px)" srcset="image987_767x400.jpg">
та<source media="(max-width:9999px)" srcset="image_1200x500.jpg">
та<source media="(min-width:10000px)" srcset="image.jpg">
Якщо ви також вкажете ключ0, то він замінить<img>. -
attr (масив) (необов’язковий)
Масив атрибутів
Спеціальний атрибутretinaдозволяє автоматично генерувати srcset для@2xпристроїв з екраном Retina
Приклад:array( “retina” => true, “alt” => “Custom alt text”, “class” => “my-class”, “id” => “my-id” )
Приклад:
Щоб створити ідеальне зображення «героя» повної ширини, яке буде чудово виглядати як на 4K-пристроях, так і на невеликих телефонах, але завантажуватиметься лише у необхідному розмірі, можна скористатися таким кодом:
echo bis_get_attachment_picture(
get_post_thumbnail_id(),
[
375 => [ 375, 500, 1, 987 ],
575 => [ 575, 500, 1, 987 ],
767 => [ 767, 500, 1, 987 ],
991 => [ 991, 500, 1 ],
1199 => [ 1199, 500, 1 ],
1399 => [ 1399, 500, 1 ],
1600 => [ 1600, 500, 1 ],
1920 => [ 1920, 500, 1 ],
2560 => [ 2560, 500, 1 ],
3440 => [ 3440, 500, 1 ],
3840 => [ 3840, 500, 1 ],
]
);
Повернення:
<picture>
<source media="(max-width:375px)" srcset="https://web.com/wp-content/uploads/bis-images/987/your-image-375x500-f50_50.jpg">
<source media="(max-width:575px)" srcset="https://web.com/wp-content/uploads/bis-images/987/your-image-575x500-f50_50.jpg">
<source media="(max-width:767px)" srcset="https://web.com/wp-content/uploads/bis-images/987/your-image-767x500-f50_50.jpg">
<source media="(max-width:991px)" srcset="https://web.com/wp-content/uploads/bis-images/123/your-image-991x500-f50_50.jpg">
<source media="(max-width:1199px)" srcset="https://web.com/wp-content/uploads/bis-images/123/your-image-1199x500-f50_50.jpg">
<source media="(max-width:1399px)" srcset="https://web.com/wp-content/uploads/bis-images/123/your-image-1399x500-f50_50.jpg">
<source media="(max-width:1600px)" srcset="https://web.com/wp-content/uploads/bis-images/123/your-image-1600x500-f50_50.jpg">
<source media="(max-width:1920px)" srcset="https://web.com/wp-content/uploads/bis-images/123/your-image-1920x500-f50_50.jpg">
<source media="(max-width:2560px)" srcset="https://web.com/wp-content/uploads/bis-images/123/your-image-2560x500-f50_50.jpg">
<source media="(max-width:3440px)" srcset="https://web.com/wp-content/uploads/bis-images/123/your-image-3440x500-f50_50.jpg">
<source media="(max-width:3840px)" srcset="https://web.com/wp-content/uploads/bis-images/123/your-image-3840x500-f50_50.jpg">
<source media="(min-width:3841px)" srcset="https://web.com/wp-content/uploads/2022/11/your-image.jpg">
<img width="4000" height="2000" src="https://web.com/wp-content/uploads/2022/11/your-image.jpg" alt="Some alt" loading="lazy">
</picture>
Для функції fly_add_image_size не передбачено альтернативного варіанту
Якщо ви раніше використовували Fly Dynamic Image Resizer, вам потрібно видалити з коду функції fly_add_image_size.
За потреби ви можете створити власні змінні для розмірів, наприклад:
define( 'MY_CUSTOM_SIZE', [ 1000, 200 ] );
а потім просто використовуйте його всередині функцій, наприклад:
echo bis_get_attachment_image( get_post_thumbnail_id(), MY_CUSTOM_SIZE );
Підтримка інших форматів, окрім JPG, PNG та WEBP
Цей плагін за замовчуванням працює лише з файлами форматів JPG, PNG та WEBP,
але ви можете легко дозволити будь-які інші типи MIME,
для цього просто вставте цей код, наприклад, у файл wp-config.php або у файл functions.php
define( 'BIS_ALLOWED_MIME_TYPES', array( 'image/jpeg', 'image/png', 'any_other/mime_type' ) );
Отримати точку фокусування вибраного зображення
Дані про фокусні точки зберігаються в метаданих публікації-додатку.
Також є спеціальна функція очищення даних, якою ви можете скористатися.
$focal_point = sanitize_focal_point( get_post_meta( get_post_thumbnail_id(), 'focal_point', true ) );
Повернення:
array( 0.5, 0.8 )
що означає, що фокусна точка знаходиться на відстані 50% від лівого краю та 80% від верхнього краю
Встановлення
- Завантажте файли плагіна в директорію /wp-content/plugins/ або встановіть плагін безпосередньо через екран плагінів WordPress.
- Активуйте плагін на сторінці ‘Плагіни’ в WordPress.
Часті питання
-
Місце зберігання зображень
-
/wp-content/uploads/bis-images/{IMAGE_ID}/{IMAGE_FILENAME}-{IMAGE_SIZE}-f{IMAGE_FOCAL_POINT}.{IMAGE_EXTENSION}
Відгуки
Учасники та розробники
“Better image sizes” — проект з відкритим вихідним кодом. В розвиток плагіну внесли свій вклад наступні учасники:
Учасники“Better image sizes” було перекладено на 1 локалізацію. Дякуємо перекладачам за їх роботу.
Перекладіть “Better image sizes” на вашу мову.
Цікавитесь розробкою?
Перегляньте код, перегляньте сховище SVN або підпишіться на журнал розробки за допомогою RSS.
Журнал змін
3.9
- перевірено на WP 6.9
- нова роль користувача «regenerate_images», яка дозволяє користувачам перегенерувати зображення
3.8
- функція `bis_get_attachment_picture`, що використовує аргумент `$sizes` із ключем 0, замінить тег у
3.7
- перевірено на WP 6.8
- нова опція “Вимкнути масштабування”, яка позначена за замовчуванням – вона поверне повне оригінальне зображення, якщо воно менше за запитуваний розмір
3.6
- перевірено на WP 6.5
3.5
- перевірено на WP 6.4
3.4
- новий (4-й) параметр для функції bis_get_attachment_picture — $sizes — дозволяє вказати альтернативний ідентифікатор зображення, завдяки чому можна легко використовувати різні зображення, наприклад, на мобільних пристроях та на настільних комп’ютерах
3.3
- перевірено на WP 6.3
- вилучено застарілу функцію відкладеного завантаження
3.2
- ввімкнути за замовчуванням також MIME-тип WebP
3.1
- покращене положення обрізання для розпізнавання обличчя
- повернутися до попередньої точки фокусування, якщо обличчя не виявлено
3.0
- нова опція розпізнавання обличчя для $crop (використовуйте ‘face’)
2.0
- виправлено видалення розмірів окремих зображень
1.9
- забезпечити роботу атрибута retina також із зображеннями, що не обрізані
1.8
- додати відсутній параметр для функції wp_get_attachment_image
1.7
- виправлення для зображень з нульовою шириною — у цьому випадку примусово встановити значення «false» для параметра «crop»
1.6
- виправити відсутність змінної PHP, що спричиняє помилку на деяких серверах
1.5
- виправлення для зображень із нульовою висотою – у цьому випадку примусово обрізати значення false
1.4
- повертати порожній масив у функції _src, якщо зображення було видалено
1.3
- make retina attribute works also in bis_get_attachment_picture function
1.2
- повернути правильні/узгоджені ключі масиву за допомогою bis_get_attachment_image_src, навіть коли викликається wp_get_attachment_image_src
1.1
- невелике виправлення для інструменту зміни розміру, коли висота дорівнює нулю
1.0
- Перша версія



