Incluir archivos en el archivo functions del tema hijo
Típicamente en el archivo functions de mi tema, suelo requerir otros archivos para mantener las cosas ordenadas.
require_once("foo.php");
Ahora trabajando en un tema hijo, me gustaría hacer lo mismo. Estoy agregando opciones personalizadas de administración y parece imposible incluir código. He mostrado la ruta con echo para asegurarme de que estoy llamando al archivo correcto y efectivamente está llamando a la ubicación correcta, pero nada dentro de ese archivo parece ejecutarse. El código funciona bien si se coloca dentro del archivo functions del tema hijo.
En un tema hijo, la forma correcta es:
require_once( get_stylesheet_directory() . '/foo.php');
Mientras que en el tema padre todavía puedes usar:
require_once ( get_template_directory() . '/foo.php' );
get_template_directory()
sigue funcionando en el tema hijo, pero lamentablemente apunta al directorio del tema padre. En tu caso es útil

Tuve que usar una '/' por ejemplo require_once( get_stylesheet_directory() . '/foo.php');

gracias @ssaltman. Tienes razón, la documentación lo confirma: https://developer.wordpress.org/reference/functions/get_stylesheet_directory/ Edité mi respuesta

Los temas hijos hacen referencia a los temas padres por nombre de directorio, y en una instalación normal todos tus temas se encuentran en wp-content/themes/
, así que diría que está bien hacer referencia a esos temas por su ruta relativa:
include '../parent-theme/some-file.php';
Si eso te hace sentir incómodo, observo las siguientes constantes en WordPress 3.0.1 con un tema hijo twentyten llamado tt-child:
TEMPLATEPATH /home/adam/public_html/wp3/wp-content/themes/twentyten
STYLESHEETPATH /home/adam/public_html/wp3/wp-content/themes/tt-child
Así que puedes hacer lo siguiente en tu tema hijo para hacer referencia al directorio del tema padre:
include TEMPLATEPATH . '/some-file.php';

La constante STYLESHEETPATH era lo que estaba buscando. Los includes funcionan en un tema hijo si usas eso.

Realmente me sorprende que incluso consideres usar una ruta hard coded... un tema no debería funcionar solo en un entorno. Podría entender si get_template_directory() no existiera... pero sí existe. Acabo de darme cuenta de que es una pregunta del 2010 lol

Definitivamente no quieres codificar la URL directamente. La forma correcta de hacerlo es:
require_once( get_stylesheet_directory(). '/my_included_file.php' );
Más información en Wordpress Codex
Ahora, si estás modificando por ejemplo header.php que tiene un include, lo referenciarías así:
require_once( get_stylesheet_directory() . '/../parenthteme/my_included_file.php' );

La forma más simple y mejor de incluir archivos tanto en el functions.php
del tema como en el desarrollo de plugins es usando dirname(__FILE__)
.
En tu caso solo necesitas esto:
require_once dirname(__FILE__)."/foo.php";
Si el archivo que quieres incluir está en otra carpeta, por ejemplo inc
, usarías esto:
require_once dirname(__FILE__)."/inc/foo.php";
Espero que esto ayude a alguien en el futuro.

Es completamente posible y normal hacer includes en functions.php
.
Yo lo hago así en mi tema hijo (php
es un subdirectorio para código):
include 'php/core.php';
Si tienes problemas sin razón aparente, prueba activando el modo de depuración en wp-config.php
:
define('WP_DEBUG', true);
Podría haber errores relevantes ocurriendo, pero que no se muestran.

Creo que esta es la mejor manera de obtener la ruta de tu tema hijo
<?php $get_my_path = dirname( get_bloginfo('stylesheet_url') ); ?>
<?php require_once( $get_my_path. '/my_included_file.php' ); ?>
Obtuve la idea de http://dynamicweblab.com/2013/02/get-template-path-in-wordpress-child-themes/
