Child Theme WordPress - motyw potomny krok po kroku
Child Theme (motyw potomny) to sposób na modyfikację motywu bez edycji jego plików. Twoje zmiany przetrwają aktualizacje motywu rodzica. Podstawa bezpiecznego customizowania WordPress.
Krótka odpowiedź
Po co Child Theme
Problem:
- Edytujesz pliki motywu
- Motyw się aktualizuje
- Twoje zmiany znikają
Rozwiązanie - Child Theme:
- Dziedziczy z motywu rodzica
- Nadpisujesz tylko to co zmieniasz
- Aktualizacje rodzica nie nadpisują child theme
Kiedy potrzebujesz:
- Modyfikacja CSS/stylów
- Dodanie własnych funkcji
- Nadpisanie szablonu (np. header.php)
- Customizacja motywu premium
Tworzenie Child Theme ręcznie
Krok 1: Folder
- Utwórz folder: wp-content/themes/astra-child/
- Nazwa: nazwa-rodzica-child (konwencja)
Krok 2: style.css
```css
/*
Theme Name: Astra Child
Template: astra
Version: 1.0
*/
/* Twoje style poniżej */
body {
background: #f5f5f5;
}
```
Krok 3: functions.php
```php
add_action('wp_enqueue_scripts', function() {
wp_enqueue_style('parent-style',
get_template_directory_uri() . '/style.css');
wp_enqueue_style('child-style',
get_stylesheet_directory_uri() . '/style.css',
['parent-style']);
});
```
Krok 4: Aktywacja
- Wygląd → Motywy
- Aktywuj child theme
Wtyczka Child Theme Configurator
Instalacja:
- Wtyczki → Child Theme Configurator
- Aktywuj
Użycie:
1. Tools → Child Themes
2. Wybierz motyw rodzica
3. Kliknij "Analyze"
4. Skonfiguruj opcje
5. "Create New Child Theme"
Opcje:
- Nazwa child theme
- Skopiowanie widgetów i menu
- Generowanie functions.php
- Skopiowanie customizer settings
Zalety wtyczki:
- Automatyzacja
- Mniejsze ryzyko błędów
- Kopiowanie ustawień
Nadpisywanie plików i szablonów
Nadpisywanie szablonu:
1. Skopiuj plik z rodzica (np. header.php)
2. Wklej do child theme
3. Edytuj kopię
4. WordPress użyje wersji z child
Hierarchia szablonów:
- Child theme ma priorytet
- Jeśli plik nie istnieje w child → rodzic
Nadpisywanie partials:
- template-parts/, partials/
- Zachowaj strukturę folderów
Funkcje:
- functions.php child ładuje się PRZED rodzicem
- Możesz nadpisać funkcje rodzica (jeśli mają if !function_exists)
Przykład nadpisania funkcji:
```php
// Rodzic:
if (!function_exists('theme_setup')) {
function theme_setup() { ... }
}
// Child - Twoja wersja theme_setup ma priorytet
function theme_setup() {
// Twoja implementacja
}
```