Где размещать пользовательские PHP файлы в дочерней теме?
Я настраиваю премиум-тему WordPress под свой сайт, но не могу разобраться, что делать с изменёнными PHP файлами. Нужно ли просто помещать их в корень дочерней темы? Или следует сохранять ту же структуру папок, что и в родительской теме? Как убедиться, что используется именно PHP файл дочерней темы (например, header.php), а не родительской?

Несколько важных моментов для добавления
- Если вы добавляете файлы шаблонов в дочернюю тему, они заменят файлы шаблонов родительской темы.
- CSS не импортируется автоматически, поэтому вам нужно импортировать их в CSS-файл дочерней темы с помощью
@import
. Это может выглядеть примерно так:@import url("../twentyeleven/style.css");
- Файл
functions.php
не заменяется, поэтому все функции из родительской темы остаются определенными, и вы можете добавить свои новые PHP-функции в файлfunctions.php
дочерней темы. - Если вы копируете и вставляете PHP-файл из родительской темы в дочернюю для модификации и видите что-то вроде
require_once(TEMPLATEPATH.'/includes/a_php_file.php');
, помните, что константаTEMPLATEPATH
по-прежнему указывает на директорию родительской темы. Если вам нужно изменить файлa_php_file.php
, то скопируйте этот файл в вашу дочернюю тему и используйте путь к таблице стилей темы для доступа к дочерней теме. Вам нужно сделать что-то вроде этого:include( get_stylesheet_directory() . '/includes/a_php_file.php');
Как убедиться, что используется файл дочерней темы: Если вы все сделали правильно, шаблоны дочерней темы уже используются. Но если вы хотите проверить, вы можете просто добавить HTML-комментарий в файл шаблона и проверить исходный код. Иногда я так делаю, когда что-то не работает, а также добавляю имя PHP-файла в HTML-комментарий, чтобы знать, какой файл откуда подключается.
Codex:
http://codex.wordpress.org/Function_Reference/get_stylesheet_directory

Отвечу на ваши вопросы в произвольном порядке:
Любые файлы шаблонов, которые вы добавляете в дочернюю тему, будут автоматически использоваться вместо одноименных версий из родительской темы. (Это не относится к style.css или functions.php, но header.php и другие — все учитываются.)
WordPress использует иерархию шаблонов, чтобы определить, какие шаблоны нужны на основе текущего запроса — если тема хорошо структурирована, вы можете просто размещать их в корневой папке без дублирования оригинальной структуры каталогов.
НО, если родительская тема была написана нестандартными способами, и особенно если она подключает файлы напрямую, а не через функции WordPress (такие как get_header(), get_footer(), get_template_part() и т. д.), вам, возможно, придется немного повозиться. Хорошие премиум-темы часто имеют документацию о том, как создавать дочерние темы для их системы, особенно если они сильно зависят от нестандартных хуков... но, конечно, вы не узнаете, насколько хороша документация для вашей темы, пока не начнете экспериментировать. Удачи!
