set_post_thumbnail_size so với add_image_size


11

Sự khác biệt giữa set_post_thumbnail_size và add_image_size là gì? Là set_post_thumbnail_size cho tất cả các hình ảnh và add_image_size để định cỡ hình ảnh riêng lẻ?

Cảm ơn.

Câu trả lời:


26

Khi một hình ảnh được tải lên trong WordPress, nó được lưu ở kích thước ban đầu và cũng như một số bản sao được thay đổi kích thước ở các kích cỡ khác nhau. Theo cách này, nó trở nên dễ dàng sử dụng các kích cỡ khác nhau, của cùng một hình ảnh, cho các mục đích khác nhau.

Theo mặc định, WordPress tạo 3 bản sao với 3 kích cỡ khác nhau:

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

Kích thước tính bằng pixel cho 3 kích thước này có thể được đặt trong bảng điều khiển WordPress, trong menu Settings -> Media.

Bây giờ, chức năng add_image_sizeđược sử dụng để đăng ký một kích thước mới, thêm vào 3 mặc định.

Mỗi kích thước đăng ký có thể được lấy ra sử dụng tên gọi của nó, trong một số chức năng WordPress, ví dụ như wp_get_attachment_image_src, wp_get_attachment_image, wp_get_attachment_link.

Tất cả các hàm này chấp nhận một tham số $sizephải là tên của một trong các kích thước đã đăng ký (một trong 3 tiêu chuẩn hoặc một trong các kích thước tùy chỉnh được đăng ký add_image_size).

Nếu 'full'được sử dụng làm $sizeđối số, hình ảnh gốc được trả về, hình ảnh không được thay đổi kích thước.

Ngoài các chức năng được đề cập ở trên, có hai chức năng khác sử dụng kích thước hình ảnh: get_the_post_thumbnailthe_post_thumbnail.

Hai chức năng này nhận được (đầu tiên) và echo (thứ hai) hình ảnh được đặt là "Hình ảnh nổi bật" cho một bài đăng.

Những gì được trả về (hoặc lặp lại) bởi các hàm này là một imgthẻ html đầy đủ , đại loại như

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

Vì vậy, kích thước được sử dụng là gì?

Nếu a $sizeđược truyền dưới dạng đối số thứ 2 (thứ 1 là $postid), thì các hàm này trả về hình ảnh ở kích thước đó. Mặt khác, các hàm này tìm kiếm kích thước hình ảnh được đăng ký với tên : post-thumbnail.

Đây không phải là một trong 3 kích thước mặc định, trên thực tế, nó là kích thước tiêu chuẩn thứ 4 (thứ 5 được xem xét full) và bạn có thể đăng ký gọi nó set_post_thumbnail_size.

Vì thế

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

là một lối tắt cho

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

Nếu bạn chưa gọi set_post_thumbnail_size(có nghĩa là kích thước 'post-thumbnail'không được tạo), WordPress sẽ sử dụng kích thước thumbvà nếu ngay cả kích thước này không có sẵn, WordPress sẽ sử dụng hình ảnh gốc, kích thước không được thay đổi kích thước.

Đăng ký kích thước hình ảnh tùy chỉnh có thể rất hữu ích khi thiết kế một chủ đề, nhưng điều quan trọng là không lạm dụng: mọi hình ảnh được tải lên được sao chép và thay đổi kích thước cho tất cả các kích thước đã đăng ký, vì vậy đăng ký nhiều kích thước sẽ làm chậm quá trình tải lên hình ảnh.

Một lưu ý:

Xin lưu ý rằng khi WordPress tạo các bản sao thu nhỏ của hình ảnh, nó không bao giờ phóng to nó mà chỉ tạo các bản sao nhỏ hơn: ví dụ: nếu hình ảnh gốc là 400x500px và kích thước hình ảnh 'trung bình' là 800x600px, kích thước trung bình và lớn hơn không được tạo.

Vì vậy, việc đăng ký kích thước hình ảnh không bao giờ đảm bảo an toàn rằng tệp hình ảnh cho mọi kích thước đã đăng ký thực sự tồn tại trong thư mục nội dung WordPress. Ngay cả vì kích thước hình ảnh đã đăng ký dễ dàng thay đổi: thay đổi cài đặt, chuyển đổi chủ đề, v.v.

Khi kích thước hình ảnh thay đổi, vì bất kỳ lý do nào, sự thay đổi đó có ảnh hưởng đến hình ảnh được tải lên sau thay đổi đó; hình ảnh tải lên trước không thay đổi kích thước và không rescaled và resaved.

Nếu người ta cần dựa vào kích thước hình ảnh cụ thể sau khi một số hình ảnh đã được tải lên (ví dụ: sau khi thay đổi chủ đề), thì plugin Regenerate Thumbnails sẽ là một trình bảo vệ cuộc sống.


2
Tuyệt vời. Tôi đã nhấp 5 lần vì câu trả lời của bạn nhưng trang web không cho phép. Thanls.
Greeso

Bạn được chào đón, một là ổn nữa :)
gmazzap

Chỉ một nhiệm vụ nữa: Điều gì sẽ xảy ra nếu tôi chưa gọi set_post_thumbnail_size (có nghĩa là kích thước 'bài đăng hình thu nhỏ' không được tạo, sau đó tôi gọi the_post_thumbnail. Điều gì sẽ xảy ra? param).
Greeso

@GM, Thumbs up cho một lời giải thích sáng suốt
Istiaque Ahmed

Câu trả lời này rất hữu ích! Tuy nhiên, tôi nghĩ điều này: 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. ... không chính xác. Theo kinh nghiệm của tôi, thử nghiệm này, nếu set_post_thumbnail_size()chưa được gọi, WP sẽ quay lại hình ảnh kích thước đầy đủ.
Travis Northcutt

1

Từ Codex:

set_post_thumbnail_size

Đặt kích thước Hình ảnh nổi bật mặc định (trước đây là Hình thu nhỏ). Để đăng ký kích thước hình ảnh bổ sung cho Hình ảnh nổi bật, hãy sử dụng: add_image_size ().

add_image_size

Đăng ký một kích thước hình ảnh mới. Điều này có nghĩa là WordPress sẽ tạo một bản sao của Hình ảnh nổi bật (trước đây gọi là hình thu nhỏ của bài đăng) với kích thước được chỉ định khi bạn tải lên một hình ảnh mới.


Tôi có thể sử dụng add_image_size mà không cần sử dụng set_post_thumbnail_size không?
Greeso

Phải, tất nhiên.
Krzysiek Dróżdż
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.