Подключение файлов в файле functions дочерней темы
Обычно в файле functions темы я подключаю другие файлы для поддержания порядка.
require_once("foo.php");
Теперь, работая с дочерней темой, я хотел бы сделать то же самое. Я добавляю пользовательские опции администратора, и кажется невозможным подключить код. Я вывел путь через echo, чтобы убедиться, что вызываю правильный файл, и он действительно указывает на нужное местоположение, но ничего внутри этого файла, похоже, не выполняется. При этом код работает нормально, если разместить его непосредственно внутри файла functions дочерней темы.

В дочерней теме правильный способ следующий:
require_once( get_stylesheet_directory() . '/foo.php');
В то время как в родительской теме вы всё ещё можете использовать:
require_once ( get_template_directory() . '/foo.php' );
get_template_directory()
всё ещё работает в дочерней теме, но, к сожалению, указывает на директорию родительской темы. В вашем случае это полезно.

Мне пришлось использовать '/', например require_once( get_stylesheet_directory() . '/foo.php');

спасибо @ssaltman. Вы правы, документация подтверждает это: https://developer.wordpress.org/reference/functions/get_stylesheet_directory/ Я отредактировал свой ответ

Дочерние темы ссылаются на родительские темы по имени директории. В стандартной установке все темы находятся в wp-content/themes/
, поэтому можно ссылаться на эти темы по относительному пути:
include '../parent-theme/some-file.php';
Если такой вариант вызывает дискомфорт, отмечу следующие константы в WordPress 3.0.1 с дочерней темой tt-child для родительской темы twentyten:
TEMPLATEPATH /home/adam/public_html/wp3/wp-content/themes/twentyten
STYLESHEETPATH /home/adam/public_html/wp3/wp-content/themes/tt-child
Таким образом, в дочерней теме можно использовать следующий код для обращения к директории родительской темы:
include TEMPLATEPATH . '/some-file.php';

Константа STYLESHEETPATH — это именно то, что я искал. Включения работают в дочерней теме, если использовать её.

Я очень удивлён, что кто-то вообще может рассматривать использование жёстко заданного пути... Тема не должна работать только в одном окружении. Я бы мог понять, если бы функции get_template_directory() не существовало... но она существует. Только что заметил, что вопрос из 2010 года, лол

Определенно не стоит жестко прописывать URL. Правильный способ сделать это:
require_once( get_stylesheet_directory(). '/my_included_file.php' );
Подробнее читайте в Wordpress Codex
Теперь, если вы, например, модифицируете header.php, который содержит include, ссылаться на него следует следующим образом:
require_once( get_stylesheet_directory() . '/../parenthteme/my_included_file.php' );

Самый простой и лучший способ подключения файлов как в functions.php
темы, так и при разработке плагинов — использование dirname(__FILE__)
.
В вашем случае достаточно было этого:
require_once dirname(__FILE__)."/foo.php";
Если файл, который нужно подключить, находится в другой папке, например, inc
, то используйте такую конструкцию:
require_once dirname(__FILE__)."/inc/foo.php";
Надеюсь, это поможет кому-нибудь в будущем.

Это вполне возможно и нормально подключать файлы в functions.php
.
Я делаю это так в своей дочерней теме (подкаталог php
используется для кода):
include 'php/core.php';
Если у вас возникают проблемы без видимой причины, попробуйте включить режим отладки в wp-config.php
:
define('WP_DEBUG', true);
Возможно, происходят ошибки, которые просто не отображаются.

Я считаю, что это лучший способ получить путь к дочерней теме
<?php $get_my_path = dirname( get_bloginfo('stylesheet_url') ); ?>
<?php require_once( $get_my_path. '/my_included_file.php' ); ?>
Идея взята с http://dynamicweblab.com/2013/02/get-template-path-in-wordpress-child-themes/
