ฟังก์ชั่นเป็นพอสง่างามจัดการกับหลายสายโดยใช้แบบเดียวกันadd_image_size( $name, $width, $height, $crop ) $nameมันเพียงเขียนทับค่าที่มีอยู่ :
$_wp_additional_image_sizes[$name] = array( 'width' => absint( $width ), 'height' => absint( $height ), 'crop' => (bool) $crop );
ดังนั้นหมายความว่าสิ่งที่คุณต้องทำเพื่อแทนที่คำนิยามธีมของผู้ปกครองของขนาดของภาพที่กำหนดเองเพื่อให้แน่ใจว่าการเรียกร้องให้add_image_size()เกิดเพลิงไหม้หลังจากโทรธีมของผู้ปกครอง
สมมติว่าธีมผู้ปกครองทำเช่นนั้น:
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' );
จากนั้นการadd_image_size()โทรของธีมหลักจะเริ่มขึ้นที่after_setup_themehook ตามลำดับความสำคัญเริ่มต้น (เช่น10)
(หมายเหตุ: หากการโทรไม่ได้อยู่ในการโทรกลับการโทรนั้นจะทำการplugins_loadedแฮ็กที่ระดับความสำคัญ10)
นี่คือส่วนที่สำคัญ: ไฟล์ของชุดรูปแบบเด็กfunctions.phpจะถูกวิเคราะห์ก่อนชุดรูปแบบหลักดังนั้นหากคุณใช้ hooks ตัวเดียวกันเพื่อเริ่มการadd_image_size()โทรของคุณพวกเขาจะถูกแทนที่ด้วยการadd_image_size()เรียกชุดรูปแบบของผู้ปกครอง
วิธีแก้ไขคือใช้ hook ในภายหลังหรือลำดับความสำคัญที่ต่ำกว่าเพื่อให้แน่ใจว่าการadd_image_size()เรียกชุดรูปแบบของเด็กจะเริ่มทำงานหลังจากชุดรูปแบบหลัก
สิ่งนี้ควรทำเคล็ดลับไม่ว่าธีมหลักจะโทรออกอย่างไร:
function child_theme_setup() {
add_image_size( 'name', 400, 300, true );
}
add_action( 'after_setup_theme', 'child_theme_setup', 11 );
โปรดทราบว่าเราใช้after_setup_themehook เดียวกันแต่ใช้ลำดับความสำคัญต่ำกว่า (เช่น11แทนcallbacks จะเริ่มทำงานตาม10ลำดับความสำคัญที่สูงขึ้น (หมายเลขที่ต่ำกว่า) ไปยังลำดับความสำคัญที่ต่ำกว่า (หมายเลขที่สูงกว่า) เริ่มต้นด้วยลำดับความสำคัญโทรกลับติดยาเสพติดเข้ามาในลำดับความสำคัญ01110
ยังทราบว่าafter_setup_themeเบ็ดตัวเองยิงหลังจากplugins_loadedเบ็ดเพื่อโทรกลับนี้จะยังคงแทนที่ธีมแม่แม้ว่าธีมผู้ปกครอง_doing_it_wrong()โดยไม่ได้ตัดสายดังกล่าวในการเรียกกลับที่เหมาะสมติดยาเสพติดเข้ามาในเบ็ดที่เหมาะสม
add_image_size()โทรเพียงแค่นั่งเปล่าfunctions.phpๆ หรือแนบไปกับการโทรกลับอย่างถูกต้องafter_setup_themeหรือไม่ การรู้ว่าสิ่งใดสำคัญต่อการตอบคำถามของคุณ