CSS výřez

WordPress: Neupravujte šablony přímo

Občas se nestačím divit, kolik lidí nasadí ve WordPressu šablonu a pokud se jim něco nelíbí tak ji upraví přímo. Jsou-li to úpravy, které nezvládne vestavěný nástroj, tak neváhají šáhnout přímo do zdrojových kódů. Výsledkem může být neaktualizovatelný WordPress (kdyby šablona přestala být kompatibilní).

Pro šablony s některým z vizuálních editorů obvykle neplatí, že nelze udělat všechny úpravy. Ale pro vytvoření odvozené šablony důvod existovat může.

Že by koupená (nebo volně použitelná šablona) 100% vyhovovala, se mi ještě nestalo. Nějaký balík úprav se dělá snad pokaždé a ne na vše stačí vestavěné nástroje pro přizpůsobení. Dostat se k instalaci WordPressu, kde „programátor“ spáchal úpravy přímo v zakoupené, nebo stažené, šabloně je méně vzácné, než by člověk znající WP čekal.

Průšvih nastane, když dojde na aktualizace. Správce bude (možná) ochoten několikrát zopakovat úpravy, ale brzy se nejspíše dostane do stavu, kdy aktualizace šablon přestane provádět; nedlouho poté přestane aktualizovat i WordPress jako takový, protože si šablona s novou verzí CMS nebude rozumět. Rizika jsou jasná, nové verze CMS většinou nepřináší novou funkčnost, ale většina změn jsou bezpečnostní opravy.

Jak vytvořit odvozenou šablonu (child theme)?

Pluginem

Snadnou cestou je použití pluginu (například Child Themify), který část práce udělá za webdesignera. Nepředpokládám, že designer musí být dostatečně zdatný, aby pochopil které soubory musí vytvořit a co do nich napsal, aby odvozená šablona (child theme) fungovala. Mimochodem, občas plugin využiji také, nainstalovat, zaktivovat, několika kliky myši udělat kostru a zase plugin odebrat je rychlé. Po vytvoření child theme není plugin potřebný, lze jej v klidu odebrat.

Ručně

Vytvořit „ručně“ odvozené téma je méně komplikované, než se zdá.

  1. V adresáři wpcontent/themes vytvořím adresář pro child theme. Abych se ve struktuře lépe vyznal, tak použivám název šablony od které odvozuji a k němu připojím buď akronym zákazníka anebo slovo child (twentyfifteen_child, 2014_spdux, …).

  2. Do adresáře přidám 2 soubory, functions.php a style.css. Soubor style.css doplním o podobný blok:

    /*
     Theme Name:   Praha-Lodě
     Theme URI:    //www.ocalweb.cz
     Description:  Twenty Thirteen child - prahalode
     Author:       Marek Olsavsky
     Author URI:   //www.olsavsky.cz
     Template:     twentythirteen
     Version:      1.0.0
     License:      GNU General Public License v2 or later
     License URI:  http://www.gnu.org/licenses/gpl-2.0.html
     Tags:         light, two-columns, responsive-layout, accessibility-ready
     Text Domain:  praha_lode_template
    */


    Na řádku Template je název šablony od které se nová odvozuje.
    Druhý krok je doplnění functions.php o blok:

    <?php
     add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );
     function my_theme_enqueue_styles() {
       wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
     }
    ?>

  3. Editace šablony

    Nyní už lze lze upravovat styly (style.css), případně měnit jednotlivé bloky.

    Například pro úpravy patičky webu zkopíruji footer.php z mateřského tématu do odvozeného a tam jej upravím podle svých potřeb. (Typicky sem přidávám Google Analytics JavaScript; nepoužívám plugin.)

    Závěrem

    Odvozená šablona přebírá všechny vlastnosti (ještě jsem se nesetkal s tím, že by to nefungovalo) od svého předka. Včetně všech možností a nástrojů.

    Výběr šablon je opravdu pestrý, ale téměř nikdy není důvod nedělat child theme. Child dělám i pro Divi (ostatně tu bych přímo ani neupravoval), někdy je pro mě výhodné přepsat některou z vlastností přímo. Změna fontu, či doplnění vlastního JavaScriptu (například Google Analytics), jsou poměrně typické příklady toho, kdy je práce v child theme jednodušší variantou, ne-li jedinou možností, pro docílení kýženého efektu.

    Změny v child theme jsou lépe přenosné a „blbuvzdornější“, než úpravy provedené vizuálními nástroji v administraci WordPressu (které si zákazník může překlikat i nechtěně).

    A proč vznikl další příspěvek, který opakuje to co je na internetu napsáno již 1 000×? Protože jsem právě takto ohnutou šablonu napravoval. Zastavené aktualizace, WordPress ve verzi 4.5, protože měli vyzkoušené, že s další aktualizací si už šablona neporadí. Nezbylo, než stáhnout původní verzi šablony, diffem najít úpravy od „vývojáře“ a vyrobit child theme s úpravami.

    Občas by se (mi) hodilo mít podobný mechanismus i pro pluginy. Udělat instanci existujícího (který bude aktualizován) a moci rozšířit jeho funkčnost. Ano je jeden malý workaround, ale není to úplně čisté řešení, protože zablokuje aktualizace pluginu.

Flattr this!

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *