• Решено Demkov

    (@demkov)


    Я сейчас корплю над темой Business-lite.
    Создал дочернюю тему, в которой вносил необходимые изменения в CSS.
    Судя по этой инструкции, style.css подхватывается и содержанием заменяет значения родительской темы.
    Как сделать то же самое, но для файлов php? То есть нужно не добавлять функции в файл, а заменить текущие на свои.
    Интересует не просто functions.php, а /core/actions/header-actions.php. Подключал его через require_once( get_stylesheet_directory(). '/core/actions/header-actions.php' );, но шаблон не поднялся с ошибкой совместимости.
    Как-то можно решить дочерней темой или придётся форкнуть родительскую?

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Автор Demkov

    (@demkov)

    Мне всего-навсего нужно переставить DIV’ы в этом файлике местами — поменять логотип и навигацию местами справа-налево.

    style.css подхватывается и содержанием заменяет значения родительской темы

    Не заменяет а работает принцип приоритетов.

    Как сделать то же самое, но для файлов php?

    Также, как и для style.css
    Копируете нужный файл шаблона в дочку и правите, как вам надо.

    Автор Demkov

    (@demkov)

    Также, как и для style.css
    Копируете нужный файл шаблона в дочку и правите, как вам надо.

    Скопировал.
    В случае со style.css работают приоритеты, а вот с *.php — нет.

    Fatal error: Cannot redeclare themezee_enqueue_comment_reply() (previously declared in /home/u879192928/public_html/blog/wp-content/themes/zaebizzcard/functions.php:33) in /home/u879192928/public_html/blog/wp-content/themes/zeebizzcard/functions.php on line 36

    — такие ошибки наблюдаются и в случае если добавить пустой php с добавлением какой-либо функции (в инструкции подключение favicon), и в случае, если просто скопировать файл php из директории родительской темы в директорию дочерней. Они конфликтуют, должен остаться кто-то один :))

    Автор Demkov

    (@demkov)

    Опытным путём выяснил, что это, возможно, плохая адаптация темы к возможности создания дочерних.
    Во всяком случае, если поместить в дочку footer.php, там можно аккуратно заменять ссылки в подвале без падения шаблона.
    А вот если добавить опцию в functions.php — имеем то, что имеем. Или даже если не добавить, а просто «слизать» его полностью с родителя.

    В случае со style.css работают приоритеты, а вот с *.php — нет.

    Логично 🙂 Там другие механизмы и принципы..

    что это, возможно, плохая адаптация темы к возможности создания дочерних.

    Да, знакомая ситуация. «Пинайте» разработчиков. Особенно если функция выводит что-нибудь или влияет на вывод другой и не обернута в if ( ! function_exists( 'bla-bla' ) или не имеет фильтров|экшенов..

    а просто «слизать» его полностью с родителя.

    В данном случае можно немного схитрить, содержимое оригинальное, именование функции свое, и в нужном месте шаблон(-а|-ов) использовать свою функцию.

    Но зато есть преимущество, при обновлении темы оформления, все изменения не пропадут в мгновение ока..

Просмотр 5 ответов — с 1 по 5 (всего 5)

Тема «Child theme — ЗАМЕНА функции php» закрыта для новых ответов.