Как переопределить get_template_directory() в дочерней теме?
Возможно ли заменить get_template_directory()
в файле functions.php моей дочерней темы?
Я хочу внести изменения в файл:
/**
* Загрузка файла с пользовательскими типами записей.
*/
require get_template_directory() . '/inc/post-types.php';
Очевидно, я предпочел бы, чтобы моя работа не перезаписывалась при обновлении темы, поэтому могу ли я отменить регистрацию файла родительской темы, а затем повторно зарегистрировать файл из дочерней темы в functions.php дочерней темы?

Поздний ответ, но в WordPress 4.7 были представлены две новые функции для решения этого вопроса.
get_theme_file_path()
(для абсолютных путей к файлам) и get_theme_file_uri()
(для URL) работают так же, как get_template_part()
, то есть они сначала будут искать файл в дочерней теме, а затем, если не найдут, перейдут к родительской теме.
В вашем примере код можно переписать для версии 4.7 следующим образом:
/**
* Загрузка файла пользовательских типов записей.
*/
require get_theme_file_path( 'inc/post-types.php' );
Подробнее здесь: https://make.wordpress.org/core/2016/09/09/new-functions-hooks-and-behaviour-for-theme-developers-in-wordpress-4-7/

Я не понимаю, как это решает проблему, когда создатель темы добавил require( get_template_directory() . '/includes/somefile.php' );
в functions.php родительской темы. Как мне заменить somefile.php, не изменяя код родительской темы? Я понимаю, что разработчик родительской темы мог бы использовать более подходящую функцию, но он этого не сделал.

В дочерней теме следует использовать get_stylesheet_directory_uri()
вместо get_template_directory()
.
Из WordPress Codex:
Если используется дочерняя тема, будет возвращён URI родительской темы. Функцию get_template_directory_uri() следует использовать для ресурсов, которые не предназначены для включения или переопределения в дочерней теме. Используйте get_stylesheet_directory_uri() для ресурсов, которые должны быть включены или переопределены в дочерней теме.
get_stylesheet_directory_uri()
Если используется дочерняя тема, эта функция вернёт URI директории дочерней темы. Используйте get_template_directory_uri(), чтобы избежать переопределения дочерней темой.
