Как вносить изменения в шаблоны дочерней темы, поверх шаблонов родительской темы?
Как вносить изменения в шаблоны дочерней темы добавляя (или переопределяя) функционал, а не копируя исходный файл родительской темы в дочернюю? Так же как это происходит с файлом style.css родительской и дочерней темы?
Например, мне надо чтобы в шаблоне одиночной записи page.php не выводился заголовок названия страницы. 1.Просто копирую шаблон page.php в папку дочерней темы. 2. удаляю там код между тегами «Head»
<header><h1 class="title"><?php the_title(); ?></h1>/header>
и получаю шаблон одиночной записи без заголовка. Или создаю в дочерней файл page_bez_zagolovka.php вношу туда измененения и назначаю страницам из админки уже этот шаблон.
А я хочу вносить изменения и дополнения в шаблоны дочерней темы, оставляя родительский неизменным. это возможно? как импортировать исходный код в файл дочерней темы, так же, как это делается в style.css c помощью команды вставляемой в файл style.css дочерней темы:
@import url('../родительская тема/style.css');
Не знаю понятно ли объяснила, я новичек и никак не могу найти ответ(( В кодексе написано, что достаточно создать файл с таким же именем как и у родительской темы и между тегами вносить свои коды. Они исполняться поверх кодов шаблонов родительских страниц. Расширяют и переопределяют функции родительской темы. Но когда я создаю, в папке дочерней темы тот же файл page.php
c кодом:
<?php /*здесь код отмены вывода названия страницы в шаблоне одиночной записи*/ ?>
т.е. пустой - у меня слетают все страницы использующие этот шаблон. как я понимаю, потому что новый файл исполняется поверх старого и он пустой. и вордпресс не знает где брать другой код. и движок не знает, что ему надо искать дальше код в родительской теме?
Можно, для чайника, написать какой именно код надо вставить в файлы function.php или page.php и других шаблонах дочерней темы, чтобы вордпресс знал, что это добавочная функция, и дальше надо брать код из шаблона родительской темы?
Вы все верно расписали. Дело там в том, что css и php это разные вещи. Правила CSS можно "перебивать" другими правилами и те которые записаны позднее будут иметь приоритет над теми, что записаны ранее. Собственно потому и называется "каскадная таблица стилей".
А в PHP так сделать не получится, там все "наоборот": например, если функция определена, то её нельзя переопределить это вызовет фатальную ошибку скрипта (кроме случаев, когда это предусмотрено создателем функции).
По сути для дочерних тем есть 4 варианта изменить родительскую тему:
Дополнить файл style.css родительской темы: создать его в дочерней, импортировать данные родительской темы и переопределить свойства стилей (это вы описали).
Дополнить файл functions.php: создать его в дочерней теме и дописать свои функции, хуки. Если родительская тема позволяет, переопределить функции родительской темы.
Переопределить .php файл родительской темы: скопировать нужный файл в дочернюю тему и изменить его как угодно (вы это описали).
Проверка
function_exists('theme_the_title')
дает возможность переопределить функцию. И вы можете удалить заголовок, определив такую же функцию в дочерней теме в файле functions.php:Так вам не нужно будет полностью копировать файл родительской темы, чтобы удалить заголовок на is_page странице. Но это не всегда возможно.
Также автор может предусмотреть возможность изменить часть файла темы, с помощью фильтров. Автор определяет фильтры в теме, через которые можно изменять вывод, не копируя файл в дочернюю тему. Например, опять нужно удалить заголовок для типов
is_page()
. В родительской теме заголовок выводится как-то так:Тут мы можем отфильтровать заголовок, определив фильтр в functions.php дочерней темы:
Ваш вопрос:
Никак! php - это совсем не css.
Обновление: статья: Дочерние темы WordPress
Спасибо большое за подробный ответ! Ваш сайт лучший, буду изучать как отче наш и рекомедовать остальным! + 1000 к карме!!;))