Memulai Pengembangan Tema WordPress: Membangun Tema Pertama Anda dari Nol hingga Satu.

Baca dalam 4 menit.
2026-03-15
2026-06-04
2,061
Saya mendapatkan komisi ketika Anda berbelanja melalui tautan di bawah ini, tanpa biaya tambahan untuk Anda.

Preparasi dan pengaturan lingkungan.

Sebelum memulai menulis kode apa pun, Anda memerlukan lingkungan pengembangan yang sesuai. Ini mencakup lingkungan server lokal (seperti XAMPP, Local by Flywheel, atau MAMP) serta editor kode (seperti VS Code, Sublime Text, atau PHPStorm). Pastikan bahwa PHP, MySQL, dan Apache/Nginx telah terinstal dengan benar di lingkungan lokal Anda.

Selanjutnya, Anda perlu melakukannya di server lokal Anda.wp-content/themes/Buatlah folder baru di dalam direktori tersebut. Nama folder tersebut sama dengan nama topik Anda, misalnya…my-first-themeIni adalah “rumah” untuk semua file tema Anda.

Sebuah tema WordPress yang paling dasar hanya memerlukan dua file:style.cssindex.phpDi antaranya,style.cssBukan hanya sekadar file berisi kode gaya (style sheet), tetapi juga merupakan “kartu identitas” dari sebuah tema; bagian komentar di bagian atas file tersebut berisi metainformasi tentang tema tersebut. Mari kita buat file ini terlebih dahulu.

推荐阅读 Belajar Mengembangkan Tema WordPress Dari Nol: Panduan Lengkap untuk Membuat Situs Web yang Dapat Disesuaikan

Create a theme information header file

style.cssBlok komentar di bagian atas file merupakan kunci bagi WordPress untuk mengenali sebuah tema. Silakan buat blok komentar tersebut di dalam folder tema Anda.style.cssDan tuliskan konten berikut:

UltaHost – Hosting untuk WordPress
Jaminan pengembalian uang dalam 30 hari, bandwidth dan basis data yang tidak terbatas, perlindungan DDoS gratis, diskon 50% untuk pembelian selama 3 tahun (dari harga normal: 50%).
/*
Theme Name: My First Theme
Theme URI: https://example.com/my-first-theme/
Author: Your Name
Author URI: https://example.com/
Description: 一个用于学习WordPress主题开发的简单入门主题。
Version: 1.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: my-first-theme
*/

Informasi tersebut akan ditampilkan di halaman “Appearance” -> “Themes” di panel administrasi WordPress (backend).Text DomainDigunakan untuk internasionalisasi; merupakan identifikasi kunci yang diperlukan untuk memuat file terjemahan selanjutnya.

Membuat template indeks dasar

Selanjutnya, buatlah file inti (core file) untuk tema tersebut.index.phpMeskipun file tersebut saat ini hanya berisi satu baris kode, file tersebut tetap dapat dikenali oleh WordPress dan akan mengaktifkan tema Anda.

<?php get_header(); ?>
<h1>Halo, WordPress Theme World!</h1>
<?php get_footer(); ?>

get_header()get_footer()Ini adalah fungsi template dari WordPress, dan fungsi-fungsi tersebut akan mencoba memuat file yang bernama…header.phpfooter.phpFile-file tersebut belum kita buat, tetapi menuliskannya terlebih dahulu merupakan praktik yang standar. Sekarang, Anda dapat masuk ke panel administrasi WordPress, lalu pilih “Tampilan” (Appearance) -> “Tema” (Themes), cari dan aktifkan tema “My First Theme”. Setelah itu, refresh halaman depan situs web Anda, dan Anda akan melihat tulisan “Hello, WordPress Theme World!”.

Memahami struktur hierarki template dan membuat file inti (core files)

WordPress menggunakan seperangkat aturan yang disebut “hierarki template” untuk menentukan file template mana yang harus digunakan untuk menampilkan konten berdasarkan jenis permintaan halaman yang berbeda (seperti halaman utama, halaman artikel, halaman kategori). Memahami mekanisme ini merupakan dasar penting dalam pengembangan tema (theme) yang efisien.

推荐阅读 Memulai Pengembangan Tema WordPress: Membuat Tema Kustom Pertama Anda Secara Bertahap

Template yang paling umum digunakan adalah…index.phpIni merupakan alternatif terakhir untuk semua halaman. Namun, untuk lebih mengontrol tampilan masing-masing halaman dengan lebih detail, kita perlu membuat berkas template yang lebih spesifik. Pertama-tama, mari kita buat tiga berkas dasar dan paling penting:header.phpfooter.phpfunctions.php

Membangun template header untuk situs web

header.phpFile biasanya berisi bagian kepala (header) dari dokumen HTML.<head>Bagian tersebut mencakup area publik di bagian atas situs web, seperti Logo dan menu navigasi. Buatlah elemen-elemen tersebut dengan desain yang seragam dan mudah dilihat oleh pengguna.header.phpFile:

<!DOCTYPE html>
<html no numeric noise key 1007>
<head>
    <meta charset="<?php bloginfo( 'charset' ); ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <?php wp_head(); ?>
</head>
<body no numeric noise key 1004>
    <header id="site-header">
        <div class="container">
            <h1><a href="/id/</?php echo esc_url( home_url( '/' ) ); ?>"><?php bloginfo( 'name' ); ?></a></h1>
            <p><?php bloginfo( 'description' ); ?></p>
            <nav>
                'primary',
                    'menu_id'        =&gt; 'primary-menu',
                ) );
                ?&gt;
            </nav>
        </div>
    </header>
    <main id="main-content">

Berikut adalah beberapa fungsi kunci:wp_head()Hook (pautan) memungkinkan inti WordPress, plugin, dan tema untuk berinteraksi dan berkomunikasi satu sama lain secara mandiri.<head>Masukkan kode yang diperlukan ke dalam area tersebut (misalnya, tautan ke lembar gaya/stylesheet).body_class()Sejumlah nama kelas CSS akan dihasilkan, yang memudahkan Anda untuk mengontrol tampilan halaman berdasarkan kebutuhan.wp_nav_menu()Digunakan untuk menampilkan sebuah menu navigasi.

hosting.com hosting bersama
Kinerja tinggi, dilengkapi dengan CPU AMD EPYC, penyimpanan SSD NVMe, dan LiteSpeed, dukungan internal ahli 24 jam sehari, langkah-langkah keamanan canggih termasuk SSL, brute force, malware, dan perlindungan DDoS, menghemat hingga 731 TB/bulan.

Membangun template bagian bawah situs web

footer.phpFile tersebut biasanya berisi bagian bawah (footer) yang bersifat umum untuk seluruh situs web, seperti informasi hak cipta, dan berakhir pada titik tertentu dalam kode sumber.header.phpTag yang dibuka di tengah. Buatlah.footer.php

    </main><!-- #main-content -->
    <footer id="site-footer">
        <div class="container">
            <p>©  . All rights reserved.</p>
        </div>
    </footer>
    <?php wp_footer(); ?>
<p>Saya ingin memperkenalkan Anda kepada teman saya, John Smith.</p>
<p>Saya tidak punya cukup uang untuk membeli mobil baru.</p>

wp_footer()wp_head()“Serupa” adalah sebuah hook (fungsi atau mekanisme penghubung) yang penting, yang digunakan untuk melakukan sesuatu tertentu dalam proses tertentu.<p>Saya ingin memperkenalkan Anda kepada teman saya, John Smith.</p>Masukkan skrip atau kode di depan tag.

Sekarang, kembali ke…index.phpGantilah dengan menggunakan file header dan footer yang baru kami buat:

推荐阅读 Cara memilih dan menyesuaikan tema WordPress yang ramah dengan SEO (Search Engine Optimization):

<article>
        <h2><?php the_title(); ?></h2>
        <div><?php the_content(); ?></div>
    </article>
<?php endwhile; else : ?>
    <p><?php esc_html_e( 'Sorry, no posts matched your criteria.', 'my-first-theme' ); ?></p>

Kode ini merupakan bagian dari siklus inti (The Loop) dalam tema WordPress. Siklus ini akan memeriksa apakah halaman saat ini berisi artikel, dan kemudian akan mengulang prosesnya untuk menampilkan judul serta isi setiap artikel.

Meningkatkan fitur tema melalui file fungsi

functions.phpIni adalah “Pusat Kontrol” (Control Center) untuk tema Anda. Bukan berupa file template, melainkan file PHP yang secara otomatis diunduh saat tema diinisialisasi. Di sini Anda dapat menambahkan fitur pendukung tema, mengatur lokasi menu, menyusun skema tata letak (stylesheet), serta menambahkan skrip (scripts). Silakan buat file tersebut.functions.php

Hosting bersama InterServer.
Hosting bersama seharga $2,50 USD per bulan, diskon $0,1 USD untuk bulan pertama dengan kode promo tryinterserver, serta 461 skrip aplikasi cloud yang dapat diinstal dengan sekali klik.
<?php
/**
 * My First Theme 的功能函数文件
 */

// 主题基础设置
if ( ! function_exists( 'my_first_theme_setup' ) ) :
    function my_first_theme_setup() {
        // 让WordPress管理文档标题
        add_theme_support( 'title-tag' );
        // 启用文章和页面的特色图片功能
        add_theme_support( 'post-thumbnails' );
        // 注册一个主导航菜单
        register_nav_menus( array(
            'primary' => esc_html__( 'Primary Menu', 'my-first-theme' ),
        ) );
        // 为文章摘录添加HTML支持
        add_filter( 'excerpt_more', 'my_first_theme_excerpt_more' );
    }
endif;
add_action( 'after_setup_theme', 'my_first_theme_setup' );

// 修改摘录末尾的“更多”链接样式
function my_first_theme_excerpt_more( $more ) {
    return '...';
}

// 注册并加载样式表
function my_first_theme_scripts() {
    // 加载主样式表
    wp_enqueue_style( 'my-first-theme-style', get_stylesheet_uri() );
    // 加载一个自定义样式表
    wp_enqueue_style( 'my-first-theme-custom-style', get_template_directory_uri() . '/assets/css/custom.css', array(), '1.0' );
}
add_action( 'wp_enqueue_scripts', 'my_first_theme_scripts' );

File fungsi ini melakukan beberapa hal yang penting: 1) Dengan…add_theme_support()Fungsi-fungsi yang umum digunakan oleh tema WordPress modern telah diaktifkan; 2) Melalui…register_nav_menus()Kami telah mendaftarkan lokasi restoran kami, sehingga informasi tersebut dapat digunakan kembali di masa depan.header.phpYang dipanggil di tengah (the function that is called in the middle)primaryMenu dapat diberikan atribut penampilan di bagian “Penampilan” (Appearance) -> “Menu” (Menu) di backend; 3) Gunakanlah fitur tersebut.wp_enqueue_style()Fungsi tersebut berhasil menambahkan file gaya (stylesheet) ke dalam antrian (queue) dengan cara yang aman dan sesuai dengan persyaratan keamanan.

Create an independent article template.

Untuk meningkatkan tampilan sebuah artikel secara optimal, kita dapat membuat sebuah file template khusus.single.phpBerdasarkan tingkatan template, ketika seseorang mengakses sebuah artikel tertentu, WordPress akan lebih memilih untuk menggunakan template yang sesuai dengan struktur dan fitur artikel tersebut.single.php…bukan…index.php

<?php get_header(); ?>

<article id="post-<?php the_ID(); ?>" no numeric noise key 1007>
    <header class="entry-header">
        &lt;?php the_title( &#039;<h1 class="entry-title">', '</h1>' ); ?&gt;
        <div class="entry-meta">
            <?php 
            printf( 
                esc_html__( '发布于 %s', 'my-first-theme' ), 
                get_the_date() 
            );
            ?>
        </div>
        <?php if ( has_post_thumbnail() ) : ?>
            <div class="post-thumbnail">
                <?php the_post_thumbnail( 'large' ); ?>
            </div>
        <?php endif; ?>
    </header>
    <div class="entry-content">
        <?php the_content(); ?>
    </div>
</article>

<?php get_footer(); ?>

Template ini menampilkan informasi artikel secara lebih rinci, seperti tanggal publikasi dan gambar utama (jika telah diatur).post_class()Fungsi tersebut akan menghasilkan kelas CSS yang sesuai dengan jenis artikel.

Menambahkan gaya dasar dan desain responsif

Sekarang, tema Anda sudah memiliki kerangka dan fitur dasar; saatnya untuk membuatnya lebih menarik secara visual. Kita akan…style.cssTambahkan beberapa kode CSS dasar ke dalamnya, dan pastikan desainnya bersifat responsif (mampu beradaptasi dengan berbagai ukuran layar).

Di milikmustyle.cssTambahkan gaya berikut ke file (di bawah bagian header informasi topik):

/* 基础重置与排版 */
* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}
body {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    line-height: 1.6;
    color: #333;
    background-color: #f9f9f9;
}
.container {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
}

/* 头部样式 */
#site-header {
    background: #fff;
    border-bottom: 1px solid #eee;
    padding: 1rem 0;
}
#site-header h1 a {
    color: #333;
    text-decoration: none;
}

/* 导航菜单 */
#primary-menu {
    display: flex;
    list-style: none;
}
#primary-menu li {
    margin-right: 1rem;
}
#primary-menu a {
    text-decoration: none;
    color: #555;
}

/* 主内容区 */
#main-content {
    padding: 2rem 0;
}
article {
    background: #fff;
    padding: 2rem;
    margin-bottom: 2rem;
    border-radius: 4px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.05);
}

/* 底部样式 */
#site-footer {
    background: #333;
    color: #fff;
    text-align: center;
    padding: 1.5rem 0;
    margin-top: 2rem;
}

/* 响应式设计 */
@media (max-width: 768px) {
    .container {
        padding: 0 15px;
    }
    #primary-menu {
        flex-direction: column;
    }
    #primary-menu li {
        margin-right: 0;
        margin-bottom: 0.5rem;
    }
    article {
        padding: 1rem;
    }
}

Gaya-gaya ini memberikan tampilan yang jelas dan modern, serta menyediakan tata letak yang responsif (mampu beradaptasi dengan berbagai ukuran layar) untuk perangkat dengan layar kecil. Anda dapat membuatnya sendiri./assets/css/custom.cssFile tersebut digunakan untuk menyimpan lebih banyak gaya (style) kustom, dan file tersebut sudah ada.functions.phpYang terdaftar dalam antrian tersebut akan diunduh dan dimuat.

Menyimpulkan.

Dengan mengikuti langkah-langkah dalam artikel ini, Anda telah berhasil membuat sebuah tema WordPress yang memiliki fungsi yang lengkap dan struktur yang jelas, dimulai dari sebuah folder kosong. Anda juga telah memahami file-file dasar yang digunakan dalam pengembangan tema.style.cssindex.phpSaya telah mempelajari konsep hierarki template (struktur lapisan template), dan kemudian membuatnya.header.phpfooter.phpsingle.phpFile-file template inti lainnya juga disertakan. Anda juga melakukannya melalui…functions.phpFile tersebut menambahkan dukungan fungsional dan kemampuan manajemen sumber daya untuk topik Anda, lalu memberikan “kehidupan visual” kepadanya melalui CSS.

Ini hanyalah titik awal. Selanjutnya, Anda dapat mengeksplorasi cara membuat lebih banyak file template (seperti…)page.phparchive.php404.phpAnda perlu mempelajari lebih dalam tentang sistem Hook, Action, dan Filter di WordPress, serta cara membuat tema Anda mendukung penggunaan Widget dan Customizer. Dengan terus berlatih dan bereksperimen, Anda akan menjadi seorang pengembang tema WordPress yang mahir.

FAQ - Pertanyaan yang Sering Diajukan.

Bagaimana cara mengubah Logo dari sebuah tema?

header.phpDalam berkas tersebut, temukan baris kode yang menampilkan judul situs web. Anda dapat menggunakan…

\n`Penggantian tagbloginfo( ‘name’ )Dan tautkan ke gambar Logo Anda. Cara yang lebih profesional adalah…functions.phpGunakan dalam bahasa Cinaadd_theme_support( ‘custom-logo’ )Untuk mendukung fitur pengunggahan logo di WordPress Customizer.

Mengapa menu navigasi saya tidak muncul?

Pertama-tama, pastikan Anda sudah…functions.phpMelaluiregister_nav_menus()Sudah mendaftarkan lokasi restoran (misalnya)...primarySetelah itu, Anda perlu masuk ke panel administrasi WordPress, lalu menuju halaman “Appearance” -> “Menus”. Buat menu baru, pilih item-item menu yang diinginkan, dan centang posisi menu yang telah Anda daftarkan (misalnya “Primary Menu”) di kolom “Display Location”. Setelah selesai, simpan perubahan tersebut.

Bagaimana cara menambahkan sidebar ke sebuah tema?

Pertama, difunctions.phpGunakan dalam bahasa Cinaregister_sidebar()Fungsi tersebut digunakan untuk mendaftarkan area komponen sidebar (sisi kiri halaman). Setelah itu, komponen sidebar tersebut akan ditampilkan di file template tempat Anda ingin menampilkan sidebar tersebut.index.phpsingle.phpDalam hal ini, gunakandynamic_sidebar()Fungsi memanggil area ini. Pada saat yang sama, Anda perlu membuat (create)…sidebar.phpFile tersebut digunakan untuk mendefinisikan struktur HTML spesifik dari sidebar.

Apakah operasi yang ada di file functions.php harus dihubungkan (dikaitkan) menggunakan “hook” (pemanggil fungsi tertentu)?

Ya, dalam sebagian besar kasus, untuk memastikan kode dieksekusi pada waktu yang tepat, Anda sebaiknya mengemas kode fungsional ke dalam fungsi dan menggunakan hook tertentu (seperti…)after_setup_themewp_enqueue_scripts) Mount. Cukup tuliskan langsung saja.functions.phpKode yang berlaku di seluruh sistem (global scope) dapat dieksekusi pada waktu yang tidak tepat atau menyebabkan kesalahan.