Na sobotní konferenci jsem zdůrazňoval důležitost použití child themes ve WordPressu. Bohužel se ukázalo, že ne každý si dovede představit, jak vlastně taková child theme funguje.
Když si na váš web nainstalujete šablonu, tak takovou šablonu je možné aktualizovat, pokud tedy autor nějakou aktualizaci udělá.
Nikdo z nás však nenajde šablonu, jenž mu vyhovuje absolutně. A pokud chcete upravit vzhled webu, zásahům do šablony se nevyhnete. Ať již upravujete css styly, nebo přímo kód v souborech.
Po aktualizaci o vše přijdete!
Při aktualizaci se šablona smaže a nahrají se nové soubory. Díky tomu přijdete o vámy pracně vyvořené úpravy a můžete začít znovu. Naštěstí vývojáři WordPressu vytvořili child themes, tak aby jste mohli šablonu používat bez obavy ze stráty úprav.
V child šabloně pak řešíte jen ty části kódu, nebo stylů, jenž chcete upravit. Vše ostatní se načítá z rodičovské šablony.
Potřebujete například upravit zobtazování titulku detilu stránky. V rodičovské šabloně máte soubor content-page.php, jenž překopírujete do složky child theme a v něm upravíte html kód titulku.
WordPress si nejprve zjistí, jaké soubory jsou v child theme a ty soubory pak již v rodičovské šabloně nenačítá.
Jak vytvořit child theme?
Pokud se vám nechce číst návod a raději se podíváte na video, jedno jsem natočil již pře nějakou dobou a najdete jej na webu wp-see.com.
Ti co raději čtou se mohou věnovat návodu zde v článku.
Co budeme potřebovat pro child theme?
Rodičovskou šablonu. Pokud si koupíte šablonu třeba na ThemeForest, často složka, jenž si stáhnete, obsahuje zip soubor se šablonou a zip soubor označený nazev-sablony-child. Pokud ano, máte vyhráno. Nahrejte obě složky a aktivujte child. Máte hotovo a dál číst nepotřebujete.
Pokud tam ale child není, musíte si ji vytvořit. Ve složce themes, kde máte všechny šablony vytvořte složku a nazvěte ji nazev-sablony-child.
Nyní se vraťte do složky rodičovské šablony a otevřete si soubor style.css.
Na jeho začátku uvidíte tento kód:
/*
Theme Name: Test
Theme URI:
Author: Vladislav Musilek
Author URI: toret.cz
Description: Description
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: test
Tags:
*/ |
Této části se říká stylesheet header a je to životně důležitá součást šablony. WordPress podle této části kódu zjišťuje existenci šablony a informace o ní. Zde vidíte, že šablonu jsme nazvali Test.
Dalším krokem je vytvoření prázdného css souboru style.css ve složce child theme. Soubor nemusí kromě stylesheet headeru obsahovat žádný jiný kód. Header je však nutné upravit:
/*
Theme Name: Test Child
Theme URI:
Author: Vladislav Musilek
Author URI: toret.cz
Description: Test Child Theme
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Template: parenttheme
Text Domain: test
Tags: |
Tím máme připravenou šablonu tak, že ji vidíme v administraci a můžeme ji aktivovat.
Všimněte si rozdílu, oproti původnímu zápisu, kdy je navíc položka Template. Ta říká, jaká šablona je te rodičovská. Vždy do ní zapisujeme název šložky rodičovské šablony, například Template: avada.
Co ještě musíme udělat je, že WordPressu musíme říci, odkud má načítat css styly pro šablonu.
Dříve se to řešilo pomocí zápisu import ve style.css, ale tato metoda je již zavržená a správný způsob je pomocí enqueue.
Načtení css stylů pro child theme
Nyní musíme ve složce child šablony vytvořit soubor functions.php, tedy stejný soubor, jenž se nachází i v rodičovské šabloně.
Do něj vložíme tento kód:
(upraveno 4.12.2015 z důvodu neaktuálnosti kódu)
add_action( 'wp_enqueue_scripts', 'your_child_theme_enqueue_styles' ); function your_child_theme_enqueue_styles() { // Parent style id - replace your child theme name $parent_style = 'parent-style'; // Enqueue Parent theme's style wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' ); // Enqueue Child theme's style wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array( $parent_style ) ); } |
Hotovo!
Child theme máte připravenou a můžete začít upravovat šablonu dle vašich potřeb.
Určitě se stane, že narazíte na problémy, některé věci nejsou úplně jednoduché, ale je to jediná správná cesta.
Poznámka:
Aktuálně je k dispozici připravená child theme, kterou jsi jen stáhnete, změníte název složky rodičovské šablony a můžete upravovat – http://musilda.cz/child-theme-snadno-a-rychle/
Ahoj, a co využít některý plugin pro tvorbu child theme? Třeba https://wordpress.org/plugins/one-click-child-theme/
Díky.
Využívání pluginů by se nemělo přehánět. V každém případě by správce webu měl vědět, jak funguje child theme.
Dříve jsem o child theme nevěděl nic. Je to opravdu dobrá věc, ale pokud někdo chce udělat šablonu přímo na míru nějakému webu, kde bude spousta funkcí, raději bych volil úplně novou šablonu i za cenu, že ta šablona bude něco stát. Do budoucna se to jistě danému webu vyplatí.
Pro klasické weby, ale stačí vytvořit child theme a zvesela vytvářet web.
Děkuji za návod. Nakonec jsem to dokázal, ale až když jsem změnil get_stylesheet_directory_uri() na get_template_directory_uri().
Jakou funkci má číslo 1000 v prvním řádku function.php?
To číslo určuje v jakém pořadí se bude provádět funkce zavěšená do hooku. 1000 je trochu prasárnička :-)
Díky za tip Hamil1, funguje opravdu až po změně na get_template_directory_uri() , jestli je hodnota 1000 prasárnička proč ji v článku uvádíš? :)
Protože v zásadě to není špatně. Ale ten návod již stejně není aktuální a možná ještě dnes jej přepracuji.
Ahoj, jsem v tomhle začátečník, tak bych měla pro vás možná hloupý dotaz. Ten kod pro functions.php nahradí ten původní kod nebo ho jen k tomu původnímu z rodičovské šablony přidám? Předem díky za radu.
Dobrý den
ten kód se vloží do functions.php v child theme.
Podívejte se na odkaz na konci článku, tam najdete již hotovou child šablonu.
Nechybí na začátku tady uvedeného souboru functions.php ´<?php´ ?
Nechybí. V textu je uvedeno, že se jedná o kód, který má být do souboru vložen.
Child-theme mi nefunguje pro soubory:
bootstrap.js
customizer.php
functions.php
Pro nektere dalsi funguje:
footer.php
page.php
sidebar.php
…
Nemate nekdo zkusenosti s resenim teto chyby? Dekuji.
V css souboru child šablony (Theme Name: Test Child) chybí parametr Template – bez něho nepůjde šablona aktivovat v administraci.
Doplněno do článku.
Zdravím,
dostala jsem se poprvé k vytvoření Child Theme a mám prosbu ohledně stylů. Všude jsou uvedeny příklady pouze se style.css, ale jak mám zapsat kód do functions.php když mám css souborů více? Ve style.css jsou pouze informce o šabloně (ty co se dávají i do child) a pak jen „.sticky {} .bypostauthor {}“ ostatní styly jsou v jiné složce. Jsou tam i styly pro vzhled v administraci a editoru.
Pingback: Tvorba základního affiliate webu 1. část ze 3 - Jaroslav Janíček
Sepsal jsem návod pro začátečníky jak vytvořit child theme. Najdete zde také template childtheme pro Twenty Nineteen. Mrkněte sem: https://www.wpmax.cz/zrizeni-child-theme-pro-wordpress-sablony/
Pingback: Child téma do WP – Linux & BSD – Technologies
Pingback: Jak vytvořit jednoduchý plugin pro WordPress - Musilda.cz