Сделал новые функции, убив вызов родных, для чего пришлось изменять кучу файлов, где они вызываются. Такой вот костыль..
Как всё-таки делать по-человечески?
Файл functions.php
дочерней темы загружается перед файлом родительской, поэтому переопределить в нём можно только те функции, для которых автор темы это предусмотрел (с помощью конструкции, используемой в стандартных темах):
if ( ! function_exists( 'twentyeleven_setup' ) ) :
function twentyeleven_setup() {
// ...
}
endif;
Если в родительской теме они не обёрнуты в условие !function_exists()
— остаётся переименовать функции в дочерней, скопировать все файлы, в которых они вызываются, и поменять вызовы, что вы и сделали.
Простого решения в данном случае я пока не вижу. Можно написать автору, чтобы учёл возможность переопределения функций в следующих версиях 🙂
для которых автор темы это предусмотрел
Тут вообще интересная (или мутная) история 🙂
functions.php состоит только из определения переменных (в которых указаны пути к каталогам с файлами функций) и последующим их подключения:
$fe_path = TEMPLATEPATH . '/functions/fe/';
....
require_once ($fe_path . 'setup.php');
require_once ($fe_path . 'library.php');
Функции же не проверяются на существование. Ни в этих файлах, ни в тех, где они вызываются (content.php, footer.php и тп).
В общем, спасибо, Сергей, за пояснения.
А да, последний вопрос: TEMPLATEPATH
в примере кода выше — это дочки или родителя берётся?
TEMPLATEPATH
— каталог родительской темы, STYLESHEETPATH
— дочерней.
Не вполне очевидно, но так исторически сложилось 🙂
TEMPLATEPATH — каталог родительской темы, STYLESHEETPATH — дочерней.
то-то я думаю почему это картинки нужно дублировать( бо часть запрашивается с дочки, часть — с родителя) 🙂
Понятно, спасибо ещё раз.