Підніміть руку ті, хто налаштовував більше 5 сайтів WordPress. Не опускайте руку, якщо ви налаштовували більше 10. Якщо ж ви налаштували більше 20, то, напевно, знаєте про дочірні теми. Робота з дочірньою темою – це чудовий спосіб змінити батьківську тему WordPress. За ці роки теми WordPress стали дуже різноманітними, але все одно вимагають налаштування.
Припустимо, що ви встановили одну із стандартних тем, наприклад, TwentySixteen або TwentyFifteen. Ви налаштували її стилі та додали кілька PHP функцій. Але що станеться, коли розробники випустять нову версію? У вас є лише два шляхи: завантажити оновлення та втратити всі налаштування, або залишити стару версію та зробити сайт вразливим.
Дивіться також:
- Налаштування тем WordPress із використанням дочірньої теми
- 7 плагінів та дочірніх тем для покращення теми Twenty Fourteen
- Перевизначення функцій батьківської теми дочірньої на WordPress
- Як створити просту WordPress-тему на основі Twenty Eleven
- Як встановити тему оформлення WordPress
Найкращим варіантом буде створення дочірньої теми для налаштування будь-якої теми.
У цій статті ми розповімо про те, як правильно створювати дочірні теми в WordPress та поділимося кодом _child шаблон. Отже, давайте спочатку дізнаємося більше про концепцію та важливість дочірніх тем у WordPress.
Що таке дочірні теми?
Принцип роботи дочірніх тем ґрунтується на батьківсько-дочірніх відносинах. Всі теми WordPress, платні або безкоштовні, є батьківськими темами. А всі дочірні теми переймають свої характеристики у батьківських. Тобто дочірня тема отримає весь набір функцій від батьківської теми.
Згідно з WordPress Codex:
Дочірня тема – це тема, яка переймає всі функції та дизайн іншої теми, названої батьківською темою. Дочірня тема є способом модифікації існуючих тем.
Якщо виходять поновлення батьківської теми, то дочірня тема не змінюється. Змінитися може лише батьківський контент, а налаштування дочірньої теми залишаються такими самими.
Відмінності дочірньої теми від батьківської
Таким чином, зберегти зміни та насолоджуватися оновленнями можна лише у дочірній темі. Згодом у цій статті ми також обговоримо методи створення дочірньої теми.
Ну а зараз давайте розглянемо відмінності дочірньої та батьківської теми:
- Дочірня тема працює лише, якщо встановлені обидві теми – батьківська та дочірня. Хоча ви й активуєте дочірню тему пізніше.
- Дочірня тема має зв'язок виключно зі своєю батьківською темою, у жодної іншої батьківської теми немає зв'язку з чужою дочірньою темою.
- Будь-які зміни у батьківській темі ніяк не впливають на дочірню.
Переваги використання дочірньої теми
Сама концепція дочірньої теми — чудова. Ми пропонуємо використовувати дочірні теми з усіма преміум-темами, а професійним розробникам варто включити їх у пакет зі своїми темами.
У дочірніх тем є безліч переваг:
- Дочірня тема зберігає ваші налаштування. Використовуючи дочірню тему, ви можете внести зміни прямо в код, без остраху втратити ваші налаштування при оновленні теми.
- Дочірня тема – це перший крок у навчанні написання коду WordPress.
- Дочірня тема може покращити робочий процес загалом. Використовуючи лише одну тему, ви можете створити сайти з різним рівнем функціональності та складності для кількох клієнтів.
Компоненти дочірньої теми
Дочірня тема є продовженням батьківської теми, переймаючи всі функції та особливості. Як і обіцяли, ось основний склад дочірньої теми:
- Директорія дочірньої теми: Це корінь папки, де знаходяться файли дочірньої теми
- Файл style.css: Цей файл містить всі властивості стилів вашої дочірньої теми.
- Файл functions.php: Містить визначення функцій, які викликані у вашій дочірній темі
Ви можете додати будь-яку кількість шаблонних файлів, але перелічені вище файли повинні бути в кожній дочірній темі.
Створення дочірньої теми у WordPress
Ви вже знаєте про декілька функцій та аспекти дочірніх тем WordPress. Ви з'ясували, для чого вони потрібні, а тепер настав час обговорити їхню назву. Найпростішим способом створення дочірньої теми буде використання плагіну. У бібліотеці WordPress.org ви можете знайти безліч безкоштовних плагінів, які спрощують створення дочірньої теми.
1. Конфігуратор дитячої теми
Плагін Child Theme Configurator створює дочірні теми за кілька кліків. З його потужним редактором CSS ви можете налаштувати розширений рівень функціональності. Плагін не лише ідентифікує, а й змінює потрібні атрибути CSS.
2. Child Themify
Для створення дочірніх тем ми можемо порекомендувати плагін Child Themify. Він дуже легкий і створює дочірню тему лише натисканням кнопки.
3. _child Theme Boilerplate
Якщо ви розробник, то вам, напевно, буде цікаво оцінити готовий шаблон для дочірньої теми. Він називається _child і було створено для оптимізації процесу створення дочірньої теми WordPress.
Цей шаблон надає інтуїтивну дочірню тему, де для її створення вам потрібно тільки вставити посилання на батьківську тему. Шаблон _child допоміг створити професійну дочірню тему. Ви можете знайти цей шаблон на GitHub. А зараз дозвольте нам розповісти про два готові файли в цьому шаблоні.
- style.css
- functions.php
Файл style.css містить стандартний хедер з інформацією, яка допомагає WordPress розпізнати його як таблицю стилів дочірньої теми. Теги для Назва теми и шаблон - найважливіші. Ви можете замінити тег Template на відповідний slug батьківської теми та вставити назву дочірньої теми.
Код для style.css:
/** * Theme Name: Themename Child * Description: Themename Child Theme * Theme URI: https://labs.ahmadawais.com/_child/ * Author: mrahmadawais, WPTie * Author URI: http://ahmadawais.com/ * Template: themename * Version: 1.0.0 */ /* ---------------------------------------------------------------------------- * Child Theme Style.css styles begin here! * ------------------------------------------------------------------------- */
У файлі functions.php є функція, яка називається aa_enqueue_styles(). Вона ставить у чергу таблиці стилів спочатку для батьківської теми, та був дочірньої. Таким чином, стиль дочірньої теми завжди залежатиме від батьківської.
Багато розробників з'єднують батьківську тему з дочірньою CSS, що уповільнює завантаження сайту тому, що браузеру доводиться завантажувати стилі з батьківської теми, а тільки після цього з дочірньої. Але коли ви ставите в чергу обидві таблиці стилів окремо, браузер може завантажити їх одночасно, що прискорить завантаження вашої сторінки.
Код для functions.php:
<?php /** * Child theme functions * * Functions file for child theme, enqueues parent and child stylesheets by default. * * @since 1.0.0 * @package aa */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) { exit; } if ( ! function_exists( 'aa_enqueue_styles' ) ) { // Add enqueue function to the desired action. add_action( 'wp_enqueue_scripts', 'aa_enqueue_styles' ); /** * Enqueue Styles. * * Enqueue parent style and child styles where parent are the dependency * for child styles so that parent styles always get enqueued first. * * @since 1.0.0 */ function aa_enqueue_styles() { // Parent style variable. $parent_style = 'parent-style'; // Enqueue Parent theme's stylesheet. wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' ); // Enqueue Child theme's stylesheet. // Setting 'parent-style' as a dependency will ensure that the child theme stylesheet loads after it. wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array( $parent_style ) ); } }
Підсумки
Неважливо, чи ви є звичайним користувачем або розробником. Дочірні теми – це чудовий спосіб налаштувати ваші основні теми в WordPress без остраху, що всі зміни злетять після виходу оновлення.
Коментарі до запису: 28
Клас! Дякую за статтю. Нещодавно саме шукав як створювати дочірні теми на Вордпрес
Доброго дня! Дізналася про дочірні теми після того, як зробила зміни в батьківському шаблоні. Підкажіть, будь ласка, тепер, якщо я зроблю дочірню тему за допомогою плагіна Child Theme Configurator, то при оновленні WordPress зміни в темі залишаться?
При оновленні WordPress зміни залишаться точно. Йдеться про те, щоб зміни залишилися після поновлення теми оформлення. Для цього робиться дочірня і до неї вносяться зміни для батьківської.
Доброго дня! Підкажіть, будь ласка, якщо я вже вносив зміни до батьківської теми та хочу оновити її, то яку послідовність дій мені потрібно виконати, щоб мої зміни не втратилися при оновленні батьківської теми?
Все залежить від того, які зміни ви вносили. Якщо йдеться про змінені налаштування та параметри теми, зроблені в адмінці WordPress, всі ці зміни збережуться при оновленні батьківської теми. Якщо ви змінювали файли теми, дописували свій код наприклад у functions.php, всі ці зміни втратяться, т.к. під час оновлення ці файли будуть перезаписані новими файлами з нової версії.
Вносив зміни до файлів теми, у тому числі і functions.php, style.css. Що б ви могли порадити, щоб зберегти вигляд сайту таким же за допомогою дочірньої теми, потім оновивши батьківську?
Так дочірня тема для того і існує, щоб до неї додавати свій власний код (у functions.php і в style.css) а батьківську не чіпати, а потім безболісно оновлювати в будь-який час батьківську тему. Після оновлення батьківської всі ваші добавки в functions.php і style.css в дочірній темі залишаться і продовжать працювати для батьківської.
Тобто мені вже не можна робити дочірню та оновлюватися, якщо до функцій і стилів внесено правки?
Ви можете копіювати всі внесені виправлення з functions і style і додати їх до дочірньої теми, а з батьківської все зайве прибрати та залишити як було в оригіналі. І потім оновлювати батьківську.
Спасибі! :)
Після створення дочірньої теми. при налаштуванні видає:
Сайт sitename.com виконав переадресацію дуже багато разів.
як це виправити?
Дякую, стаття дуже до речі припала
Доброго дня! Підкажіть, як правильно оновити тему? Я створив дочірню тему, активував її. Щоб оновити тему та не втратити зміни, мені потрібно тепер активувати батьківську, оновити її, а потім активувати дочірню. Правильно? Чи не так?
Щоб оновити батьківську тему, її не потрібно активувати, просто оновіть її та все. Активною може залишатися дочірня тема у своїй.
А щоб оновитись, потрібно просто заново завантажити архів із новою версією теми? У ній немає автоматичного оновлення.
У такому випадку так просто завантажте новий архів з темою.
Вітаю! А якщо мені треба в дочірній темі також підключити? Який код треба додати до functions.php у цьому випадку? Дякую!
Чи можна додати такий код?
wp_enqueue_script('newscript', get_stylesheet_directory_uri() . '/newscript.js', array('jquery'));
Чи буде він коректним? Яке місце functions.php можна помістити?
Чи правильно я зробив, додавши без змін наведений вище код functions.php на свій сайт? У мене біла сторінка зрештою. Що-то треба було змінити у functions.php?
Підкажіть, будь ласка: після створення дочірньої теми плагіном Child Theme Configurator його можна вимкнути? Чи він має бути завжди активним?
Буду вдячна за відповідь!
Добридень! А можна додати в дочірню тему 2 різних style CSS? І як це зробити?
Доброго дня! У мене така ж проблема як і у Анатолія: «Вносив зміни до файлів теми, у тому числі і functions.php, і style.css…» З вашої відповіді, чи правильно я зрозуміла?, що у створеній Дочірній темі файли у functions і style будуть оригінальні, не змінені, без змін, як були в рідному Шаблоні сайту. Тому мені потрібно буде обміняти файли: файли у functions та style Дочірньої теми перенести у файли Батьківської теми, і навпаки? Завчасно дякую за відповідь.
Вибачте, у якого Анатолія? Можете докладно описати, що не виходить?
я вже вносила зміни до Батьківської теми і хочу оновити її, при створенні Дочірньої теми, які файли мені потрібно з Батьківської теми перемістити до Дочірньої, щоб мої, раніше зроблені, зміни в Батьківській темі не втратилися при оновленні?
Здрастуйте.Питання чайника: Якщо встановити відразу шаблон child c сайту wordpress.org, тоді не потрібно створювати дочірню тему для внесення змін? У мене голова вже пухне від великої кількості інформації, як правильно зробити?
Дайте будь ласка посилання на цю тему.
ЗДР! Я встановила доньку тему, але у functions.php ваш код не проходить, видає сл. помилку: Неможливо з'єднатися з сайтом для перевірки коду на помилки, було зроблено відкат змін у PHP-коді. Вам потрібно завантажити змінений PHP файл іншим способом, наприклад, через FTP або SFTP. Ви можете допомогти? Дякую!
Дякуємо