Skip to content

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

AspekDefault QueryCustom Query
Siapa yang membuat?WordPress otomatisKita yang menulis
Berdasarkan apa?URL yang sedang dikunjungiParameter yang kita tentukan
Contoh/blog → 10 post terbaruKita minta 2 post terbaru di mana saja
Kapan digunakan?Sebagian besar templateKetika 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:

php
// 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
KonsepPenjelasan
ClassBlueprint/resep yang bisa dipakai berulang kali
ObjectInstance yang dibuat dari class
->Operator untuk mengakses method/property milik object
MethodFunction yang ada di dalam object

Step 2: Buat Custom Query dengan WP_Query

📄 front-page.php — di area "From Our Blog":

php
<?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:

php
$homepagePosts = new WP_Query(array(
    'posts_per_page' => 2
));
KodePenjelasan
$homepagePostsVariabel 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' => 2Hanya ambil 2 post terbaru

Parameter WP_Query yang bisa digunakan:

ParameterContoh NilaiFungsi
'posts_per_page'2Jumlah post yang diambil
'category_name''awards'Hanya post dari kategori tertentu
'post_type''post' / 'page'Jenis post yang dicari

Loop dengan Custom Query:

php
while($homepagePosts->have_posts()) {
    $homepagePosts->the_post();
Default LoopCustom Query LoopPerbedaan
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() — BUKAN have_posts() dan the_post() biasa (itu untuk default query).

Trim Content:

php
<?php echo wp_trim_words(get_the_content(), 18); ?>
FungsiKegunaan
get_the_content()Return full content post (tidak echo)
wp_trim_words($text, $num)Memotong teks menjadi hanya $num kata pertama
18Ambil 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:

php
wp_reset_postdata();
FungsiKegunaan
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_Query adalah 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 ditampilkan
  • wp_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)