https://make.wordpress.org/training/handbook/lesson-plans/theme-school/child-themes/child-themes-twentyseventeen/
Дочерняя тема позволяет модифицировать родительскую тему несколькими способами:
В папке \wp-content\themes создаём новую папку с именем дочерней темы и помещаем в неё 2 файла:
(в дочерней теме)
Enqueue parent and child theme style sheets
(в дочерней теме)
Сначала выполняется файл functions.php из дочерней темы, затем - из родительской.
<?php
function mychildtheme_enqueue_styles() {
$parent_style = 'parent-style';
wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' );
wp_enqueue_style( 'child-style',
get_stylesheet_directory_uri() . '/style.css',
array( $parent_style )
);
var_dump($parent_style);
}
add_action( 'wp_enqueue_scripts', 'mychildtheme_enqueue_styles' );
?>
Файл style.css дочерней темы переопределяет любые стили в файле style.css родительской темы, которые имеют одинаковые селекторы.
Файлы «Дочерней темы» влияют на файлы «Родителя»: они либо переопределяют элементы и добавляют функциональность к его файлу «Родителя» с тем же именем, либо полностью заменяют его.
Пример нового файла footer.php для темы (он заменяет файл из папки с родительской темой)
<?php /* New footer */ ?> </div><!-- #content --> <footer id="colophon" class="site-footer"> <?php printf( 'New footer © 2019' ); ?> </footer><!-- #colophon --> </div><!-- #page --> <?php wp_footer(); ?> </body> </html>
Пример добавляет альтернативный шаблон с именем Template - test2
Шаблон с этим именем появляется как вариант выбора шаблона в свойствах страницы (page attributes).
<?php
/*
Template Name: Template - test2
*/
get_header();
?>
<section id="primary" class="content-area">
<main id="main" class="site-main">
<H1>New - corrected index.php </H1>
<?php
if ( have_posts() ) {
// Load posts loop.
while ( have_posts() ) {
the_post();
get_template_part( 'template-parts/content/content' );
}
// Previous/next page navigation.
twentynineteen_the_posts_navigation();
} else {
// If no content, include the "No posts found" template.
get_template_part( 'template-parts/content/content', 'none' );
}
?>
</main><!-- .site-main -->
</section><!-- .content-area -->
<?php
get_footer();