Diferența dintre set_post_thumbnail_size și add_image_size

1 aug. 2013, 10:48:48
Vizualizări: 17.2K
Voturi: 14

Care este diferența dintre set_post_thumbnail_size și add_image_size? Este set_post_thumbnail_size pentru toate imaginile, iar add_image_size pentru dimensiuni individuale ale imaginilor?

Mulțumesc.

0
Toate răspunsurile la întrebare 2
5
32

Când o imagine este încărcată în WordPress, aceasta este salvată în dimensiunea originală și, de asemenea, ca niște copii redimensionate în diferite dimensiuni. În acest fel, devine ușor să folosești dimensiuni diferite ale aceleiași imagini pentru scopuri diferite.

În mod implicit, WordPress creează 3 copii în 3 dimensiuni diferite:

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

Dimensiunea în pixeli pentru aceste 3 mărimi poate fi setată în panoul de control WordPress, sub meniul Settings -> Media.

Funcția add_image_size este folosită pentru a înregistra o nouă dimensiune, care se adaugă la cele 3 implicite.

Fiecare dimensiune înregistrată poate fi obținută folosind numele său, în unele funcții WordPress, de exemplu wp_get_attachment_image_src, wp_get_attachment_image, wp_get_attachment_link.

Toate aceste funcții acceptă un parametru $size care ar trebui să fie numele uneia dintre dimensiunile înregistrate (una dintre cele 3 standard sau una dintre dimensiunile personalizate înregistrate cu add_image_size).

Dacă 'full' este folosit ca argument $size, se returnează imaginea originală, cea neretocită.

Pe lângă funcțiile menționate mai sus, există încă două funcții care folosesc dimensiunile imaginilor: get_the_post_thumbnail și the_post_thumbnail.

Aceste două funcții obțin (prima) și afișează (a doua) imaginea care este setată ca „Imagine reprezentativă” pentru un articol.

Ceea ce este returnat (sau afișat) de aceste funcții este un întreg tag HTML img, ceva de genul:

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

Deci, care este dimensiunea folosită?

Dacă un $size este transmis ca al doilea argument (primul este $postid), atunci aceste funcții returnează imaginea în acea dimensiune. În caz contrar, aceste funcții caută o dimensiune de imagine înregistrată cu numele: post-thumbnail.

Aceasta nu este una dintre cele 3 dimensiuni implicite, de fapt, este a 4-a dimensiune standard (a 5-a este considerată full) și o poți înregistra apelând set_post_thumbnail_size.

Deci

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

este o scurtătură pentru

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

Dacă nu ai apelat set_post_thumbnail_size (ceea ce înseamnă că dimensiunea 'post-thumbnail' nu este creată), WordPress va folosi dimensiunea thumb, iar dacă nici această dimensiune nu este disponibilă, WordPress va folosi imaginea originală, cea neretocită.

Înregistrarea dimensiunilor personalizate ale imaginilor poate fi foarte utilă atunci când proiectezi o temă, dar este important să nu exagerezi: fiecare imagine încărcată este copiată și redimensionată pentru toate dimensiunile înregistrate, așa că înregistrarea multor dimensiuni va încetini semnificativ procesul de încărcare a imaginilor.

O notă:

Ține cont că atunci când WordPress creează copii scalate ale unei imagini, nu o mărește niciodată, ci doar face copii mai mici: de exemplu, dacă imaginea originală este de 400x500px, iar dimensiunea 'medium' este de 800x600px, dimensiunea medie și mai mari nu sunt create.

Deci înregistrarea unei dimensiuni de imagine nu oferă niciodată siguranța că un fișier de imagine pentru fiecare dimensiune înregistrată există de fapt în directorul de conținut WordPress. Mai ales pentru că dimensiunile imaginilor înregistrate se schimbă ușor: modificarea setărilor, schimbarea temelor etc.

Când o dimensiune a imaginii se schimbă, din orice motiv, schimbarea are efect asupra imaginilor încărcate după acea schimbare; imaginile încărcate înainte nu își schimbă dimensiunile și nu sunt redimensionate și salvate din nou.

Dacă cineva are nevoie să se bazeze pe anumite dimensiuni ale imaginilor după ce unele imagini au fost deja încărcate (de exemplu, după schimbarea temelor), atunci plugin-ul Regenerate Thumbnails va fi un salvator.

1 aug. 2013 12:03:18
Comentarii

Minunat. Aș fi dat click de 5 ori din cauza răspunsului tău, dar site-ul nu permite. Mulțumesc.

Greeso Greeso
1 aug. 2013 12:18:53

Cu plăcere, un click este suficient :)

gmazzap gmazzap
1 aug. 2013 12:22:03

Încă o întrebare: Ce se întâmplă dacă nu am apelat set_post_thumbnail_size (ceea ce înseamnă că dimensiunea 'post-thumbnail' nu este creată), iar apoi apelez the_post_thumbnail. Ce se va întâmpla? (pentru că the_post_thumbnail va încerca să folosească post-thumbnail ca parametru).

Greeso Greeso
1 aug. 2013 13:15:55

@G.M., Bravo pentru explicația clară

Istiaque Ahmed Istiaque Ahmed
6 ian. 2014 10:12:05

Acest răspuns este foarte util! Totuși, cred că următorul aspect:

set_post_thumbnail_size( 150, 150 ); Dacă nu ai apelat set_post_thumbnail_size (ceea ce înseamnă că dimensiunea 'post-thumbnail' nu este creată), WordPress va folosi dimensiunea thumb, iar dacă nici această dimensiune nu este disponibilă, WordPress va folosi imaginea originală, cea nerestilizată.

...este incorect. Din experiența mea de testare, dacă set_post_thumbnail_size() nu a fost apelat, WP revine la imaginea în dimensiune completă.

Travis Northcutt Travis Northcutt
26 nov. 2015 00:09:34
2

Din Codex:

set_post_thumbnail_size

Setează dimensiunile implicite pentru Imaginea Reprezentativă (denumită anterior Post Thumbnail). Pentru a înregistra dimensiuni adiționale pentru Imagini Reprezentative, folosește: add_image_size().

add_image_size

Înregistrează o nouă dimensiune pentru imagini. Aceasta înseamnă că WordPress va crea o copie a Imaginii Reprezentative (denumită anterior post thumbnail) cu dimensiunile specificate atunci când încarci o imagine nouă.

1 aug. 2013 10:55:18
Comentarii

Pot folosi add_image_size fără a utiliza set_post_thumbnail_size?

Greeso Greeso
1 aug. 2013 11:08:07

Da, desigur.

Krzysiek Dróżdż Krzysiek Dróżdż
1 aug. 2013 13:52:38