php — если ( ! function_exists
спросил
Изменено 4 года, 6 месяцев назад
Просмотрено 1к раз
Я добавил if ( ! function_exists ( 'event_meta_box' ) ) {
в мою дочернюю тему functions.php вместе с существующей функцией и моими изменениями.
При загрузке сайта получаю следующую ошибку Неустранимая ошибка: невозможно повторно объявить event_meta_box() (ранее объявленный в /home/user/public_html/folder/wp-content/themes/theme-child/functions.php:10) в /home/user/public_html/folder/wp-content /themes/theme/include/functions-new.php на линии 3920
Как это исправить?
3
Дочерняя тема functions.php фактически загружается сначала
function_exists
проверьте в своей дочерней теме, это ничего не даст, так как кажется, что родительская тема не имеет эту оболочку и загружается второй, поэтому возникает фатальная ошибка. Не существует простого способа переопределить функцию родительской темы (если она не сделала все свои функции подключаемыми по умолчанию — мои делают, но немногие!) Иногда функция родительской темы привязана к действию, и вы можете удалить функцию из хука (используя remove_action
), а затем добавьте свою собственную пользовательскую функцию (используя add_action
). В других случаях (еще реже) в существующем коде темы есть фильтр.
Другое, что вам придется проявить больше творчества, скопировав соответствующие шаблоны родительской темы в вашу дочернюю тему и изменив их/их, чтобы изменить вызываемую функцию на вашу пользовательскую или запускаемый хук — как дочернюю тему шаблонов используется вместо шаблонов родительской темы. Но помните, загружаются и дочерний, и родительский functions.php .
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания, политикой конфиденциальности и политикой использования файлов cookie
— Когда проверять, существует ли функция
спросил
Изменено 11 лет, 8 месяцев назад
Просмотрено 1к раз
Я только начал разработку плагина для WP, и я читал код других плагинов, чтобы начать работу. Я видел несколько плагинов, которые заключают все или некоторые из своих функций в следующий код:
if(!function_exists('my_function')) { функция моя_функция () { // крутая функция } }
Считается ли хорошей практикой заключать все функции в этот код, чтобы избежать конфликтов имен с другими подключаемыми модулями?
Спасибо
- разработка плагинов
- функции
- настройка
2
Я бы не стал этого делать, чтобы предотвратить конфликты имен: если другой несвязанный плагин использует то же имя, маловероятно, что они будут обеспечивать ту же функциональность, и ваш плагин сможет работать в обычном режиме.
Единственная причина сделать это — создать подключаемую функцию , отдельную часть функциональности, которую можно реализовать другим способом с помощью дополнительного плагина. Вы можете увидеть это в основном коде WordPress: такие функции, как wp_mail(), являются подключаемыми, поэтому вы можете использовать полностью настраиваемую систему рассылки.
Вы также видите это в темах, которые, вероятно, получат дочерние темы. Темы по умолчанию, Twemty Eleven и Twenty Ten до нее, являются хорошими примерами этого. Дочерние темы могут определять функции с тем же именем, и они будут использоваться вместо них.
Лично мне не очень нравится такой подход с предоставлением хуков для другого кода. Они усложняют определение того, какой код будет вызываться (завершение кода моей IDE путается). Я стараюсь предоставлять все точки расширения через «классические» действия и фильтры.