Skip to content

Memahami Pro & Kontra Paradigma "Post" WordPress

Gambaran Umum

Video ini memulai chapter baru tentang custom database table — dimulai dengan pemahaman mendalam mengapa pendekatan custom post type kadang lambat dan kapan kita perlu custom table sendiri.


Perbandingan Kecepatan: Custom Post Type vs Custom Table

SkenarioCustom Post TypeCustom Table
Query dasar (100 pet pertama)~0.2 detik~0.1 detik
Query dengan filter metadata (species=cat, favcolor=green)~1.2 detik~0.1 detik

Kesimpulan: Untuk query berdasarkan metadata, custom table bisa ~10x lebih cepat.


Mengapa Custom Post Type Lambat untuk Metadata Query?

Struktur Database WordPress

Tabel wp_posts:

  • Setiap pet = 1 row
  • Hanya menyimpan data dasar: title, content, post_type, dll.
  • Data custom (species, weight, color) tidak ada di sini

Tabel wp_postmeta:

  • Setiap property custom = 1 row terpisah
  • 1 pet dengan 6 property = 6 rows di post_meta
  • 100.000 pet × 6 properties = 600.000 rows di post_meta!

Kenapa Lambat?

  1. Query dasar (100 pet pertama) → WordPress cukup cari di wp_posts dimana post_type = 'pet', lalu lookup post_meta berdasarkan post_id (indexed, cepat)
  2. Query metadata (species=dog) → WordPress harus scan tabel wp_postmeta yang sangat besar, cari rows dimana meta_key = 'species' DAN meta_value = 'dog'

Struktur Custom Table (Solusi)

Tabel: wp_pets
| id | pet_name | species | birth_year | pet_weight | fave_food | fave_hobby | fave_color |
  • Setiap pet = 1 row (bukan 6+ rows)
  • Setiap property = 1 kolom langsung (bukan lookup ke tabel lain)
  • Database langsung tahu di mana mencari data → jauh lebih cepat

Kapan Gunakan Custom Post Type vs Custom Table?

Gunakan Custom Post Type (9 dari 10 kasus):

  • WordPress memberikan gratis: admin interface, REST API, permissions, CRUD operations
  • Tidak perlu query berdasarkan metadata
  • Jumlah post tidak terlalu besar (< beberapa ribu)
  • Prototype/development lebih cepat

Gunakan Custom Table (1 dari 10 kasus):

Hanya jika KEDUA kondisi ini terpenuhi:

  1. Anda perlu query berdasarkan metadata (filter, search, sort)
  2. Anda mengantisipasi volume data yang besar (ribuan hingga ratusan ribu records)

Trade-off: Custom table = lebih cepat tapi kehilangan semua fitur "gratis" WordPress. Anda harus menulis sendiri SQL queries, admin interface, security, permissions, dll.


Setup Pet Adoption (Custom Post Type Version)

Download starter zip → aktifkan plugin → buat halaman baru dengan slug pet-adoption:

php
// Uncomment baris ini untuk generate pet secara random:
// add_action('admin_head', [$this, 'generatePets']);
  • Setiap refresh admin → generate 10 pet baru
  • Bisa diubah ke angka lebih besar (hati-hati timeout di shared hosting)
  • WordPress tidak dioptimasi untuk membuat 100.000 post sekaligus → bisa butuh 5-20 menit