Как да промените размера на представеното изображение в WordPress: Пълно техническо ръководство
Представените изображения — известни също като миниатюри на публикации — са основният визуален елемент на всеки WordPress сайт. Те се появяват в списъците с публикации, страниците с архиви, прегледите в социалните мрежи и RSS емисиите, което прави техните размери пряк фактор за последователността на оформлението и възприеманото качество на дизайна. Промяната на размера на представеното изображение в WordPress означава или предефиниране на пикселните размери, които WordPress регистрира при качване, или актуализиране на начина, по който темата ви заявява тези размери при рендиране, или и двете — и неуспехът да се адресират и двете страни е най-честата причина преоразмерените изображения да изглеждат неправилно в предния край.
Това ръководство обхваща всички налични методи, от настройки в таблото за управление без код до директна PHP персонализация, с точен технически контекст за всеки подход.
Разбиране на начина, по който WordPress обработва размерите на изображенията
Преди да промените каквато и да е настройка, трябва да разберете процеса. Когато качвате изображение, WordPress не съхранява един файл — той генерира множество производни файлове въз основа на регистрирани дефиниции за размер. Тези дефиниции се съхраняват в базата данни и се регистрират или от ядрото на WordPress, или от активната ви тема, или от инсталирани плъгини.
Трите размера, които WordPress регистрира по подразбиране, са:
- Миниатюра — обикновено
150x150пиксела, изрязана по подразбиране - Средна — до
300x300пиксела, мащабирана пропорционално - Голяма — до
1024x1024пиксела, мащабирана пропорционално
Вашата тема регистрира допълнителни размери с помощта на add_image_size(). Когато шаблон извика the_post_thumbnail('large'), WordPress търси файла, генериран за този регистриран размер по времето на качване. Това е критичната архитектурна точка: промяната на дефиниция за размер не преоразмерява ретроактивно вече качените изображения. Трябва да регенерирате миниатюрите след всяка промяна на размера.
Метод 1: Промяна на размера на представеното изображение чрез настройките за медия в WordPress
Това е правилната отправна точка за сайтове, където темата използва един от трите основни размера за извеждане на представеното изображение.
Стъпка 1: Актуализирайте настройките за медия
Отидете на Настройки > Медия в таблото за управление на WordPress. Ще видите три групи размери. Определете кой размер вашата тема използва за представени изображения — проверете документацията на темата или прегледайте рендирания HTML, за да потвърдите CSS класа (напр. wp-image-* заедно с size-large).
Коригирайте полетата за ширина и височина за съответния размер. Задаването на някое от измеренията на 0 указва на WordPress да мащабира пропорционално по другата ос, вместо да изрязва.
Кликнете върху Запази промените.
Стъпка 2: Регенерирайте съществуващите миниатюри
Новите качвания ще използват актуализираните размери незабавно. За изображения, които вече са в медийната ви библиотека, трябва да регенерирате производните файлове. Най-надеждният инструмент за това е плъгинът Regenerate Thumbnails от Alex Mills.
След инсталиране и активиране отидете на Инструменти > Regen. Thumbnails и кликнете върху Regenerate All Thumbnails. При големи библиотеки това е ресурсоемка операция — изпълнявайте я в часове с ниска посещаемост, и ако сте на план за VPS Хостинг, помислете за временно увеличаване на max_execution_time и memory_limit на PHP в php.ini, за да предотвратите прекъсвания поради изтичане на времето.
Честа грешка: Ако вашата тема регистрира собствен персонализиран размер със същото наименование като основен размер, панелът с настройки за медия няма да го засегне. Извикването add_image_size() на темата има приоритет.
Метод 2: Използване на WordPress Customizer или панела с опции на темата
Много търговски теми предоставят контроли за размера на изображенията без необходимост от промени в кода.
Стъпка 1: Проверете Customizer
Отидете на Външен вид > Персонализиране. Потърсете в секции с наименования Опции на темата, Настройки на блога, Оформление или Настройки на публикациите. Някои теми показват специална секция Представено изображение тук.
Ако съществуват контроли, коригирайте ширината и височината, след което кликнете върху Публикуване. Темата ще актуализира своята регистрирана дефиниция за размер и при някои реализации автоматично ще регенерира засегнатите изображения.
Стъпка 2: Проверете специален панел с опции на темата
Премиум теми, изградени на базата на фреймуъркове като Redux или Kirki, често имат самостоятелен елемент от менюто Опции на темата или Панел на темата в страничната лента на таблото за управление. Потърсете подсекции с наименования Настройки на изображенията, Миниатюри на публикации или Оформление на архива.
Коригирайте стойностите, запазете и след това регенерирайте миниатюрите ръчно с помощта на метода с плъгин, описан по-горе, тъй като повечето панели на теми не задействат регенерирането автоматично.
Метод 3: Дефиниране на персонализирани размери на изображенията в functions.php
Това е технически правилният метод за разработчици и всеки, който се нуждае от прецизен контрол върху размерите, поведението при изрязване и именуването на размерите. Това е и единственият метод, който ви позволява да регистрирате размери, които не влизат в конфликт с основните настройки по подразбиране.
Стъпка 1: Регистрирайте персонализирания размер
Редактирайте файла functions.php на вашата дъщерна тема. Никога не редактирайте директно файловете на родителската тема — актуализациите ще презапишат вашите промени. Ако нямате дъщерна тема, създайте такава преди да продължите.
Добавете следното вътре в закачена функция:
function mytheme_custom_image_sizes() {
add_theme_support( 'post-thumbnails' );
add_image_size( 'featured-hero', 1200, 600, true );
add_image_size( 'featured-card', 400, 300, true );
}
add_action( 'after_setup_theme', 'mytheme_custom_image_sizes' );Разбивка на параметрите за add_image_size():
- Аргумент 1 — манипулаторът на размера (низ), използван при извикване на изображението в шаблоните
- Аргумент 2 — ширина в пиксели
- Аргумент 3 — височина в пиксели
- Аргумент 4 — режим на изрязване:
trueза твърдо изрязване до точни размери;falseза пропорционално мащабиране; масив катоarray( 'left', 'top' )за позиционно изрязване
Граничен случай: Предаването на true като аргумент за изрязване по подразбиране използва изрязване от центъра. Ако вашите представени изображения имат обекти, които са последователно извън центъра (напр. портретна фотография), използвайте позиционен масив — array( 'center', 'top' ) — за да предотвратите изрязване на глави.
Стъпка 2: Извикайте персонализирания размер в шаблонните файлове
Намерете шаблонния файл, отговорен за рендирането на представеното изображение. Чести кандидати са single.php, archive.php, content.php или template-parts/content-single.php. Потърсете the_post_thumbnail, за да намерите точното извикване.
Заменете съществуващия аргумент за размер:
// Before
the_post_thumbnail( 'large' );
// After
the_post_thumbnail( 'featured-hero' );За по-голям контрол върху изходния маркъп използвайте get_the_post_thumbnail() с персонализирани атрибути:
echo get_the_post_thumbnail(
get_the_ID(),
'featured-hero',
array(
'class' => 'hero-image lazyload',
'alt' => get_the_title(),
'loading' => 'lazy',
)
);Стъпка 3: Направете персонализирания размер избираем в медийния качвач (по избор)
По подразбиране персонализираните размери, регистрирани с add_image_size(), не се появяват в падащото меню за размер на медийния качвач на WordPress. За да ги изложите за редакционна употреба, добавете този филтър:
function mytheme_add_image_sizes_to_selector( $sizes ) {
return array_merge( $sizes, array(
'featured-hero' => __( 'Featured Hero (1200x600)', 'mytheme' ),
'featured-card' => __( 'Featured Card (400x300)', 'mytheme' ),
) );
}
add_filter( 'image_size_names_choose', 'mytheme_add_image_sizes_to_selector' );Стъпка 4: Регенерирайте миниатюрите
Стартирайте плъгина Regenerate Thumbnails, както е описано в Метод 1. За всички предварително качени изображения ще бъдат генерирани нови производни файлове с новите размери.
Метод 4: Промяна на размера на представеното изображение в конструктор на страници
Конструктори на страници като Elementor, Divi и Bricks Builder абстрахират слоя на шаблоните, така че редакциите на шаблонните файлове може да не се прилагат. Всеки конструктор има свои собствени контроли за размера на изображенията.
Elementor
- Отворете страницата или публикацията в Elementor.
- Изберете уиджета Представено изображение или уиджет Публикации, показващ миниатюрата.
- В левия панел намерете Размер на изображението под раздела Съдържание.
- Изберете регистриран размер от падащото меню или изберете Персонализиран, за да въведете пикселни размери.
- Кликнете върху Актуализиране.
Техническа бележка: Когато изберете „Персонализиран” в Elementor, той не регистрира нов размер на изображение в WordPress — използва JavaScript за преоразмеряване на изображението от страна на клиента или заявява изображението в пълен размер и го мащабира чрез CSS. Това увеличава теглото на страницата. Винаги предпочитайте регистриран размер на WordPress пред персонализиран размер в Elementor за страници, при които производителността е от критично значение.
Divi
В Blog модула или модула Post Featured Image на Divi, опцията Размер на изображението под Разширени контролира кой регистриран размер на WordPress се заявява. Divi също има свои собствени настройки за размер на изображенията под Divi > Опции на темата > Общи > Размери на миниатюрите, които регистрират допълнителни производни файлове.
Метод 5: Използване на плъгин за персонализирани размери на изображенията без код
Ако редактирането на PHP не е опция, тези плъгини възпроизвеждат функционалността на add_image_size() чрез потребителски интерфейс:
| Плъгин | Ключова функция | Най-подходящ за |
|---|
| — | — | — |
|---|
| Simple Image Sizes | Управление на всички регистрирани размери от Настройки за медия | Обща употреба, неразработчици |
|---|
| Regenerate Thumbnails Advanced | Пакетно регенериране с избирателно насочване по размер | Големи медийни библиотеки |
|---|
| Imsanity | Автоматично преоразмеряване на изображенията при качване до максимален размер | Предотвратяване на прекалено големи оригинали |
|---|
| ShortPixel Adaptive Images | Динамично обслужване на правилно оразмерени изображения чрез CDN | Сайтове, ориентирани към производителност |
|---|
Simple Image Sizes е най-прекият заместител на add_image_size(). След инсталирането му отидете на Настройки > Медия — плъгинът добавя секция за персонализирани размери под основните настройки по подразбиране. Дефинирайте своя размер, запазете и използвайте вградената регенерация на плъгина, за да го приложите.
Сравнение: Всички методи с един поглед
| Метод | Необходими технически умения | Засяга всички изображения | Оцелява при актуализации на темата | Най-добър случай на употреба |
|---|
| — | — | — | — | — |
|---|
| Настройки за медия | Никакви | След регенериране | Да | Коригиране на основните размери |
|---|
| Customizer / Опции на темата | Никакви | Зависи от темата | Да (управлявано от темата) | Премиум теми с вградени контроли |
|---|
| `functions.php` (дъщерна тема) | Средно ниво PHP | След регенериране | Да | Персонализирани размери, прецизен контрол |
|---|
| Потребителски интерфейс на конструктора на страници | Никакви | За всеки уиджет/страница | Да | Вариации на оформлението за отделни страници |
|---|
| Плъгин (Simple Image Sizes) | Никакви | След регенериране | Да | Регистриране на персонализирани размери без код |
|---|
Съображения за производителност и оптимизация на изображенията
Регистрирането на твърде много размери на изображения е често пренебрегван проблем от страна на сървъра. Всеки регистриран размер генерира нов файл при качване. Сайт с 15 регистрирани размера и 2 000 изображения в медийната библиотека потенциално има 30 000 файла с изображения на диска. При споделен хостинг това запълва квотите; при всеки сървър увеличава размерите на резервните копия.
Периодично одитирайте регистрираните си размери. Използвайте този фрагмент в временен плъгин или functions.php, за да изброите всички регистрирани размери:
add_action( 'wp_loaded', function() {
if ( current_user_can( 'manage_options' ) && isset( $_GET['show_image_sizes'] ) ) {
echo '<pre>';
print_r( wp_get_registered_image_subsizes() );
echo '</pre>';
exit;
}
} );Посетете https://yoursite.com/?show_image_sizes=1 докато сте влезли като администратор, за да видите пълния списък.
Допълнителни практики за производителност:
- Използвайте формат WebP. WordPress 5.8+ конвертира качените изображения в WebP, ако библиотеката GD или Imagick на вашия сървър го поддържа. Проверете поддръжката под Инструменти > Здраве на сайта.
- Внедрете мързеливо зареждане. WordPress добавя
loading="lazy"към изображенията под видимата зона по подразбиране от версия 5.5. Уверете се, че вашите персонализирани извиквания наthe_post_thumbnail()запазват този атрибут. - Компресирайте преди качване. Инструменти като ShortPixel или Imagify се интегрират директно в медийния процес на WordPress и компресират производните файлове автоматично. TinyPNG работи добре за ръчна компресия преди качване.
- Използвайте CDN. Ако вашият сайт обслужва глобална аудитория, прехвърлянето на доставката на изображения към CDN намалява латентността независимо от броя на регистрираните размери.
За сайтове с интензивно натоварване с изображения — фотографски портфолиа, новинарски сайтове, WooCommerce магазини — VPS с cPanel ви дава контрол на ниво сървър за настройка на PHP ограниченията за памет, директна конфигурация на Imagick и управление на дисковите квоти, което споделените среди не могат да предложат.
Отзивчиви изображения и атрибутът srcset
WordPress автоматично генерира атрибути srcset и sizes за изображенията в съдържанието, извличайки от всички регистрирани размери на изображения. Това означава, че всеки размер, който регистрирате, допринася за способността на браузъра да избере най-подходящата резолюция за видимата зона и съотношението на пикселите на устройството на потребителя.
Когато извикате the_post_thumbnail(), WordPress извежда маркъп, подобен на:
<img src="hero-1200x600.jpg"
srcset="hero-400x300.jpg 400w, hero-800x400.jpg 800w, hero-1200x600.jpg 1200w"
sizes="(max-width: 600px) 400px, (max-width: 900px) 800px, 1200px"
alt="Post Title"
loading="lazy">Атрибутът sizes казва на браузъра колко широко ще се рендира изображението при различни ширини на видимата зона. WordPress генерира стойност sizes по подразбиране, но тя често е неточна за сложни оформления. Заменете я с помощта на филтъра wp_calculate_image_sizes или като предадете персонализиран атрибут sizes в масива $attr на get_the_post_thumbnail().
Контекст на SSL, домейн и хостинг
Ако мигрирате WordPress сайт към нов домейн или превключвате от HTTP към HTTPS след получаване на SSL Сертификат, URL адресите на изображенията, съхранени в мета данните на публикациите (препратки _thumbnail_id), са относителни спрямо идентификатора на прикачения файл и не се засягат от промените на домейна. Въпреки това URL адресите на изображенията, твърдо кодирани в съдържанието на публикациите или опциите на темата, ще трябва да бъдат актуализирани чрез операция за търсене и замяна с помощта на WP-CLI:
wp search-replace 'http://olddomain.com' 'https://newdomain.com' --skip-columns=guidАко настройвате нова WordPress инсталация от нулата, регистрирането на вашия домейн чрез Регистрация на домейни и свързването му с правилно конфигурирана хостинг среда гарантира, че пътищата за качване на медии и правилата за пренаписване на .htaccess са правилни от самото начало, избягвайки счупени модели на URL адреси на изображения, които са трудни за отстраняване ретроактивно.
Контролен списък за технически решения
Използвайте тази матрица, за да изберете правилния подход за вашата ситуация:
- Трябва да промените основен размер (миниатюра/средна/голяма) и не редактирате код — използвайте Настройки > Медия, след което регенерирайте миниатюрите.
- Вашата премиум тема има панел с опции на темата — проверете там първо, преди да докосвате файлове.
- Нуждаете се от размер с точни пикселни размери и твърдо изрязване — използвайте
add_image_size()вfunctions.phpна дъщерна тема. - Вашият предмет изисква изрязване извън центъра — предайте позиционен масив като четвърти аргумент на
add_image_size(). - Използвате Elementor или Divi — използвайте вградения контрол за размер на изображението на конструктора, но предпочитайте регистрирани размери на WordPress пред „Персонализиран” за производителност.
- Не можете да редактирате PHP и се нуждаете от персонализиран размер — инсталирайте Simple Image Sizes, дефинирайте размера, регенерирайте.
- Имате голяма медийна библиотека — използвайте Regenerate Thumbnails Advanced, който позволява избирателно регенериране по наименование на размера, за да избегнете излишна обработка.
- Производителността е приоритет — одитирайте регистрираните размери, активирайте WebP, внедрете CDN и се уверете, че мързеливото зареждане е активно.
- Използвате споделен хостинг и срещате грешки за памет или изтичане на времето при регенериране — помислете за мигриране към план за VPS Хостинг, където PHP ограниченията са конфигурируеми.
ЧЗВ
Защо представените ми изображения все още показват стария размер, след като промених настройките за медия?
WordPress генерира производни файлове на изображения по времето на качване. Промяната на дефиниция за размер в Настройки > Медия засяга само новите качвания. Трябва да стартирате инструмент за регенериране на миниатюри — като плъгина Regenerate Thumbnails — за да преоразмерите файловете, които вече са в медийната ви библиотека.
Каква е разликата между add_image_size() с true спрямо false като параметър за изрязване?
Предаването на true принуждава WordPress да изреже изображението до точната ширина и височина, които сте задали, центрирано по подразбиране. Предаването на false мащабира изображението пропорционално, така че нито едно измерение да не надвишава зададените от вас стойности, което означава, че действителните изходни размери може да са по-малки от зададените, ако оригиналното съотношение на страните се различава.
Ще забави ли регистрирането на много персонализирани размери на изображения моя сайт?
Не по времето на рендиране — WordPress обслужва предварително генерирани файлове. Разходът за производителност се случва по времето на качване, когато Imagick или GD трябва да генерира по един производен файл за всеки регистриран размер. Сайтове с много размери и голям обем качвания могат да изпитат бавни отговори при качване и значителен ръст на използването на диска.
Мога ли да премахна размери на изображения, които вече не са ми нужни?
Да. Използвайте remove_image_size( 'size-name' ) в functions.php, за да спрете генерирането на размер за нови качвания. Съществуващите файлове за този размер остават на диска, докато не бъдат изтрити ръчно. Командата WP-CLI wp media regenerate --only-missing може да помогне при почистването, като генерира само липсващите размери, без да пресъздава всички производни файлове.
Влияе ли промяната на размера на представеното изображение върху начина, по който изображенията се появяват при споделяне в социалните мрежи?
Не директно. Социални платформи като Facebook и Twitter четат мета тагове на Open Graph (og:image), за да определят кое изображение да показват. Тези тагове обикновено се задават от SEO плъгин като Yoast SEO или Rank Math, който регистрира свой собствен размер на изображение (обикновено 1200x630) специално за споделяне в социалните мрежи. Промяната на размера на представеното изображение на вашата тема не променя изображението на Open Graph, освен ако вашият SEO плъгин не е конфигуриран да използва същия манипулатор на размера.
