Što je Child Theme u WordPressu i kako ga kreirati: Kompletan vodič za početnike
Ako ste ikada pokušali prilagoditi WordPress temu i zatim izgubili sve promjene nakon ažuriranja, ovaj vodič je za vas. Child theme (dječja tema) je rješenje koje omogućava sigurne prilagodbe bez straha od gubitka rada.
U ovom detaljnom vodiču naučit ćete točno što je child theme, zašto ga trebate, i kako ga kreirati korak po korak – čak i ako nikada niste programirali.
Sadržaj
Što je child theme u WordPressu?
Child theme je posebna WordPress tema koja nasljeđuje funkcionalnost, značajke i stil “roditeljske” teme (parent theme), ali vam omogućava da napravite prilagodbe bez izmjene originalne teme.
Jednostavnom analogijom: Child theme je poput stvaranja kopije knjige u koju možete pisati bilješke i izmjene, dok originalna knjiga ostaje netaknuta.
Kako child theme funkcionira?
WordPress ima princip “kaskadne nasljednosti” gdje child theme:
- Preuzima sve iz parent theme – dizajn, funkcionalnost, postavke
- Dodaje ili mijenja samo ono što želite – vlastiti CSS, funkcije, template datoteke
- Omogućava sigurna ažuriranja – parent theme se može ažurirati bez gubitka prilagodbi
Kada WordPress učitava stranicu s aktivnim child theme-om:
- Prvo provjerava postoji li datoteka u child theme direktoriju
- Ako postoji, koristi tu verziju
- Ako ne postoji, koristi verziju iz parent theme-a
Zašto vam je potreban child theme?
1. Zaštita prilagodbi pri ažuriranjima
Najvažniji razlog za korištenje child theme-a je zaštita vašeg rada.
Problem bez child theme-a:
- Izmijenite
style.cssilifunctions.phpu temi - Tema dobije ažuriranje sigurnosti ili novih značajki
- Kliknete “Update”
- Sve vaše prilagodbe su izbrisane
Rješenje s child theme-om:
- Sve prilagodbe su u odvojenom direktoriju
- Parent tema se može sigurno ažurirati
- Vaše izmjene ostaju netaknute
2. Organizacija i čistoća koda
Child theme omogućava jasno razdvajanje:
- Parent theme = osnovna funkcionalnost
- Child theme = vaše specifične prilagodbe
Ovo olakšava debugiranje, održavanje i razumijevanje što ste točno promijenili.
3. Lakše testiranje
Možete eksperimentirati s izmjenama bez straha:
- Probajte novi CSS
- Testirajte custom funkcionalnost
- Ako nešto pođe po zlu, jednostavno vratite child theme na prijašnju verziju
4. Profesionalni development workflow
Za developere i agencije, child theme-ovi omogućavaju:
- Verzioniranje izmjena (Git)
- Timski rad na projektu
- Prebacivanje između staging i production okruženja
- Dokumentiranje specifičnih izmjena za klijenta
5. Produljenje životnog vijeka teme
Premium teme često dobivaju značajna ažuriranja:
- Nove značajke
- Poboljšanja performansi
- Sigurnosne zakrpe
- Kompatibilnost s novim verzijama WordPressа
S child theme-om možete iskoristiti sve te benefite bez gubitka prilagodbi.
Kada koristiti child theme?
UVIJEK koristite child theme ako:
✅ Mijenjate CSS stilove teme
✅ Dodajete custom PHP funkcije
✅ Prilagođavate template datoteke (header.php, footer.php, single.php…)
✅ Radite na klijentskom projektu
✅ Planirate dugoročno održavanje web stranice
✅ Koristite popularnu temu koja se redovito ažurira
NE trebate child theme ako:
❌ Koristite Customizer (Theme Customizer izmjene se čuvaju u bazi)
❌ Sve radite kroz page buildere (Elementor, Divi, Beaver Builder)
❌ Koristite samo pluginove za prilagodbe
❌ Tema ima ugrađene opcije za sve što trebate
Napomena: Čak i ako trenutno ne mijenjate kod, preporučujem kreiranje child theme-a “za svaki slučaj” – nikad ne znate kada će vam zatrebati mala CSS izmjena.
Struktura child theme direktorija
Prije nego krenemo s kreiranjem, razumijmo osnovnu strukturu:
wp-content/themes/
├── parent-theme/ (roditeljska tema)
│ ├── style.css
│ ├── functions.php
│ ├── header.php
│ └── ...
└── parent-theme-child/ (vaš child theme)
├── style.css (obavezno)
├── functions.php (preporučeno)
├── screenshot.png (opciono)
└── template files (po potrebi)
Minimalni zahtjevi:
- Direktorij s jedinstvenim nazivom
style.csss posebnim header komentarom
Preporučena struktura:
style.css– glavni CSS filefunctions.php– custom funkcionalnostscreenshot.png– slika koja se prikazuje u admin panelu (880x660px)
Kako kreirati child theme: 3 metode
Metoda 1: Manualno kreiranje (preporučeno za učenje)
Ova metoda vam daje potpunu kontrolu i razumijevanje kako child theme funkcionira.
Korak 1: Kreiranje direktorija
Spojite se na vaš web server putem FTP-a (FileZilla, Cyberduck) ili koristite File Manager u cPanelu.
Navigirajte do:
/wp-content/themes/
Kreirajte novi folder. Ime treba biti:
- U lowercase slovima
- Bez razmaka (koristite crtice)
- Opisno i jedinstveno
Primjeri dobrih naziva:
blocksy-childastra-childtwentytwentyfour-childgeneratepress-moj-projekt
Izbjegavajte:
child(prejednostavno)My Theme Child(razmaci, velika slova)- Naziv koji već postoji
Korak 2: Kreiranje style.css
U novom direktoriju kreirajte datoteku style.css s ovim sadržajem:
/*
Theme Name: Blocksy Child
Theme URI: https://masterymesh.com
Description: Child tema za Blocksy
Author: MasteryMesh
Author URI: https://masterymesh.com
Template: blocksy
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: blocksy-child
*/
/* ============================================
Ovdje dodajte vaše custom CSS stilove
============================================ */
/* Primjer: Promjena boje naslova */
h1 {
color: #2c3e50;
}
Ključni parametri objašnjeni:
- Theme Name – Ime koje će se prikazivati u WordPress admin panelu
- Template – Naziv direktorija parent theme-a (MORA biti točan!)
- Description – Kratak opis teme
- Version – Verzija za praćenje izmjena
- Text Domain – Za prijevode (trebate samo ako planirate prevođenje)
KRITIČNO: Template: vrijednost MORA točno odgovarati nazivu direktorija parent theme-a. Ako se ne poklapa, child theme neće raditi.
Korak 3: Kreiranje functions.php
Kreirajte functions.php u istom direktoriju:
<strong><?php</strong>
/**
* Blocksy Child Theme Functions
*
* @package Blocksy Child
*/
// Izlazak ako je direktno pristupljeno
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Učitavanje parent i child theme stilova
*/
function blocksy_child_enqueue_styles() {
// Parent theme CSS
wp_enqueue_style(
'blocksy-parent-style',
get_template_directory_uri() . '/style.css',
array(),
wp_get_theme()->parent()->get('Version')
);
// Child theme CSS
wp_enqueue_style(
'blocksy-child-style',
get_stylesheet_directory_uri() . '/style.css',
array( 'blocksy-parent-style' ),
wp_get_theme()->get('Version')
);
}
add_action( 'wp_enqueue_scripts', 'blocksy_child_enqueue_styles' );
/**
* Ovdje dodajte svoje custom funkcije
*/
// Primjer: Custom funkcija za dodavanje copyright godine
function get_copyright_year() {
return date('Y');
}
Važna napomena o functions.php:
Za razliku od većine template datoteka, functions.php iz child theme-a se ne zamjenjuje već se dodaje uz parent theme functions.php. Oba se izvršavaju (prvo child, zatim parent).
Korak 4: Dodavanje screenshot slike (opciono)
Za profesionalan izgled u admin panelu, dodajte screenshot.png:
- Dimenzije: 880×660 piksela (preporučeno) ili 1200x900px
- Format: PNG ili JPG
- Sadržaj: Logo, primjer dizajna, ili jednostavno ime teme
Možete kreirati u Canvi, Photoshopu, ili bilo kojem grafičkom alatu.
Korak 5: Aktivacija child theme-a
- Idite u WordPress Admin → Izgled → Teme
- Pronaći ćete svoju novu child temu
- Kliknite Activate ili Aktiviraj
VAŽNO: Nikada nemojte aktivirati parent i child theme istovremeno. Uvijek aktivirajte samo child theme.
Metoda 2: Korištenje plugina (najbrže za početnike)
Ako vam manualno kreiranje zvuči zastrašujuće, možete koristiti plugin.
Preporučeni plugin: Child Theme Configurator
Instalacija:
- WordPress Admin → Dodaci → Dodaj novi
- Pretražite “Child Theme Configurator“
- Instalirajte i aktivirajte
Korištenje:
- Idite na Alati → Child Themes
- Odaberite CREATE a new Child Theme
- Parent Theme: Odaberite svoju trenutnu temu
- Analysis: Kliknite “Analyze” i pričekajte
- Configure Child Theme:
- Unesite Child Theme Name
- Opcionalno: Author, Description
- Copy Menus, Widgets and Customizer Settings: Označite ako želite zadržati postavke
- Create New Child Theme
Plugin automatski:
- Kreira direktorij
- Generira
style.cssifunctions.php - Postavlja ispravne parametre
- Nudi opciju za kopiranje postavki
Prednosti: ✅ Brzo i jednostavno
✅ Automatska konfiguracija
✅ Grafičko sučelje
✅ Podrška za custom templateove
Nedostaci: ❌ Manja kontrola nad procesom
❌ Dodatni plugin koji možete kasnije deaktivirati
Metoda 3: WP-CLI (za napredne korisnike)
Ako imate pristup command line-u na serveru:
# Navigirajte do themes direktorija
cd /path/to/wp-content/themes/
# Kreirajte child theme direktorij
mkdir blocksy-child
cd blocksy-child
# Kreirajte style.css
cat > style.css << 'EOF'
/*
Theme Name: Blocksy Child
Template: blocksy
Version: 1.0.0
*/
EOF
# Kreirajte functions.php
cat > functions.php << 'EOF'
<?php
function blocksy_child_enqueue_styles() {
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', 'blocksy_child_enqueue_styles');
EOF
# Aktivirajte child theme
wp theme activate blocksy-child
Prilagodba child theme-a: Praktični primjeri
Sada kada imate child theme, što možete s njim raditi?
1. Dodavanje custom CSS-a
Najčešća upotreba child theme-a je dodavanje vlastitih stilova.
U style.css dodajte:
/* Promjena font familije */
body {
font-family: 'Roboto', sans-serif;
}
/* Stiliziranje gumbâ */
.button, .btn {
background-color: #3498db;
color: #ffffff;
padding: 12px 24px;
border-radius: 5px;
transition: all 0.3s ease;
}
.button:hover, .btn:hover {
background-color: #2980b9;
transform: translateY(-2px);
}
/* Responzivni header */
@media (max-width: 768px) {
.site-header {
padding: 10px 15px;
}
}
/* Custom footer stilovi */
.site-footer {
background-color: #2c3e50;
color: #ecf0f1;
padding: 40px 0;
}
Savjet: Koristite browser Developer Tools (F12) da identifikujete CSS klase koje želite mijenjati.
2. Dodavanje custom funkcija
U functions.php možete dodati razne funkcionalnosti.
Primjer 1: Dodavanje custom veličine slike
// Registracija custom image size
function custom_image_sizes() {
add_image_size( 'portfolio-thumb', 400, 300, true );
add_image_size( 'hero-image', 1920, 800, true );
}
add_action( 'after_setup_theme', 'custom_image_sizes' );
Primjer 2: Uklanjanje WordPress verzije iz head-a (sigurnost)
// Ukloni WordPress verziju
remove_action('wp_head', 'wp_generator');
Primjer 3: Custom excerpt length
// Promijeni duljinu excerpt-a
function custom_excerpt_length( $length ) {
return 30; // broj riječi
}
add_filter( 'excerpt_length', 'custom_excerpt_length' );
Primjer 4: Dodavanje custom widget područja
// Registracija sidebar-a
function custom_widget_areas() {
register_sidebar( array(
'name' => 'Custom Sidebar',
'id' => 'custom-sidebar',
'description' => 'Custom widget area',
'before_widget' => '<div class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );
}
add_action( 'widgets_init', 'custom_widget_areas' );
3. Prilagodba template datoteka
Ako trebate izmijeniti strukturu stranice, kopirajte template iz parent theme-a.
Postupak:
- Identificirajte template koji želite promijeniti (npr.
header.php,footer.php,single.php) - Kopirajte ga iz parent theme direktorija
- Zalijepite u child theme direktorij
- Izmijenite kopiju
Primjer: Prilagodba footer.php
<strong><?php</strong>
/**
* Custom Footer Template
*/
<strong>?></strong>
<footer class="site-footer">
<div class="container">
<div class="footer-content">
<div class="footer-column">
<h4>O nama</h4>
<p>Kratki opis vašeg biznisa.</p>
</div>
<div class="footer-column">
<h4>Kontakt</h4>
<p>Email: [email protected]</p>
<p>Tel: +385 1 234 5678</p>
</div>
<div class="footer-column">
<strong><?php</strong>
wp_nav_menu( array(
'theme_location' => 'footer-menu',
'menu_class' => 'footer-menu',
) );
<strong>?></strong>
</div>
</div>
<div class="footer-bottom">
<p>© <strong><?php</strong> echo date('Y'); <strong>?></strong> <strong><?php</strong> bloginfo('name'); <strong>?></strong>. Sva prava pridržana.</p>
</div>
</div>
</footer>
<strong><?php</strong> wp_footer(); <strong>?></strong>
</body>
</html>
VAŽNO: Ne kopirajte template datoteke “za svaki slučaj”. Kopirajte samo one koje aktivno mijenjate, jer:
- Smanjuje mogućnost grešaka
- Olakšava održavanje
- Parent theme može dodati nove značajke u template-e
4. Dodavanje custom post type-a
// Registracija Portfolio CPT
function create_portfolio_post_type() {
register_post_type( 'portfolio',
array(
'labels' => array(
'name' => 'Portfolio',
'singular_name' => 'Portfolio Item'
),
'public' => true,
'has_archive' => true,
'supports' => array( 'title', 'editor', 'thumbnail' ),
'menu_icon' => 'dashicons-portfolio',
)
);
}
add_action( 'init', 'create_portfolio_post_type' );
Česte greške i kako ih izbjeći
Greška 1: Krivi Template parametar
Problem:
css
Template: Blocksy /* Krivo - velika slova */
Rješenje:
css
Template: blocksy /* Točno - naziv direktorija */
Provjerite točan naziv direktorija u /wp-content/themes/.
Greška 2: functions.php bez otvarajuće PHP oznake
Problem:
php
function my_function() { // Krivo - fali <strong><?php</strong>
// kod
}
Rješenje:
php
<strong><?php</strong> // Obavezno na početku
function my_function() {
// kod
}
Greška 3: Zatvarajuća PHP oznaka na kraju
Problem:
php
<strong><?php</strong>
function my_function() {
// kod
}
<strong>?></strong> // Loša praksa
Rješenje:
php
<strong><?php</strong>
function my_function() {
// kod
}
// Bez zatvarajuće oznake na kraju
WordPress najbolje prakse kažu da ne trebate ?> na kraju functions.php.
Greška 4: Duplicirane funkcije
Problem:
php
// Parent theme već ima ovu funkciju
function custom_logo() {
// Fatal error: Cannot redeclare function
}
Rješenje:
php
// Provjerite postoji li funkcija
if ( ! function_exists( 'custom_logo' ) ) {
function custom_logo() {
// vaš kod
}
}
Greška 5: Neispravno učitavanje stilova
Stari (zastarjeli) način:
php
// NE koristite @import
@import url("../parent-theme/style.css");
Ispravno:
php
// Koristite wp_enqueue_style
wp_enqueue_style('parent-style', get_template_directory_uri() . '/style.css');
Debugging child theme problema
Ako child theme ne radi kako treba:
1. Provjerite aktivaciju
- Admin → Izgled → Teme
- Je li child theme aktiviran (ne parent)?
2. Provjerite Template parametar
css
Template: blocksy /* Mora biti točan naziv direktorija */
3. Omogućite WP_DEBUG
U wp-config.php dodajte:
php
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
Greške će se zapisivati u /wp-content/debug.log.
4. Provjerite file permissions
bash
# Ispravne permisije
find /path/to/child-theme -type d -exec chmod 755 {} \;
find /path/to/child-theme -type f -exec chmod 644 {} \;
5. Onemogućite druge pluginove
Konflikt s pluginovima može uzrokovati probleme. Privremeno deaktivirajte sve pluginove i testirajte.
6. Provjerite PHP greške
Koristite browser konzolu (F12) i provjerite postoje li JavaScript greške koje mogu ukazivati na PHP probleme.
Napredne tehnike
Učitavanje dodatnih CSS datoteka
php
function enqueue_custom_styles() {
// Custom fonts
wp_enqueue_style( 'google-fonts', 'https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap', array(), null );
// Custom CSS file
wp_enqueue_style( 'custom-styles', get_stylesheet_directory_uri() . '/css/custom.css', array(), '1.0.0' );
}
add_action( 'wp_enqueue_scripts', 'enqueue_custom_styles' );
Učitavanje JavaScript datoteka
php
function enqueue_custom_scripts() {
wp_enqueue_script( 'custom-js', get_stylesheet_directory_uri() . '/js/custom.js', array('jquery'), '1.0.0', true );
}
add_action( 'wp_enqueue_scripts', 'enqueue_custom_scripts' );
Uvjetno učitavanje resursa
php
function conditional_scripts() {
// Učitaj samo na home page
if ( is_front_page() ) {
wp_enqueue_style( 'homepage-style', get_stylesheet_directory_uri() . '/css/homepage.css' );
}
// Učitaj samo na single post
if ( is_single() ) {
wp_enqueue_script( 'single-post-js', get_stylesheet_directory_uri() . '/js/single-post.js', array(), '1.0', true );
}
}
add_action( 'wp_enqueue_scripts', 'conditional_scripts' );
Override parent theme funkcija
php
// Parent theme ima ovu funkciju
function parent_theme_function() {
return 'Parent value';
}
// U child theme-u možete override-ati ako parent koristi function_exists
if ( ! function_exists( 'parent_theme_function' ) ) {
function parent_theme_function() {
return 'Child value';
}
}
Best practices za child theme development
1. Organizacija datoteka
child-theme/
├── style.css
├── functions.php
├── screenshot.png
├── css/
│ ├── custom.css
│ └── responsive.css
├── js/
│ ├── custom.js
│ └── navigation.js
├── images/
│ └── logo.png
└── templates/
├── header.php
└── footer.php
2. Komentiranje koda
php
/**
* Custom funkcija za dodavanje schema markup-a
*
* @param string $type Schema tip
* @return void
*/
function add_schema_markup( $type = 'Organization' ) {
// Implementacija
}
3. Verzioniranje
Koristite Git za praćenje izmjena:
bash
cd /path/to/child-theme
git init
git add .
git commit -m "Initial child theme setup"
4. Prefix za funkcije
php
// Koristite prefix da izbjegnete konflikte
function mm_custom_function() { // mm = MasteryMesh prefix
// kod
}
5. Dokumentacija
Kreirajte README.md u child theme direktoriju:
markdown
# Blocksy Child Theme
## Izmjene
- Custom header layout
- Modified footer widgets
- Additional CSS for mobile responsiveness
## Custom funkcije
- `mm_custom_breadcrumbs()` - Custom breadcrumb navigation
- `mm_related_posts()` - Related posts section
## Verzije
- 1.0.0 - Initial release
- 1.1.0 - Added custom post types
Child theme za popularne teme
Astra Theme
css
/*
Theme Name: Astra Child
Template: astra
Version: 1.0.0
*/
GeneratePress
css
/*
Theme Name: GeneratePress Child
Template: generatepress
Version: 1.0.0
*/
OceanWP
css
/*
Theme Name: OceanWP Child
Template: oceanwp
Version: 1.0.0
*/
Kadence
css
/*
Theme Name: Kadence Child
Template: kadence
Version: 1.0.0
*/
Savjet: Uvijek provjerite dokumentaciju teme jer neke premium teme imaju specifične zahtjeve za child theme-ove.
Migracija s parent na child theme
Ako već imate aktivnu stranicu s modificiranom parent temom:
Korak 1: Backup
Napravite kompletnu sigurnosnu kopiju:
- Baza podataka
- Svi datoteke
- Posebno
/wp-content/themes/parent-theme/
Korak 2: Kreirajte child theme
Slijedite bilo koju od gore navedenih metoda.
Korak 3: Kopirajte prilagodbe
- CSS izmjene: Kopirajte iz parent
style.cssu childstyle.css - PHP izmjene: Kopirajte modificirane template-e u child direktorij
- functions.php: Pažljivo kopirajte samo custom funkcije
Korak 4: Testirajte na staging okruženju
NE aktivirajte direktno na produkciji! Testirajte prvo:
- Kreirajte staging kopiju stranice
- Aktivirajte child theme
- Provjerite sve stranice
- Testirajte funkcionalnost
Korak 5: Aktivacija na produkciji
Kada je sve testirano:
- Aktivirajte child theme
- Odmah provjerite homepage
- Pregledajte key stranice
- Provjerite admin funkcionalnost
Troubleshooting checklist
☐ Je li Template: parametar točan?
☐ Postoji li parent tema u /themes/?
☐ Je li child theme aktiviran?
☐ Je li functions.php ispravno formatiran?
☐ Ima li PHP grešaka? (provjeri debug.log)
☐ Jesu li file permissions ispravne?
☐ Konflikti s pluginovima?
☐ Cache clearing (browser + server + plugin)
☐ Je li .css učitan? (provjeri Page Source)
☐ Postoji li CSS specifičnost problem?
Zaključak
Child theme je jednostavan ali moćan alat koji štiti vaš rad i omogućava profesionalan WordPress development workflow. Bez obzira jeste li početnik koji želi promijeniti boju gumba ili developer koji gradi kompleksnu web aplikaciju, child theme je best practice koja se isplati.
Ključne prednosti:
- ✅ Zaštita prilagodbi pri ažuriranjima
- ✅ Čist i organiziran kod
- ✅ Mogućnost eksperimentiranja bez straha
- ✅ Profesionalan development workflow
- ✅ Verzioniranje i timski rad
Vaši sljedeći koraci:
- Kreirajte svoj prvi child theme koristeći gornje upute
- Dodajte minimalne CSS izmjene za testiranje
- Dokumentirajte sve prilagodbe
- Postavite Git verzioniranje
- Educirajte se dalje o WordPress templating sistemu
Child theme nije luksuz – to je nužnost za svakoga tko ozbiljno radi s WordPressom. Investirajte 15 minuta u kreiranje child theme-a danas, i uštedjeti ćete sate frustracije u budućnosti.
Trebate pomoć s WordPress developmentom? MasteryMesh nudi usluge kreiranja custom child theme-ova, migracije postojećih stranica, i WordPress optimizacije. Kontaktirajte nas za besplatnu konzultaciju o vašem projektu.