set_post_thumbnail_size vs add_image_size

11

Jaka jest różnica między set_post_thumbnail_size a add_image_size? Czy set_post_thumbnail_size dla wszystkich zdjęć i add_image_size do indywidualnego rozmiaru zdjęć?

Dzięki.

Greeso
źródło

Odpowiedzi:

27

Kiedy obraz jest przesyłany do WordPress, jest zapisywany w oryginalnym rozmiarze, a także jako niektóre kopie o zmienionym rozmiarze w różnych rozmiarach. W ten sposób można łatwo używać różnych rozmiarów, tego samego obrazu, do różnych celów.

Domyślnie WordPress tworzy 3 kopie w 3 różnych rozmiarach:

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

Rozmiar w pikselach dla tych 3 rozmiarów można ustawić na pulpicie nawigacyjnym WordPress, w menu Settings -> Media.

Teraz funkcja add_image_sizesłuży do zarejestrowania nowego rozmiaru, który dodaje 3 wartości domyślne.

Każdy zarejestrowany rozmiar mogą być pobierane przy użyciu jego nazwy w niektórych funkcji, np WordPress wp_get_attachment_image_src, wp_get_attachment_image, wp_get_attachment_link.

Wszystkie te funkcje akceptują parametr, $sizektóry powinien być nazwą jednego z zarejestrowanych rozmiarów (jednego z 3 standardów lub jednego z zarejestrowanych niestandardowych rozmiarów add_image_size).

Jeśli 'full'zostanie użyty jako $sizeargument, oryginalny obraz zostanie zwrócony, a ten nie zostanie zmieniony.

Oprócz wyżej wymienionych funkcji istnieją dwie inne funkcje, które wykorzystują rozmiary obrazu: get_the_post_thumbnaili the_post_thumbnail.

Te dwie funkcje pobierają (pierwszy) i odbijają (drugi) obraz ustawiony jako „polecany obraz” dla posta.

To, co zwracają (lub odbijają) te funkcje, to pełny imgznacznik HTML, coś w rodzaju

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

Więc jaki jest używany rozmiar?

Jeśli a $sizezostanie przekazane jako drugi argument (pierwszy jest $postid), funkcje te zwracają obraz w tym rozmiarze. W przeciwnym razie, te funkcje wyszukać rozmiaru obrazu zarejestrowanego pod nazwą: post-thumbnail.

To nie jest jeden z 3 domyślnych rozmiarów, w rzeczywistości jest to 4. standardowy rozmiar (rozważany jest 5. rozmiar full) i można go zarejestrować dzwoniąc set_post_thumbnail_size.

Więc

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

jest skrótem do

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

Jeśli nie zadzwoniłeś set_post_thumbnail_size(co oznacza, że ​​rozmiar 'post-thumbnail'nie został utworzony), WordPress użyje tego rozmiaru thumb, a nawet jeśli ten rozmiar nie będzie dostępny, WordPress użyje oryginalnego obrazu, którego nie zmieniono.

Rejestrowanie niestandardowych rozmiarów obrazów może być bardzo pomocne przy projektowaniu motywu, ale ważne jest, aby nie nadużywać: każdy przesłany obraz jest kopiowany i zmieniany dla wszystkich zarejestrowanych rozmiarów, więc zarejestrowanie wielu rozmiarów znacznie spowolni proces przesyłania zdjęć.

Notka:

Pamiętaj, że gdy WordPress tworzy skalowane kopie obrazu, nigdy go nie powiększa, ale robi tylko mniejsze kopie: np. Jeśli oryginalny obraz ma 400 x 500 pikseli, a „średni” rozmiar obrazu to 800 x 600 pikseli, średnie i większe nie są tworzone.

Dlatego rejestrowanie rozmiaru obrazu nigdy nie zapewnia bezpieczeństwa, że ​​plik obrazu dla każdego zarejestrowanego rozmiaru faktycznie istnieje w folderze zawartości WordPress. Nawet dlatego, że zarejestrowane rozmiary obrazów łatwo się zmieniają: zmiana ustawień, zmiana motywów itp.

Kiedy Zmienia rozmiar obrazu, z jakiegokolwiek powodu, zmiana ma wpływ na zdjęciach przesłanych po tej zmiany; zdjęcia przesłane wcześniej nie zmieniają wymiarów i nie są przeskalowywane ani ponownie zapisywane.

Jeśli po przesłaniu niektórych zdjęć (np. Po zmianie motywów) trzeba polegać na określonych rozmiarach obrazu, to wtyczka Regeneruj miniatury uratuje życie.

gmazzap
źródło
2
Niesamowite. Kliknąłbym 5 razy z powodu twojej odpowiedzi, ale strona na to nie pozwala. Thanls.
Greeso,
Nie ma za co, jeden jest już w porządku :)
gmazzap
Jeszcze tylko jedno questoin: Co jeśli nie nazwałbym set_post_thumbnail_size (co oznacza, że ​​rozmiar „post-thumbnail” nie jest tworzony, to nazywam_post_thumbnail. Co się stanie? (Ponieważ_post_thumbnail spróbuje użyć post-thumbnail jako param)
Greeso,
@GM, Kciuki w górę za jasne wyjaśnienie
Istiaque Ahmed
Ta odpowiedź jest bardzo pomocna! Myślę jednak, że: 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. ... jest niepoprawny. Z mojego doświadczenia set_post_thumbnail_size()wynika , że jeśli to nie zostało wywołane, WP powraca do obrazu w pełnym rozmiarze.
Travis Northcutt,
1

Z Kodeksu:

set_post_thumbnail_size

Ustaw domyślne wymiary wyróżnionego obrazu (wcześniej Miniatura posta). Aby zarejestrować dodatkowe rozmiary obrazów dla Wyróżnionych obrazów, użyj: add_image_size ().

add_image_size

Rejestruje nowy rozmiar obrazu. Oznacza to, że WordPress utworzy kopię Wyróżnionego obrazu (wcześniej znanego jako miniatura postu) o określonych wymiarach podczas przesyłania nowego obrazu.

Krzysiek Dróżdż
źródło
Czy mogę używać add_image_size bez użycia set_post_thumbnail_size?
Greeso,
Tak oczywiście.
Krzysiek Dróżdż