Banyak tutorial WordPress berakhir dengan kalimat yang sama: tempelkan potongan kode berikut ke berkas functions.php tema Anda. Kodenya berjalan, fiturnya muncul, dan pekerjaan dianggap selesai. Beberapa pekan kemudian tema menerima pembaruan, tombol Update ditekan, lalu potongan kode itu lenyap bersama seluruh penyesuaian lain yang pernah ditulis di sana.
Kehilangan seperti ini menyangkut sangat banyak orang. Menurut pengukuran W3Techs pada 27 Agustus 2026, WordPress menopang 40,7 persen dari seluruh website di internet dan 58,9 persen dari website yang platform-nya diketahui. Sebagian besar pemiliknya cepat atau lambat ingin mengubah sesuatu pada tampilan temanya.
Child theme adalah jawaban resmi WordPress untuk masalah tersebut. Konsepnya sederhana, tetapi cara kerjanya menyimpan beberapa aturan yang tidak terlihat dari luar dan justru di situlah kebanyakan orang tersandung. Karena itu pertanyaan apa itu child theme sebaiknya dijawab bersama mekanismenya sekaligus.
Child Theme Adalah Tema yang Mewarisi Tema Lain
Child theme adalah sebuah tema WordPress yang tidak berdiri sendiri, melainkan mewarisi seluruh tampilan dan fungsi dari tema lain yang disebut parent theme (tema induk). Anda mengaktifkan child theme, tetapi yang tampil di layar pengunjung tetap desain parent theme — sampai Anda menimpanya, sebagian demi sebagian, dari dalam folder child theme.
Hubungan induk dan turunan ini dinyatakan lewat satu baris di berkas style.css milik child theme:
Template: twentytwentyfiveNilai di belakang Template: harus persis sama dengan nama folder parent theme di dalam wp-content/themes/, bukan nama tampilannya. Twenty Twenty-Five yang terbaca di dashboard tersimpan sebagai folder twentytwentyfive, dan huruf besar-kecilnya ikut dihitung.
Setelah relasi itu terbaca, WordPress bekerja dengan aturan sederhana. Untuk setiap berkas template yang dibutuhkan, WordPress memeriksa folder child theme lebih dulu. Bila berkas dengan nama tersebut ditemukan di sana, berkas itulah yang dipakai. Bila tidak ada, WordPress mengambil versi milik parent theme. Perilaku jatuh ke induk inilah yang membuat child theme cukup berisi berkas yang benar-benar Anda ubah.
Urutan pencarian berkas: style.css dan single.php diambil dari child, header.php dan footer.php jatuh ke parent.
Bila deklarasi tadi salah, WordPress menolak temanya dan menampilkan salah satu dari tiga pesan berikut:
Stylesheet is missing.— berkasstyle.csstidak ditemukan di folder tema.The parent theme is missing. Please install the "..." parent theme.— nama folder di barisTemplate:tidak cocok dengan tema mana pun yang terpasang.The "..." theme is not a valid parent theme.— sebuah tema menyebut dirinya sendiri sebagai induk.
Ketiganya muncul di halaman Appearance → Themes dengan tema Anda ditandai rusak.
Fungsi Child Theme dan Apa yang Sebenarnya Diselamatkan
Fungsi child theme sering diringkas menjadi "supaya tidak hilang saat update". Ringkasan itu benar, namun terlalu pendek untuk dipakai mengambil keputusan. Berikut empat manfaat child theme yang sesungguhnya Anda dapatkan.
- Perubahan Anda bertahan melewati pembaruan parent theme: pembaruan tema menimpa seluruh isi folder parent, sedangkan folder child theme tidak disentuh sama sekali.
- Kode Anda terpisah dari kode orang lain: enam bulan kemudian, saat sebuah tampilan terasa aneh, Anda cukup membaca isi folder child theme yang mungkin hanya berisi tiga berkas. Tanpa pemisahan itu, penyesuaian Anda tercampur di antara ribuan baris milik pembuat tema.
- Ada jalan mundur yang bersih: bila satu penyesuaian merusak tampilan, aktifkan kembali parent theme dan situs langsung pulih ke kondisi aslinya.
- Satu parent theme dapat melayani beberapa situs: agensi yang memakai tema sama untuk banyak klien cukup membuat child theme berbeda di tiap situs. Parent theme lalu dapat diperbarui serentak tanpa rasa waswas.
Ada juga hal yang tidak diselamatkan child theme. Setelan yang tersimpan di database — pilihan warna dari Customizer, susunan widget, penempatan menu, serta konten yang dibuat page builder — tidak ikut berpindah saat Anda beralih dari parent ke child theme. Yang diwariskan adalah berkas, bukan isi database.
Isi Sebuah Child Theme: Satu Berkas Wajib, Sisanya Opsional
Child theme sering dibayangkan sebagai salinan tema yang rumit. Kenyataannya jauh lebih ringan. Menurut WordPress Theme Handbook, style.css adalah satu-satunya berkas yang mutlak diperlukan agar sebuah child theme dikenali. Di dalam berkas itu pun hanya dua baris yang benar-benar dibutuhkan: Theme Name supaya WordPress mengenali temanya, dan Template supaya WordPress tahu siapa induknya.
Berkas lain bersifat opsional, dan masing-masing punya perilaku yang berbeda:
| Berkas | Peran |
|---|---|
style.css | Wajib. Memuat header tema. Aturan CSS di sini ditambahkan, bukan mengganti milik parent |
functions.php | Opsional. Menambah, tidak menimpa — child dimuat lebih dulu |
header.php, single.php, dll. | Opsional. Menimpa penuh, dicocokkan dari nama berkas |
screenshot.png | Opsional. Pratinjau di dashboard, disarankan 1200x900 |
theme.json | Opsional. Untuk parent berbasis blok, dibahas di bawah |
Baris functions.php layak dibaca dua kali, karena inilah sumber kesalahpahaman paling mahal. Berbeda dari berkas template, functions.php milik child theme tidak menggantikan milik parent. Keduanya dimuat, dan urutannya berlawanan dengan dugaan kebanyakan orang: WordPress memuat functions.php child theme lebih dulu, baru menyusul milik parent.
Dua perilaku child theme: berkas template menimpa versi parent, functions.php dimuat keduanya, child lebih dulu.
Konsekuensinya nyata. Bila Anda menyalin sebuah fungsi PHP dari parent theme ke child theme lalu mengubah isinya, PHP akan menemukan dua fungsi bernama sama dan situs mati dengan fatal error. Cara yang benar adalah bekerja lewat hook (titik sisip yang disediakan WordPress) — melepas aksi bawaan parent dengan remove_action(), lalu memasang versi Anda sendiri.
Tema yang ditulis dengan baik membungkus fungsinya dalam pemeriksaan
function_exists(). Karena child theme dimuat lebih dulu, pemeriksaan itu akan menemukan versi Anda sudah ada dan parent theme melewatkan versinya sendiri. Bila parent theme tidak memakai pola ini, hook adalah satu-satunya jalan yang aman.
Cara Membuat Child Theme WordPress secara Manual
Cara membuat child theme WordPress secara manual hanya membutuhkan empat langkah dan dua berkas teks.
Langkah #1: Siapkan folder dan cadangkan situs
Buat cadangan lebih dulu. Anda akan menyunting berkas di server, dan backup yang berumur beberapa menit jauh lebih berharga daripada penyesalan setelahnya.
Setelah itu buat folder baru di dalam wp-content/themes/. Konvensi penamaannya adalah nama parent theme ditambah akhiran -child, misalnya twentytwentyfive-child. Folder ini dapat dibuat lewat File Manager di cPanel maupun lewat klien FTP. Pada layanan web hosting berbasis cPanel, File Manager biasanya jalan tercepat karena Anda dapat langsung menyunting berkas di jendela yang sama.
Struktur folder child theme: dibuat sejajar parent di wp-content/themes, berisi style.css wajib dan functions.php opsional.
Langkah #2: Tulis style.css
Buat berkas style.css di dalam folder tersebut, lalu isi dengan blok komentar berikut di baris paling atas:
/*
Theme Name: Twenty Twenty-Five Child
Template: twentytwentyfive
Version: 1.0.0
Description: Child theme situs saya.
Author: Nama Anda
*/Dari lima baris itu, hanya Theme Name dan Template yang menentukan berhasil tidaknya. Periksa sekali lagi bahwa nilai Template sama persis dengan nama folder parent theme Anda. Aturan CSS milik Anda ditulis di bawah blok komentar tersebut.
Langkah #3: Muat stylesheet parent lewat functions.php
Pada tema klasik, style.css parent tidak otomatis ikut termuat saat child theme aktif. Anda perlu memanggilnya sendiri. Buat berkas functions.php di folder child theme, lalu isi dengan:
<?php
add_action(
'wp_enqueue_scripts',
'muat_style_child'
);
function muat_style_child() {
wp_enqueue_style(
'parent-style',
get_template_directory_uri()
. '/style.css'
);
wp_enqueue_style(
'child-style',
get_stylesheet_uri(),
array( 'parent-style' )
);
}Perhatikan parameter ketiga pada pemanggilan kedua. Larik array( 'parent-style' ) menyatakan stylesheet child bergantung pada stylesheet parent. WordPress karena itu dijamin memuat parent lebih dulu, dan urutan inilah yang membuat aturan CSS Anda menang.
Anda mungkin menemukan tutorial lama yang menyarankan @import di dalam style.css. Cara itu sudah ditinggalkan karena merantai dua permintaan CSS secara berurutan: browser baru mulai mengunduh stylesheet parent setelah selesai membaca stylesheet child. Selain melambatkan halaman, @import juga tidak terbaca oleh plugin yang menggabungkan berkas CSS.
Langkah #4: Aktifkan dan pastikan CSS-nya termuat
Masuk ke Appearance → Themes di dashboard, temukan child theme Anda, lalu aktifkan seperti mengganti tema WordPress pada umumnya.
Sesudah aktif, pastikan stylesheet-nya benar-benar terpasang. Buka halaman depan situs, tampilkan kode sumber halaman lewat klik kanan, lalu cari alamat berkas style.css. Bila alamat yang muncul memuat nama folder child theme Anda, pemasangannya sudah benar.
Tampilan situs mungkin berubah sesaat setelah child theme diaktifkan. Ini normal: setelan Customizer, widget, dan menu tersimpan per tema di database, sehingga perlu disusun ulang satu kali di child theme.
Membuat Child Theme lewat Plugin Generator
Bila menyunting berkas di server terasa berisiko, sejumlah plugin dapat membuatkan kedua berkas tadi dari dashboard. Tiga yang paling banyak dipakai, dengan angka per 27 Agustus 2026:
| Plugin | Instalasi | Diuji sampai |
|---|---|---|
| Child Theme Configurator | 300.000+ | WP 6.8.8 |
| WP Child Theme Generator | 20.000+ | WP 6.8.8 |
| Generate Child Theme | 9.000+ | WP 7.0.4 |
Plugin dengan pemakai terbanyak justru yang paling tertinggal. WordPress sudah berada di versi 7.1 sejak 19 Agustus 2026, sedangkan Child Theme Configurator terakhir diperbarui pada 10 Juni 2025 dan berhenti diuji di 6.8.8. Halaman resminya pun memasang peringatan bahwa plugin tersebut belum diuji pada tiga rilis besar terakhir. Sebagai pembanding, Generate Child Theme yang jauh lebih sepi pemakai diperbarui 27 Mei 2026. Saat memilih plugin untuk menyentuh berkas tema, kolom "Diuji sampai" lebih menentukan daripada jumlah instalasi.
Satu kebiasaan yang layak diikuti: setelah berkas child theme terbentuk, nonaktifkan pluginnya. Child theme berjalan sepenuhnya dari kedua berkas tadi dan tidak membutuhkan plugin apa pun untuk tetap hidup.
Child Theme di Era Block Theme: theme.json Mengambil Alih
Aturan di atas berlaku untuk tema klasik. Sejak WordPress memperkenalkan block theme (tema berbasis blok yang seluruh bagian halamannya disusun dari blok), sebagian aturannya berubah. Per 27 Agustus 2026, direktori tema WordPress.org memuat 8.593 tema dan 1.792 di antaranya bertanda block theme — sekitar 20,9 persen. Angkanya belum mayoritas, tetapi daftar tema terpopuler dipimpin Twenty Twenty-Five dan Twenty Twenty-Four yang keduanya block theme dan masing-masing terpasang di lebih dari satu juta situs.
Pada block theme, pengaturan tampilan pindah dari style.css ke theme.json, sebuah berkas konfigurasi berisi warna, tipografi, dan jarak. Skema yang berlaku sekarang adalah versi 3 yang bekerja pada WordPress 6.6 ke atas. Karena styling ditangani theme.json, langkah memuat stylesheet parent pada Langkah #3 tadi umumnya tidak diperlukan. Sebaliknya, bila Anda tetap ingin menulis CSS di style.css child theme berbasis blok, berkas itu harus Anda muat sendiri karena tidak ada yang memuatnya secara otomatis.
Child theme berbasis blok cukup berisi style.css dan theme.json sependek ini:
{
"version": 3,
"settings": {
"color": {
"palette": [
{
"slug": "utama",
"color": "#0f5132",
"name": "Hijau Utama"
}
]
}
}
}Dua aturan penggabungan berlaku di sini dan keduanya berlawanan arah. Aturan pertama melegakan: nilai theme.json child digabung dengan milik parent dan nilai child yang menang, sehingga Anda cukup menulis bagian yang ingin diubah. Aturan kedua menjebak: larik diganti utuh, bukan ditambahkan. Bila parent theme mendefinisikan enam warna dan child theme menulis larik palette berisi satu warna seperti contoh di atas, kelima warna parent lainnya hilang dari editor. Untuk menambah satu warna ke palet parent, keenam warna aslinya harus disalin ulang ke dalam larik child.
Penggabungan theme.json child: nilai tunggal digabung dan child menang, sedangkan larik warna parent diganti utuh.
Saat CSS Child Theme Tidak Menimpa Parent Theme
Keluhan yang paling sering muncul setelah child theme aktif adalah aturan CSS-nya seolah diabaikan. Penyebabnya hampir selalu ada di antara lima hal berikut, diurutkan dari yang paling sering. Empat yang pertama dapat Anda periksa berurutan seperti ini:
Empat langkah saat CSS child theme tidak menimpa: bersihkan cache, cek urutan muat, naikkan spesifisitas, cek Template.
Pertama, cache. Berkas CSS lama masih disajikan meski isinya sudah Anda ubah. Bersihkan cache browser sekaligus cache situs. Bila Anda memakai LiteSpeed Cache atau plugin sejenis, kosongkan juga cache-nya dari dashboard sebelum menyimpulkan kodenya salah.
Kedua, urutan pemuatan. Stylesheet parent dimuat setelah stylesheet child, sehingga aturan parent yang berlaku terakhir dan memenangkan cascade. Ini terjadi saat parameter dependensi pada Langkah #3 dilewatkan. Periksa di kode sumber halaman: tag <link> milik child theme harus berada di bawah milik parent.
Ketiga, spesifisitas selector. Urutannya sudah benar, tetapi selector parent lebih spesifik. Selector .site-header .menu a mengalahkan a sekalipun ditulis belakangan. Perpanjang selector Anda agar setara atau lebih spesifik, dan hindari !important sebagai jalan pintas karena masalah yang sama akan berulang di aturan berikutnya.
Keempat, temanya memang tidak aktif. Nama folder di baris Template: tidak cocok sehingga WordPress menolaknya. Buka Appearance → Themes dan pastikan child theme berlabel aktif, bukan sekadar terpasang.
Kelima, jalur berkas yang salah. Ini terjadi saat dua fungsi WordPress yang mirip tertukar. Keduanya sering dianggap sinonim padahal menunjuk folder berbeda:
get_stylesheet_directory_uri()— URL folder child theme, saat child aktif.get_template_directory_uri()— URL folder parent theme, selalu.get_stylesheet_uri()— URL berkasstyle.cssmilik tema aktif, yaitu child.get_stylesheet_directory()— jalur berkas di server, bukan alamat web.
Aturan praktisnya: gunakan get_stylesheet_* untuk berkas milik Anda sendiri, dan get_template_* untuk berkas milik parent. Memakai get_template_directory_uri() pada gambar yang Anda taruh di child theme akan menghasilkan alamat yang tidak ada.
Kapan Child Theme Tidak Anda Butuhkan
Child theme adalah alat, bukan kewajiban. Ada empat kondisi ketika membuatnya justru menambah pekerjaan tanpa memberi manfaat setimpal.
Perubahan Anda hanya beberapa baris CSS. Panel Additional CSS di Customizer, atau bagian Styles pada editor situs untuk block theme, menyimpan aturan CSS di database dan aman dari pembaruan tema. Untuk mengubah warna tombol dan ukuran huruf judul, panel itu sudah menyelesaikan persoalan.
Tema Anda sudah menyediakan panelnya sendiri. Tema populer seperti Astra, Kadence, dan Blocksy memberi pengaturan warna, tipografi, serta tata letak lewat antarmuka. Menulis CSS untuk hal yang sudah ada tombolnya berarti membuat dua sumber kebenaran yang saling bertabrakan.
Situs Anda dibangun dengan page builder. Desain yang dibuat Elementor, Divi, atau sejenisnya tersimpan di database, bukan di berkas tema. Pembaruan tema tidak menyentuhnya. Child theme baru diperlukan bila Anda menambahkan kode PHP di luar page builder.
Parent theme-nya buatan sendiri. Bila tema induk adalah tema yang Anda tulis dan tidak pernah menerima pembaruan dari pihak lain, sunting saja langsung. Tidak ada pembaruan yang akan menimpanya.
Ada pula biaya yang perlu Anda perhitungkan. Setiap berkas template yang disalin ke child theme berhenti menerima perbaikan dari parent theme. Bila pembuat tema memperbaiki celah keamanan atau menyesuaikan single.php dengan versi WordPress baru, salinan Anda tetap memakai kode lama. Child theme yang berisi dua berkas hampir tanpa beban pemeliharaan; child theme yang menyalin lima belas berkas template perlahan menjadi tema terpisah yang harus Anda rawat sendiri.
Konsep Turunan Tema di Luar WordPress
Pewarisan tema bukan gagasan khas WordPress. Platform lain memakai mekanisme yang sama: memeriksa berkas di tema turunan lebih dulu, lalu jatuh ke tema induk. Yang berbeda hanya berkas tempat relasi itu dinyatakan.
| Platform | Induk dideklarasikan di |
|---|---|
| WordPress | style.css → Template: folder-parent |
| Magento 2 | theme.xml → <parent>Vendor/tema</parent> |
| PrestaShop | config/theme.yml → parent: nama-parent |
| Drupal | NAMA.info.yml → base theme: mesin_parent |
| Moodle | config.php → $THEME->parents = ['boost'] |
Bila Anda pernah membuat child theme di WordPress, memindahkan kebiasaan itu ke platform lain hanya membutuhkan satu hal: menemukan berkas yang menyimpan deklarasi induknya.
Pertanyaan yang Sering Muncul
Child theme di WordPress digunakan untuk apa?
Kegunaan child theme adalah menampung seluruh penyesuaian tampilan dan fungsi sebuah situs WordPress di folder terpisah, sehingga penyesuaian itu tidak terhapus ketika tema induknya diperbarui. Penyesuaian yang dimaksud mencakup aturan CSS, kode PHP tambahan di functions.php, serta berkas template yang diubah susunannya. Tanpa child theme, semua perubahan tersebut harus ditulis langsung di berkas tema induk dan akan hilang pada pembaruan berikutnya.
Apa beda child theme dan parent theme?
Parent theme adalah tema lengkap yang dapat berdiri sendiri dan berisi seluruh berkas yang dibutuhkan sebuah situs. Child theme tidak lengkap dan tidak dapat berjalan sendirian; ia hanya berisi berkas yang berbeda dari induknya, lalu meminjam sisanya. Menonaktifkan parent theme membuat child theme ikut berhenti bekerja, sedangkan menonaktifkan child theme mengembalikan situs ke tampilan asli parent.
Apakah child theme perlu diperbarui?
Tidak, selama isinya adalah kode buatan Anda sendiri. Yang menerima pembaruan adalah parent theme, dan pembaruan itu justru menjadi alasan child theme dibuat. Yang perlu diperiksa sesudahnya hanya berkas template yang pernah Anda salin. Salinan itu tidak ikut berubah dan bisa saja memanggil kode yang sudah dihapus di versi baru.
Apakah child theme memperlambat website?
Beban tambahannya ada, tetapi sangat kecil. WordPress memeriksa folder child theme lebih dulu sebelum jatuh ke parent, dan pada tema klasik satu berkas CSS tambahan ikut dimuat. Selisihnya terhitung dalam satuan milidetik dan tidak akan terlihat pada pengukuran kecepatan halaman. Yang benar-benar memperlambat situs biasanya jumlah plugin, ukuran gambar, dan kualitas hosting — bukan keberadaan child theme.
Kesimpulan
Child theme adalah tema turunan yang mewarisi seluruh berkas parent theme dan hanya menimpa bagian yang Anda ubah. Berkas yang benar-benar wajib hanya satu, yaitu style.css dengan dua baris header di dalamnya, sedangkan functions.php menyusul bila Anda membutuhkan kode PHP.
Yang paling sering menjebak justru bukan langkah pembuatannya, melainkan tiga hal setelahnya. functions.php child dimuat lebih dulu dan tidak menimpa parent. Larik di theme.json diganti utuh alih-alih ditambah. Fungsi get_template_* juga menunjuk ke folder yang berbeda dari get_stylesheet_*.
Sebelum membuatnya, periksa dulu apakah Anda benar-benar membutuhkannya. Untuk beberapa baris CSS, panel Additional CSS sudah memadai. Child theme mulai masuk akal ketika Anda perlu menambahkan kode PHP atau mengubah susunan berkas template, dan tetap masuk akal selama isinya ramping. Semoga artikel ini membantu.




