set_post_thumbnail_size vs add_image_size


11

Яка різниця між set_post_thumbnail_size та add_image_size? Чи встановлено_файловий_ розмір для всіх зображень, а розмір доданок_маже_размір для розміру зображень окремо?

Дякую.

Відповіді:


27

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

За замовчуванням WordPress створює 3 копії в 3 різних розмірах:

  • 'thumb'
  • 'medium'
  • 'large'

Розмір у пікселях для цих 3 розмірів можна встановити на інформаційній панелі WordPress під меню Settings -> Media.

Тепер функція add_image_sizeвикористовується для реєстрації нового розміру, який додає до 3-х за замовчуванням.

Кожен розмір зареєстрований можна отримати , використовуючи його ім'я, в деякій функції WordPress, наприклад wp_get_attachment_image_src, wp_get_attachment_image, wp_get_attachment_link.

Усі ці функції приймають параметр, $sizeякий повинен бути назвою одного з зареєстрованих розмірів (одного з 3 стандартів або одного з призначених для користувача розмірів add_image_size).

Якщо 'full'використовується як $sizeаргумент, повертається оригінальне зображення, яке не змінюється.

Окрім згаданих вище функцій, є ще дві функції, які використовують розміри зображень: get_the_post_thumbnailі the_post_thumbnail.

Ці дві функції отримують (перша) і повторюють (другу) зображення, яке встановлюється як "Вибране зображення" для публікації.

Те, що повертається (або перегукується) цими функціями, - це повний imgтег html, щось подібне

<img scr="http://www.example.com/wp-content/2013/08/image-200x200.jpg" />

Отже, який розмір використовується?

Якщо a $sizeпередається як другий аргумент (1-й є $postid), ці функції повертають зображення в такому розмірі. В іншому випадку ці функції пошуку для розміру зображення , зареєстрований з ім'ям: post-thumbnail.

Це не один із 3-х розмірів за замовчуванням, насправді це 4-й стандартний розмір (вважається 5-й full), і ви можете зареєструвати його викликом set_post_thumbnail_size.

Тому

set_post_thumbnail_size( $width, $height, $crop );

- це ярлик для

add_image_size( 'post-thumbnail', $width, $height, $crop );

Якщо ви не зателефонували set_post_thumbnail_size(а це означає, що розмір 'post-thumbnail'не створений), WordPress використовуватиме розмір thumb, а якщо навіть цей розмір недоступний, WordPress використовуватиме оригінальне зображення, яке не змінено.

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

Нотатка:

Майте на увазі, що коли WordPress створює масштабовані копії зображення, він ніколи не збільшує його, а робить лише менші копії: наприклад, якщо вихідне зображення становить 400x500px, а розмір зображення 'medium' - 800x600px, середній розмір і більше не створюються.

Отже, реєстрація розміру зображення ніколи не забезпечує безпеку того, що файл зображень для кожного зареєстрованого розміру насправді існує у папці вмісту WordPress. Навіть тому, що зареєстровані розміри зображень легко змінюються: змінюючи налаштування, перемикаючи теми тощо.

Коли з будь-якої причини змінюється розмір зображення, зміна впливає на зображення, завантажені після цієї зміни; зображення, завантажені раніше, не змінюють розміри і не змінюються масштабами та не відновлюються.

Якщо вам потрібно покластися на конкретні розміри зображень після завантаження деяких зображень (наприклад, після зміни тем), то плагін Regenerate Thumbnails буде збереженням життя.


2
Дивовижно. Я б натиснув 5 разів через вашу відповідь, але сайт цього не дозволяє. Подяки.
Greeso

Ласкаво просимо, вже все нормально :)
gmazzap

Ще одна черга: що, якщо я не назвав set_post_thumbnail_size (а це означає, що розмір "пост-мініатюри" не створений, то я називаю the_post_thumbnail. Що буде? парам.)
Greeso

@GM, Великі пальці для
чіткого

Ця відповідь дуже корисна! Однак я вважаю це: set_post_thumbnail_size( 150, 150 ); If you haven't called set_post_thumbnail_size (which means the size 'post-thumbnail' is not created), WordPress will use the size thumb, and if even this size is not available, WordPress will use the original image, the one not resized. ... неправильно. На моєму досвіді тестування цього, якщо set_post_thumbnail_size()його не викликали, WP повертається до повного розміру зображення.
Травіс Нортчетт

1

Від Codex:

set_post_thumbnail_size

Встановіть стандартні розміри Featured Image (раніше розміщено мініатюрою). Для реєстрації додаткових розмірів зображень для Featured Images використовуйте: add_image_size ().

add_image_size

Реєструє новий розмір зображення. Це означає, що WordPress створить копію Featured Image (раніше відомий як мініатюра повідомлення) із заданими розмірами при завантаженні нового зображення.


Чи можна використовувати add_image_size без використання set_post_thumbnail_size?
Greeso

Так, звісно.
Krzysiek Dróżdż
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.