add_image_size() WP 2.9.0

Реєструє новий розмір картинки (мініатюри).

Реєстрація означає, що WordPress, при завантаженні зображення, крім базових розмірів, буде створювати ще один файл – змінену копію оригіналу із зазначеними розмірами.

Викликати цю функцію можна будь-якої миті, бажано раніше, щоб була можливість відключити розмір пізніше. Так:

  • З плагіна, це краще робити на хуку plugin_loaded із пріоритетом 0.
  • З теми, викликати прямо в тілі файлу functions.php .

Щоб посту можна було задати картинку-мініатюру, потрібно активувати цю можливість функцією: add_theme_support( ‘post-thumbnails’ ) у файлі шаблону funсtions.php.

Використовуйте remove_image_size() , щоб видалити раніше створений розмір .

Щоб створювати мініатюри на льоту з будь-яким розміром, замість цієї функції використовуйте мій плагін Kama Thumbnail .

Зарезервовані назви розмірів

thumb, thumbnail, medium, large, post-thumbnail

Назви ” thumb ” та ” thumbnail ” – це аліаси (синоніми) і відносяться до однакових файлів.

Дивіться також опис функції image_downsize() .

Також ви можете встановити опції створюваної мініатюри через:

update_option( 'thumbnail_size_w', 160);
update_option( 'thumbnail_size_h', 160);
update_option( 'thumbnail_crop', 1);

При створенні своєї теми для каталогу тем WP назва нового розміру повинна містити ім’я теми, докладніше за посиланням . Наприклад:

add_image_size( 'mytheme-mini', 200, 200, true);

Основа для:
set_post_thumbnail_size()

Хуків немає.

Повертає

null. Нічого не вертає.

Використання

add_image_size($name, $width, $height, $crop);
$name
(рядок) (обов’язковий)
Назва нового розміру картинок.
$width
(число) (обов’язковий)
Ширина мініатюри (у пікселях).
$height
(число) (обов’язковий)
Висота мініатюри (у пікселях).
$crop
(логічний)

Як створювати мініатюру?

  • false– масштабування: картинка буде змінена у розмірі з відповідної сторони. Мініатюра створюється за однією з відповідних сторін: вказаною шириною або висотою. Підсумкова картинка точно не співпадатиме вказаними розмірами.

  • true– кадрування: мініатюра створюється точно за вказаними розмірами. Підбирається найбільш підходяща сторона, картинка зменшується по ній, а у протилежної сторони зайва частина, яка не підходить по пропорціях, обрізається.

  • array( координата_X, координата_Y )– Вказівку позиції кадрування, тобто. якщо вказати масив [ 'right', 'top' ], то зображення буде кадровано з правого-верхнього кута.

cropпрацює тільки для новостворених картинок. Якщо на сайті вже є картинки і лише потім додається розмір, воно оброблені не будуть.

Типово: false

Приклади

0

#1 Додамо нові розміри мініатюр

Реєструємо нові розміри мініатюр, додавши такий код файл шаблону functions.php:

if ( function_exists( 'add_theme_support' ) ) {

	// розмір мініатюри посту за умовчанням
	add_theme_support( 'post-thumbnails');
	set_post_thumbnail_size(150, 150);

}

if ( function_exists( 'add_image_size' ) ) {

	// 300 завширшки і без обмеження заввишки
	add_image_size ( 'category-thumb', 300, 9999);

	// Кадрування зображення
	add_image_size( 'homepage-thumb', 220, 180, true);
}
0

#2 $crop параметр

Масштабування$crop = false

Цей рядок вкаже WP, що при завантаженні нового файлу потрібно створити його зменшену копію. В цьому випадку мініатюра буде підігнана під ширину або висоту, дивлячись яка зі сторін підходить більше, а протилежна сторона буде зменшена пропорційно і швидше за все не буде більше вказаного розміру. Наприклад, у нас оригінал картинки 2500х1800 пікселів ми робимо мініатюру 220х180 пікселів. Картинка буде зменшена до розмірів – 250х180 px, тобто. висота буде 180, як ми і вказали, проте ширина вийде вище вказаної 250, а не 220. У цьому випадку картинка не кадрується і зменшена копія зберігає пропорції повністю.

add_image_size( 'homepage-thumb', 220, 180, false);
Кадрування$crop = true

Якщо встановити четвертий параметр в true, мініатюра буде зменшена і обрізана точно під зазначені розміри. Наприклад, у нас оригінал картинки 2500х1800 пікселів ми робимо мініатюру 220х180 пікселів. Оригінал буде зменшено до висоти 180xp (тоді ширина його рівна 250px), а ширина буде обрізана по краях по 15px і в результаті отримаємо зменшену копію: 220х180 пікселів:

add_image_size( 'homepage-thumb', 220, 180, true);
Кадрування із зазначенням позицій$crop = [ x, y ]

З версії 3.9 виникла можливість вказувати позицію кадрування. Давайте додамо розмір мініатюри, яка буде розміром 220х220 пікселів та буде фрагментом від оригіналу, який буде взято з лівого верхнього кута (left, top):

add_image_size('custom-size', 220, 220, ['left', 'top']);

Х_позиція може бути: ‘ left ‘ ‘ center ‘ або ‘ right ‘.
Y_позиція може бути: ‘ top ‘, ‘ center ‘ або ‘ bottom ‘.

0

#3 Зменшення по потрібній стороні

Щоб зменшити картинку по одній із потрібних нам сторін, потрібно вказати протилежному боці велике значення. Наприклад, у нас є картинка 2500х1800, нам потрібно отримати мініатюру 500х1800, тоді вказуємо так:

add_image_size( 'homepage-thumb', 500, 9999);
0

#4 Використання нових розмірів

Ми зареєстрували 3, відмінні від базових, розміру: post-thumbnails, category-thumb, homepage-thumb. Щоб тепер використовувати ці розміри (виводити картинки у шаблоні), можна використовувати такі функції:

Вибране зображення (featured image)

Щоб використовувати новий розмір при виведенні картинки встановленої як “Вибране зображення” посту, у файлі шаблону потрібно використовувати функцію the_post_thumbnail() :

if ( has_post_thumbnail() ) {
	the_post_thumbnail( 'category-thumb'); // category-thumb – назва розміру
}
Новий розмір на вибір розмірів при вставці картинки (адмін-панель)

Щоб додати новий розмір у вибір розмірів при вставці картинки в пост, потрібно використовувати фільтр-хук image_size_names_choose, в якому потрібно додати розмір і вказати для нього зрозумілу назву:

add_filter( 'image_size_names_choose', 'my_custom_sizes');
function my_custom_sizes( $sizes ) {
	return array_merge( $sizes, array(
		'category-thumb' => 'Мій розмірник',
	)));
}

razmerchik

Для основних медіафайлів (PHP/Templates)

Також можна виводити картинки (за розмірами) безпосередньо з бібліотеки WordPress за ID зображення. Для цього використовуйте функцію wp_get_attachment_image() :

// Маю на увазі, що у вас у бібліотеці є картинка з ID 42...
echo wp_get_attachment_image(42, 'category-thumb');

Якщо нам потрібно отримати тільки УРЛ картинки, а не готовий тег <img>, то використовуйте функцію wp_get_attachment_image_src() .

Плагіни

  1. Regenerate Thumbnails – цей плагін дозволяє створити нові розміри для кожного завантаженого зображення. Корисний, коли ви змінили або додали нові розміри мініатюр (через Налаштування > Медіафайли) під час, коли в бібліотеці вже є завантажені зображення. Або коли ви змінили розміри “Вибраного зображення” посту.

  2. Force Regenerate Thumbnails – видаляє раніше створені розміри та створює нові, на основі поточних установок.

  3. AJAX thumbnail rebuild – дозволяє перестворити мініатюри. Корисний, якщо ви використовували функцію add_image_size() , коли у вас вже є завантажені зображення. (Це повільний плагін, але при цьому в ньому не буває помилок із нестачею виділеної пам’яті).

  4. Simple Image Sizes – дозволяє створювати нові розміри мініатюр прямо з панелі “Медіафайли”. Він також вміє перетворювати мініатюри. Він додає нові розміри на вибір для постів, так ви можете вставляти нові розміри в пости. Ви можете вибирати які з розмірів ви хотіли б перестворити і для яких типів постів це потрібно зробити.

Дуже вигідну SMM пропозицію можна отримати прямо зараз від сайту doctorsmm.com . На цьому сервісі Ви можете замовити будь-яку послугу просування в 9 і більше соціальних мережах, а саме: накрутку лайків, передплатників, переглядів та ін. ресурсів. Так Ви зможете швидко та безпечно розвинути свою сторінку та підняти її рейтинг у мережі. До того ж, на сайті діють значні оптові знижки.

нотатки

  • Global. Масив. $_wp_additional_image_sizes Associative array of additional image sizes.

список змін

З версії 2.9.0Введено.

Код add_image_size() WP 6.0.2

function add_image_size( $name, $width = 0, $height = 0, $crop = false ) {
	global $_wp_additional_image_sizes;

	$_wp_additional_image_sizes[ $name ] = array(
		'width' => absint( $width ),
		'height' => absint( $height ),
		'crop' => $crop,
	);
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *