¿Dónde colocar archivos PHP personalizados en un tema hijo?
Estoy personalizando un tema premium de WordPress para adaptarlo mejor a mi sitio, pero no estoy seguro de qué hacer con los archivos PHP que personalizo. ¿Debo colocarlos directamente en la raíz de la carpeta del tema hijo? ¿O debo mantener una estructura de carpetas similar a la del tema original? ¿Cómo me aseguro de que el archivo PHP del tema hijo se esté utilizando en lugar del archivo del tema padre (por ejemplo, header.php)?

Un par de cosas que añadir
- Si añades archivos de plantilla en el tema hijo. Reemplazarán los archivos de plantilla del tema padre.
- El CSS no se importa automáticamente, así que tienes que importarlo en tu archivo CSS del tema hijo usando
@import
, podría verse algo así@import url("../twentyeleven/style.css");
- El archivo
functions.php
no se reemplaza, por lo que todas las funciones del tema padre siguen definidas y puedes añadir tus nuevas funciones PHP en el archivofunctions.php
del tema hijo. - Si copias y pegas un archivo PHP del tema padre al tema hijo para modificarlo y ves algo como
require_once(TEMPLATEPATH.'/includes/a_php_file.php');
Recuerda que la constanteTEMPLATEPATH
sigue apuntando al directorio del tema padre. Si necesitas cambiar el archivoa_php_file.php
entonces copia ese archivo también en tu tema hijo y usa la ruta de la hoja de estilos del tema para acceder al tema hijo. Así que tendrás que hacer algo como estoinclude( get_stylesheet_directory() . '/includes/a_php_file.php');
Entonces, ¿cómo me aseguro de que se use el archivo del tema hijo? Bueno, si haces todo correctamente, las plantillas del tema hijo ya se están usando. Pero aún así, si quieres verificarlo, puedes añadir un comentario HTML en el archivo de plantilla y revisar el código fuente. A veces lo hago cuando las cosas no funcionan para mí, también añado el nombre del archivo PHP al comentario HTML para saber qué archivo incluye/requiere desde dónde.
Codex:
http://codex.wordpress.org/Function_Reference/get_stylesheet_directory

Para responder a tus preguntas sin un orden en particular:
Cualquier archivo de plantilla que incluyas en un tema hijo se usará automáticamente en lugar de una versión con el mismo nombre del tema padre. (Esto no aplica para style.css o functions.php, pero header.php y otros similares están cubiertos).
WordPress usará la jerarquía de plantillas para determinar qué plantillas se necesitan según la consulta en cuestión. Si el tema está bien construido, deberías poder colocarlos en la raíz de tu carpeta sin replicar la estructura de directorios original.
PERO, si el tema padre fue codificado de formas no estándar, y especialmente si intenta incluir archivos directamente en lugar de usar funciones de WordPress (como get_header(), get_footer(), get_template_part() etc.), puede que tengas que ensuciarte un poco más las manos. Los buenos temas premium suelen incluir documentación sobre cómo construir temas hijos para sus propios sistemas, especialmente si dependen mucho de hooks no nativos de WP para funcionar... pero claro, puede que no sepas qué tan buena es la documentación del tuyo hasta que empieces a experimentar. ¡Buena suerte!
