Chapter 5: Building the Blog Section — Custom Queries
Ringkasan
Video ini memperkenalkan konsep Custom Queries — cara manual query konten WordPress tanpa bergantung pada query default berdasarkan URL. Kita belajar class WP_Query, object-oriented programming dasar, dan cara menampilkan 2 blog post terbaru di homepage (front-page.php).
Konsep: Default Query vs Custom Query
| Aspek | Default Query | Custom Query |
|---|---|---|
| Siapa yang membuat? | WordPress otomatis | Kita yang menulis |
| Berdasarkan apa? | URL yang sedang dikunjungi | Parameter yang kita tentukan |
| Contoh | /blog → 10 post terbaru | Kita minta 2 post terbaru di mana saja |
| Kapan digunakan? | Sebagian besar template | Ketika ingin menampilkan konten yang tidak terkait URL saat ini |
Custom query = "Hey WordPress, saya tidak peduli URL saat ini. Saya yang tentukan konten apa yang mau di-query."
Step-by-Step
Step 1: Pengenalan Singkat Object-Oriented Programming
WordPress menggunakan class WP_Query untuk custom queries. Analogi sederhana:
// Class = blueprint/resep
// Object = hasil dari blueprint
$dog = new Animal(); // dog adalah OBJECT dari class Animal
$cat = new Animal(); // cat juga OBJECT dari class Animal
// Object punya methods (functions)
$dog->drinkWater(); // panggil method drinkWater pada object dog| Konsep | Penjelasan |
|---|---|
| Class | Blueprint/resep yang bisa dipakai berulang kali |
| Object | Instance yang dibuat dari class |
-> | Operator untuk mengakses method/property milik object |
| Method | Function yang ada di dalam object |
Step 2: Buat Custom Query dengan WP_Query
📄 front-page.php — di area "From Our Blog":
<?php
$homepagePosts = new WP_Query(array(
'posts_per_page' => 2
));
while($homepagePosts->have_posts()) {
$homepagePosts->the_post(); ?>
<div class="event-summary">
<a class="event-summary__date event-summary__date--beige t-center" href="<?php the_permalink(); ?>">
<span class="event-summary__month"><?php the_time('M'); ?></span>
<span class="event-summary__day"><?php the_time('d'); ?></span>
</a>
<div class="event-summary__content">
<h5 class="event-summary__title headline headline--tiny">
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</h5>
<p><?php echo wp_trim_words(get_the_content(), 18); ?></p>
</div>
</div>
<?php }
wp_reset_postdata();
?>Penjelasan Tiap Bagian
Membuat Custom Query:
$homepagePosts = new WP_Query(array(
'posts_per_page' => 2
));| Kode | Penjelasan |
|---|---|
$homepagePosts | Variabel yang menyimpan object custom query (nama bebas) |
new WP_Query(...) | Membuat instance baru dari class WP_Query |
array(...) | Associative array berisi parameter query |
'posts_per_page' => 2 | Hanya ambil 2 post terbaru |
Parameter WP_Query yang bisa digunakan:
| Parameter | Contoh Nilai | Fungsi |
|---|---|---|
'posts_per_page' | 2 | Jumlah post yang diambil |
'category_name' | 'awards' | Hanya post dari kategori tertentu |
'post_type' | 'post' / 'page' | Jenis post yang dicari |
Loop dengan Custom Query:
while($homepagePosts->have_posts()) {
$homepagePosts->the_post();| Default Loop | Custom Query Loop | Perbedaan |
|---|---|---|
have_posts() | $homepagePosts->have_posts() | Menggunakan method milik object custom |
the_post() | $homepagePosts->the_post() | Menggunakan method milik object custom |
Penting: Gunakan
$namaObject->have_posts()dan$namaObject->the_post()— BUKANhave_posts()danthe_post()biasa (itu untuk default query).
Trim Content:
<?php echo wp_trim_words(get_the_content(), 18); ?>| Fungsi | Kegunaan |
|---|---|
get_the_content() | Return full content post (tidak echo) |
wp_trim_words($text, $num) | Memotong teks menjadi hanya $num kata pertama |
18 | Ambil 18 kata pertama saja — cukup untuk preview di homepage |
Lebih baik dari
the_excerpt()karena kita bisa kontrol jumlah kata secara spesifik.
Reset Post Data:
wp_reset_postdata();| Fungsi | Kegunaan |
|---|---|
wp_reset_postdata() | Mereset global WordPress data kembali ke default query setelah custom query selesai |
Best practice: SELALU panggil
wp_reset_postdata()setelah setiap custom query loop selesai. Ini mencegah bug di bagian template selanjutnya.
Mengapa Custom Query Penting?
Custom query memungkinkan kita menampilkan konten apa saja, di mana saja:
- Homepage → 2 blog post terbaru (bukan default query homepage)
- Sidebar → 5 post terpopuler
- Footer → 3 event terbaru
- Page About Us → list professor dari custom post type
"Once you understand custom queries, you go from 'I kinda understand WordPress' to 'I can make WordPress do whatever I need.'" — Instruktur
Poin Penting
- Default query otomatis berdasarkan URL — custom query manual berdasarkan parameter kita
WP_Queryadalah class bawaan WordPress — kita buat object/instance dari class ini- Parameter diberikan sebagai associative array (sama seperti
wp_list_pages()dll) - Loop custom query menggunakan
$object->have_posts()dan$object->the_post()— bukan versi global wp_trim_words(get_the_content(), 18)→ cara elegan membatasi jumlah kata yang ditampilkanwp_reset_postdata()→ WAJIB dipanggil setelah custom query loop — best practice yang harus jadi kebiasaan- Custom query adalah fondasi untuk fitur-fitur advanced WordPress (custom post types, relationships, dll)