Các add_image_size( $name, $width, $height, $crop )
chức năng là đủ duyên dáng để xử lý nhiều cuộc gọi bằng cách sử dụng cùng một $name
. Nó chỉ đơn giản ghi đè lên giá trị hiện có :
$_wp_additional_image_sizes[$name] = array( 'width' => absint( $width ), 'height' => absint( $height ), 'crop' => (bool) $crop );
Vì vậy, điều đó có nghĩa là tất cả những gì bạn cần làm để ghi đè định nghĩa của Chủ đề gốc về kích thước hình ảnh tùy chỉnh là để đảm bảo rằng cuộc gọi của bạn sẽ add_image_size()
kích hoạt sau cuộc gọi của Chủ đề gốc .
Giả sử rằng Chủ đề phụ huynh thích như vậy:
function parent_theme_setup() {
add_image_size( 'name', 500, 200, true );
add_image_size( 'new-name', 400, 300, true );
}
add_action( 'after_setup_theme', 'parent_theme_setup' );
Sau đó, add_image_size()
cuộc gọi của Chủ đề gốc sẽ kích hoạt after_setup_theme
móc, ở mức ưu tiên mặc định (nghĩa là 10
).
(Lưu ý: nếu các cuộc gọi không được bao bọc trong một cuộc gọi lại, thì chúng sẽ bắn vào plugins_loaded
móc, ở mức độ ưu tiên 10
.)
Đây là phần quan trọng: tệp của Chủ đề con functions.php
được phân tích cú pháp trước Chủ đề gốc , vì vậy nếu bạn sử dụng cùng một móc để thực hiện add_image_size()
cuộc gọi của mình , chúng sẽ bị ghi đè bởi các add_image_size()
cuộc gọi của Chủ đề gốc .
Giải pháp là sử dụng móc sau hoặc mức độ ưu tiên thấp hơn , để đảm bảo rằng add_image_size()
cuộc gọi của Chủ đề con sẽ kích hoạt sau Chủ đề gốc.
Điều này sẽ thực hiện thủ thuật, bất kể Chủ đề gốc thực hiện các cuộc gọi của nó như thế nào:
function child_theme_setup() {
add_image_size( 'name', 400, 300, true );
}
add_action( 'after_setup_theme', 'child_theme_setup', 11 );
Lưu ý rằng chúng tôi sử dụng cùng một after_setup_theme
móc, nhưng sử dụng một ưu tiên thấp hơn (ví dụ 11
thay vì 10
Callback lửa. Theo thứ tự từ ưu tiên cao hơn (số thấp hơn) để hạ thấp ưu tiên (số cao hơn), bắt đầu với ưu tiên 0
. Vì vậy, một callback nối vào ưu tiên 11
sẽ cháy sau một cuộc gọi lại được ưu tiên 10
.
Cũng lưu ý rằng các after_setup_theme
móc tự bắn sau khi các plugins_loaded
móc, vì vậy gọi lại này vẫn sẽ ghi đè lên Theme phụ huynh, thậm chí nếu Theme mẹ là _doing_it_wrong()
bằng cách không gói cuộc gọi như vậy trong một callback thích hợp, cuốn hút vào một móc thích hợp.
add_image_size()
cuộc gọi chỉ ngồi trần truồngfunctions.php
, hoặc chúng được bao bọc đúng cách trong một cuộc gọi lại và được nối vàoafter_setup_theme
? Biết đó là quan trọng để trả lời câu hỏi của bạn.