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