Создание дочерней темы для WordPress

Если редактировать файлы тем WordPress-а вручную, то при следующем обновлении темы все ваши изменения пропадут. Файлы будут перезаписаны новыми версиями. Но иногда бывает нужно совсем немного поправить уже существующую тему. Поменять шрифт или цвет, добавить скрипты статистики в конец страницы. Для того чтобы изменения не пропадали, нужно создать дочернюю тему. Делается это очень просто. В этой статье я опишу процесс создания простой дочерней темы WordPress.

Для начала нужно создать папку для своей дочерней темы WordPress. Папка должна располагаться в wp-content/themes. Имя папки может быть произвольным. Назовём её mychildtheme. В эту папку нужно положить один единственный файл style.css. В этом файле нужно вставить описание своей темы в формате:

Здесь вместо parenttheme нужно указать название своей родительской темы.

Наш style.css будет заменять файл style.css родительской темы.  Поэтому теперь нам нужно добавить файл functions.php в нашу тему. В этом файле нужно указать, что сначала нужно загружать style.css родительской темы, а затем наш, дочерний:

Наш файл functions.php будет выполняться перед файлом functions.php родительской темы.

Теперь можно попытаться переключиться на нашу тему.

Создание дочерней темы для WordPress: 3 комментария

  1. Получается что при выполнении functions.php родительской темы ещё раз загрузится стиль нашей дочерней темы, т.к. в родительской теме тоже есть вызов:
    wp_enqueue_style( ‘main-style’, get_stylesheet_uri() );

  2. Поэтому перед выполнением описанного в статье кода надо добавить:

    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().

    1. В любом случае в моём текущем получающемся CSS я не нашёл задвоения классов CSS, хотя возможно это плагин кэширования и обфускации их убирает.
      Thank you for the comment anyway.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *