Ця 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_themeгачок, за пріоритетом за замовчуванням (тобто 10).
(Примітка. Якщо виклики не завернуті у зворотний дзвінок, вони запускаються на plugins_loadedгачок, у пріоритеті 10.)
Ось найважливіша частина: файл дочірньої теми functions.phpрозбирається перед батьківською Темою , тому якщо ви використовуєте ті самі гачки для add_image_size()виклику ваших дзвінків, вони будуть перекрито add_image_size()викликами батьківської теми .
Рішення полягає в тому, щоб використовувати пізніший гачок або нижчий пріоритет , щоб гарантувати, що 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_themeгачок, але використовувати більш низький пріоритет (тобто 11замість 10. Callbacks вогонь в порядку від вищого пріоритету (нижній номер) , щоб знизити пріоритет (вище число), починаючи з пріоритетом 0. Таким чином , зворотний виклик навішується пріоритет 11буде стріляти після того, як зворотний виклик, підключений до пріоритету 10.
Слід також зазначити , що after_setup_themeсам гачок спрацьовує після того, як на plugins_loadedгачок, так що цей зворотний виклик буде по- , як і раніше перевизначити батьківську тему, навіть якщо батьківська тема є _doing_it_wrong(), чи не обертати таких викликів у відповідній функції зворотного виклику, гачками в відповідний гачок.
add_image_size()дзвінки просто сидять голіfunctions.php, або вони належним чином загорнені всередині зворотного дзвінка, і підключеніafter_setup_theme? Знаючи, що важливо для відповіді на ваше запитання.