Wordpress Theme Hierarchy Template Files Loop Enqueue Assets
Selesai membaca dokumentasi ini?
Kembali ke rujukan utama WordPress untuk melanjutkan topik lainnya.
Kembali ke rujukan utama WordPress untuk melanjutkan topik lainnya.
WordPress punya alur pemilihan template yang cukup deterministik, tapi sering terlihat acak kalau belum paham urutannya. Di sisi lain, The Loop dan enqueue assets adalah dua bagian yang paling sering memunculkan bug saat theme mulai membesar.
Theme hierarchy adalah aturan urutan yang dipakai WordPress untuk memilih file template yang paling spesifik untuk request tertentu.
Template files adalah file PHP di theme yang bertanggung jawab merender bagian halaman, misalnya single.php, page.php, archive.php, atau header.php.
The Loop adalah mekanisme WordPress untuk mengambil, memeriksa, dan menampilkan post yang sedang tersedia di query aktif.
Enqueue assets adalah cara resmi WordPress mendaftarkan dan memuat CSS/JS lewat hook, bukan dengan hardcode <link> atau <script> langsung di template.
Saat request masuk, WordPress membangun query lalu mencari template yang paling spesifik. Prinsipnya: semakin spesifik konteksnya, semakin spesifik file yang dicari.
Contoh sederhana:
Urutan pemilihan template ditentukan oleh hierarchy. Kalau file yang paling spesifik tidak ada, WordPress turun ke fallback berikutnya sampai menemukan template yang cocok.
index.php — fallback terakhir untuk hampir semua requesthome.php — halaman daftar post blogfront-page.php — homepage jika dipakai sebagai front pagesingle.php — single postsingle-{post-type}.php — single untuk post type tertentupage.php — halaman statispage-{slug}.php atau page-{id}.php — page yang lebih spesifikarchive.php — arsip umumcategory.php, tag.php, author.php — arsip taksonomi atau authorsearch.php — hasil pencarian404.php — halaman tidak ditemukanMisalnya request masuk ke halaman kategori:
category-{slug}.phpcategory-{id}.phpcategory.phparchive.phpindex.phpKalau file paling atas tidak ada, WordPress turun satu tingkat. Inilah inti hierarchy: spesifik dulu, umum belakangan.
Template files memecah tanggung jawab rendering menjadi bagian-bagian yang lebih jelas.
File seperti single.php, page.php, atau archive.php biasanya jadi entry point untuk satu jenis halaman.
Bagian seperti:
header.phpfooter.phpsidebar.phptemplate-parts/content.phpdipakai ulang agar markup tidak diulang di banyak file.
Jangan memasukkan semua logic ke satu file template besar. Template file sebaiknya tetap fokus pada rendering, bukan jadi tempat semua bisnis logic.
The Loop adalah pola inti WordPress untuk membaca hasil query dan menampilkan konten.
Secara umum, Loop mengecek apakah ada post, lalu memindahkan pointer ke post berikutnya, kemudian menyiapkan data post untuk ditampilkan.
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<article>
<h2><?php the_title(); ?></h2>
have_posts() memeriksa apakah masih ada item di query saat ini.the_post() memindahkan pointer ke post berikutnya dan menyiapkan global post data.the_title(), the_content(), dan template tag lain membaca data dari post aktif.Banyak template tag WordPress bergantung pada state post aktif. Kalau the_post() belum dipanggil, data seperti judul, konten, tanggal, atau featured image bisa tidak tersedia seperti yang diharapkan.
The Loop bukan sekadar syntax while. Ia berjalan di atas query yang sedang aktif.
Artinya:
single.php, Loop biasanya membaca satu postarchive.php, Loop bisa membaca banyak postWP_QueryKalau kamu ingin query sendiri, pakai WP_Query, lalu tetap gunakan Loop pada hasil query itu.
<?php
$query = new WP_Query([
'post_type' => 'post',
'posts_per_page' => 5,
]);
if ( $query->have_posts() ) :
while ( $query->have_posts() ) : $query->
wp_reset_postdata() dibutuhkanKalau kamu memakai query tambahan, global post bisa “berpindah” ke query itu. wp_reset_postdata() mengembalikan context ke query utama agar template lain tidak membaca data yang salah.
WordPress menyediakan cara resmi untuk memuat aset: wp_enqueue_style() dan wp_enqueue_script().
Jangan langsung menulis <link> atau <script> di template kalau asetnya bagian dari theme/plugin WordPress. Enqueue memberi WordPress kontrol untuk:
wp_enqueue_scripts untuk CSS/JS frontendadmin_enqueue_scripts untuk admin arealogin_enqueue_scripts untuk halaman loginfunctions.php<?php
add_action( 'wp_enqueue_scripts', function () {
wp_enqueue_style(
'theme-main',
get_stylesheet_uri(),
[],
wp_get_theme()->get( 'Version' )
);
handleNama unik aset. Dipakai WordPress untuk tracking dependency dan menghindari duplikasi.
srcURL file CSS/JS.
depsDaftar handle lain yang harus dimuat dulu.
verVersi asset untuk cache busting.
in_footerUntuk script, true berarti dimuat di footer.
get_template_directory_uri() vs get_stylesheet_directory_uri()get_template_directory_uri() mengarah ke parent theme.get_stylesheet_directory_uri() mengarah ke theme aktif, termasuk child theme.Kalau kamu menulis child theme, pilih fungsi yang sesuai dengan sumber file asset.
functions.php atau file bootstrap theme yang jelasUrutan ini membantu karena WordPress yang mengatur output final, bukan template yang memaksa semua tag aset keluar sendiri.
WordPress justru memakai banyak fallback. Kalau kamu hanya mengandalkan satu file, kamu bisa salah membaca kenapa template tertentu yang dipilih.
Kalau data post terasa salah, cek dulu apakah Loop sedang berjalan di query yang benar.
WP_QueryQuery tambahan yang tidak di-reset sering bikin template berikutnya membaca post yang keliru.
Ini bikin dependency susah diatur dan sering memicu duplikasi script atau stylesheet.
Kalau script bergantung pada library lain, daftarkan dependency-nya. Kalau tidak, urutan load bisa rusak.
Kalau asset berasal dari child theme, jangan pakai fungsi yang mengarah ke parent theme secara tidak sadar.
the_post() menyiapkan context post.wp_reset_postdata() penting setelah WP_Query tambahan.Kalau kamu memahami tiga lapis ini—hierarchy, Loop, dan enqueue—theme WordPress biasanya jauh lebih mudah dibaca, di-debug, dan di-scale.