Если редактировать файлы тем WordPress-а вручную, то при следующем обновлении темы все ваши изменения пропадут. Файлы будут перезаписаны новыми версиями. Но иногда бывает нужно совсем немного поправить уже существующую тему. Поменять шрифт или цвет, добавить скрипты статистики в конец страницы. Для того чтобы изменения не пропадали, нужно создать дочернюю тему. Делается это очень просто. В этой статье я опишу процесс создания простой дочерней темы WordPress.
Для начала нужно создать папку для своей дочерней темы WordPress. Папка должна располагаться в wp-content/themes. Имя папки может быть произвольным. Назовём её mychildtheme. В эту папку нужно положить один единственный файл style.css. В этом файле нужно вставить описание своей темы в формате:
1 2 3 4 5 6 7 8 9 |
/* Theme Name: My Child Theme Theme URI: http: //example.com/ Description: Дочерняя тема для темы some theme Author: Your name Author URI: http: //example.com/author/ Template: parenttheme Version: 0.1.0 */ |
Здесь вместо parenttheme нужно указать название своей родительской темы.
Наш style.css будет заменять файл style.css родительской темы. Поэтому теперь нам нужно добавить файл functions.php в нашу тему. В этом файле нужно указать, что сначала нужно загружать style.css родительской темы, а затем наш, дочерний:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php function theme_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 ) ); } add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' ); ?> |
Наш файл functions.php будет выполняться перед файлом functions.php родительской темы.
Теперь можно попытаться переключиться на нашу тему.
Получается что при выполнении functions.php родительской темы ещё раз загрузится стиль нашей дочерней темы, т.к. в родительской теме тоже есть вызов:
wp_enqueue_style( ‘main-style’, get_stylesheet_uri() );
Поэтому перед выполнением описанного в статье кода надо добавить:
function unhook_parent_style() {
wp_dequeue_style( 'main-style' );
wp_deregister_style( 'main-style' );
}
add_action( 'wp_enqueue_scripts', 'unhook_parent_style', 20 );
‘main-style’ – имя ($handle) может быть другим. Надо найти в родительской functions.php по get_stylesheet_uri().
В любом случае в моём текущем получающемся CSS я не нашёл задвоения классов CSS, хотя возможно это плагин кэширования и обфускации их убирает.
Thank you for the comment anyway.