Я работаю над темой, количество изображений которой определено правильно с помощью:
add_image_size( 'name', 500, 200, true );
Я хотел бы переопределить эти определенные размеры из дочерней темы:
add_image_size( 'new-name', 400, 300, true );
Я знаю, что могу добавить новые размеры, но если я добавлю то же имя, например:
add_image_size( 'name', 400, 300, true );
Затем используется вызов родительской функции - дочерний игнорируется - добавление дополнительных правил добавляет дополнительные изображения, которые никогда не будут использоваться - это не так плохо, но не эффективно.
Есть ли функция для отмены регистрации добавленного размера изображения?
Ура!
луч
add_image_size()
звонки просто сидеть неприкрыто вfunctions.php
, или они правильно завернуты внутри обратного вызова, и навешиваютсяafter_setup_theme
? Знание того, что имеет решающее значение для ответа на ваш вопрос.Ответы:
add_image_size( $name, $width, $height, $crop )
Функция изящная достаточно для обработки нескольких вызовов с использованием такой же$name
. Он просто перезаписывает существующее значение :Таким образом, это означает, что все, что вам нужно сделать, чтобы переопределить определение настраиваемого размера родительской темы - это убедиться, что ваш вызов
add_image_size()
срабатывает после вызова родительской темы .Предполагая, что родительская тема работает следующим образом:
Затем
add_image_size()
вызов родительской темы запускается наafter_setup_theme
крючке с приоритетом по умолчанию (т.е.10
).(Примечание: если вызовы не обернуты в обратный вызов, то они срабатывают в
plugins_loaded
ловушке, в приоритете10
.)Вот важная часть: файл дочерней темы
functions.php
анализируется перед темой родительской темы , поэтому, если вы используете те же перехватчики для запуска своихadd_image_size()
вызовов, они будут переопределеныadd_image_size()
вызовами родительской темы .Решение состоит в том, чтобы использовать более позднюю ловушку или более низкий приоритет , чтобы гарантировать, что
add_image_size()
вызов дочерней темы запускается после вызова родительской темы.Это должно делать свое дело, независимо от того, как родительская тема запускает свои вызовы:
Обратите внимание, что мы используем тот же
after_setup_theme
хук, но используем более низкий приоритет (т.е.11
вместо10
.0
Обратные вызовы запускаются в порядке от более высокого приоритета (более низкий номер) к более низкому приоритету (более высокий номер), начиная с приоритета . Таким образом, обратный вызов, подключенный к приоритету,11
будет запускаться после обратный вызов подключен в приоритет10
.Следует также отметить , что
after_setup_theme
сам крючок срабатывает после того, как наplugins_loaded
крючок, так что этот обратный вызов будет по- прежнему переопределить родительскую тему, даже если родительская тема является_doing_it_wrong()
, не оборачивать таких вызовов в соответствующей функции обратного вызова, крючками в соответствующий крючок.источник
Если кто-то хочет просто сбросить дополнительные размеры изображения, а не изменять размеры, используйте remove_image_size (string $ name) , например
источник
В вашей теме чили вам нужно использовать
add_action( 'after_setup_theme','new-name');
источник
new-name
это недопустимое имя обратного вызова.