как сделать дочернюю тему заменяют функции в разных php-файлах, которые загружаются до require_once

Я работаю над дочерней темой для шаблона новостей.

моя проблема в том, что в родительской теме есть некоторые функции, которые определены в разных php-файлах. эти файлы вызываются в functions.php с require_once.

я думаю, я понимаю, как выгружать функции и определять мои собственные функции, но как я могу указать вызов require_once на мой новый файл на пути дочерней темы?

веселит,

тройская

Файл functions.php в дочерних темах запускается перед функциями parent.php родительской темы. В кодексе есть несколько деталей .

Если родительская тема соответствует стандартам развития, каждая из их пользовательских функций должна работать следующим образом:

if( !function_exists( 'a_parent_theme_function' ) ) { function a_parent_theme_function() { \\ do stuff } } 

Затем вы просто пишете свой собственный a_parent_theme_function() и он имеет приоритет, потому что он определен первым. Тем не менее, я бы сказал, что большинство тем построено с небольшим учетом тематики родителя, поэтому вы не можете переопределить родительскую функцию, которая является большой большой облом.

Если вы используете фреймворк с собственными крючками, вы можете использовать действие удаления, подобное этому человеку, чтобы отменить функциональность, которую вы не хотите, и зацепить ее в другом месте, чтобы добавить то, что вы хотите, но это неправильно. Возможно, вы даже можете зацепить один и тот же крючок с более низким приоритетом, отменить результат функции и повторить то, что хотите. Опять же, это, безусловно, далеко не идеально.

Этот вопрос похож на этот предыдущий вопрос о stackoverflow, который не сулит ничего хорошего. PHP не обеспечивает простой способ перегрузить или переопределить существующую функцию без чего-то вроде вышеупомянутой проверки функции_exists function_exists() .

Просто подумайте о require_once как методе организации ваших функций. В конце все находится в functions.php. Другими словами, вы можете просто заменить functions.php своими желаемыми функциями. если вы хотите загружать файлы с родительской темы, просто выполните

 require_once( get_bloginfo('template_directory').'includes_folder/something.php'); 

Надеюсь, поможет