Rumahweb Journal
banner - WP-Query WordPress

WP_Query WordPress: Pengertian, Fungsi, dan Cara Membuatnya

Dalam kehidupan sehari-hari, kita sering menggunakan sistem pencarian, filter, dan pengelompokan untuk menemukan informasi. Demikian pula WP_Query WordPress, yang berfungsi untuk mengatur dan mengambil data spesifik dari database, memungkinkan Anda menampilkan informasi yang sesuai sesuai kebutuhan.

Dalam artikel ini, kami akan membahas secara detail tentang apa itu WP_Query WordPress, mulai dari pengertian, fungsi hingga cara membuatnya di CMS WordPress. Simak informasi berikut ini.

Apa itu WP_Query WordPress?

Di WordPress, semua data tersimpan di dalam database yang mencakup berbagai elemen seperti konten, plugin, tema, gambar, hingga pengaturan konfigurasi. Karena semua data di WordPress tersimpan di database, setiap kali pengunjung mencari kategori tertentu atau mengklik menu tertentu, informasi tersebut akan diambil langsung dari database.

Meskipun data bisa diambil langsung dengan SQL query, namun cara ini dinilai kurang optimal dan dapat membebani server, terutama saat website Anda mulai mendapat banyak traffic.

WP_Query adalah salah satu kelas (class) di WordPress yang dirancang khusus untuk mengambil data dari database, seperti postingan, halaman, kategori, tag, dan custom post type. WP_Query menawarkan efisiensi, keamanan, fleksibilitas, dan mendukung caching otomatis, sehingga membuat pengambilan data lebih cepat dan mengurangi beban server.

Class ini berjalan secara default di website Anda dan aktif saat pengunjung melakukan pencarian atau tindakan tertentu. Berikut contoh penggunaan dasar struktur dasar WP_Query di WordPress:

Promo Hosting Murah Rumahweb

$query = new WP_Query( array(
    'post_type' => 'post',
    'posts_per_page' => 5,
    'category_name' => 'news',
) );

Keterangan:

  • post_type: Jenis postingan yang ingin diambil (post, page, custom post type).
  • posts_per_page: Jumlah postingan yang ditampilkan per halaman.
  • category_name: Nama kategori untuk filter postingan.
  • meta_query: Query berdasarkan metadata.
  • orderby dan order: Menentukan urutan tampilan (misalnya, berdasarkan tanggal atau judul).

Fungsi WP_Query di WordPress

Adapun fungsi dari penggunaan WP_Query WordPress yaitu sebagai berikut:

  1. Custom Query: Digunakan untuk melakukan query kustom terhadap database WordPress, misalnya mengambil postingan berdasarkan kategori, tag, atau metadata tertentu.
  2. Mengganti Query Utama (Main Query): Dapat digunakan untuk memodifikasi query default di halaman arsip, kategori, atau halaman depan.
  3. Paging dan Offset: WP_Query mendukung pengambilan data dengan fitur pagination dan offset, yang memudahkan pengelolaan banyak konten.
  4. Meningkatkan Kinerja: Dengan WP_Query, kita bisa mengambil data yang benar-benar kita butuhkan, sehingga tidak membebani server.
  5. Mengoptimalkan Konten: Dengan mengambil postingan tertentu, Anda dapat menampilkan konten yang lebih relevan di halaman tertentu, meningkatkan engagement dan SEO.
  6. Penanganan Konten Duplikat: Dengan mengontrol query, Anda bisa menghindari konten duplikat yang bisa mempengaruhi ranking SEO.

Cara membuat WP_Query WordPress

Setelah memahami apa itu WP_Query beserta fungsinya, berikut adalah cara untuk membuat WP_Query WordPress.

1. Membuat Loop

Loop adalah struktur yang mengekstrak dan menampilkan data postingan. Kode ini menentukan bagaimana konten ditampilkan berdasarkan template atau tema yang Anda gunakan.

Contoh basic loop:

if ( have_posts() ) :
    while ( have_posts() ) : the_post();
        // Tampilkan konten postingan
    endwhile;
endif;

Keterangan:

  • have_posts(: mengecek apakah ada postingan yang tersedia untuk ditampilkan.
  • the_post(): mengatur data postingan saat ini, sehingga Anda dapat menggunakan fungsi lain seperti the_title() dan the_content() untuk menampilkan judul dan isi postingan.

Anda bisa memodifikasi loop ini menggunakan WP_Query untuk menampilkan postingan sesuai kriteria tertentu.

2. Menggunakan Argument

Untuk menggunakan WP_Query pada WordPress, Anda perlu menyertakan empat elemen utama:

  1. Argumen query: Memberi tahu WordPress data apa yang ingin diambil dari database.
  2. Query itu sendiri: Membuat WP_Query baru.
  3. Loop: Menampilkan data yang diambil.
  4. Post data reset: Mengembalikan data ke kondisi semula setelah Loop.

Contoh dasar argumen WP_Query:

$args = array(
    'parameter1' => 'value',
    'parameter2' => 'value',
    'parameter3' => 'value'
);

Keterangan:

  • parameter1, parameter2, parameter3: Ini adalah nama parameter yang menunjukkan kriteria untuk pengambilan data. Setiap parameter memiliki berbagai nilai yang dapat digunakan untuk menyaring hasil.
  • value: Ini adalah nilai yang akan digunakan untuk parameter tersebut. Nilai ini bisa berupa string, angka, atau array, tergantung pada parameter yang digunakan.

Untuk menampilkan postingan dengan tag ‘musik’:

$query = new WP_Query( array( 'tag' => 'musik' ) );

Keterangan:

  • new WP_Query(…): Membuat instance baru dari WP_Query dengan argumen yang ditentukan.
  • array( ‘tag’ => ‘musik’ ): Ini adalah argumen yang memberitahu WP_Query untuk mengambil semua postingan yang memiliki tag ‘musik’.

Jika tidak ada argumen yang diberikan, tidak ada konten yang akan ditampilkan dari database.

3. Menetapkan Parameter

Untuk memodifikasi WP_Query, Anda perlu menetapkan parameter. Beberapa parameter umum sebagai berikut:

  • posts_per_page: jumlah postingan yang ingin ditampilkan.
  • author: filter berdasarkan penulis.
  • cat: kategori postingan.
  • tag: filter berdasarkan tag.
  • orderby & order: urutan hasil.
  • post_type: jenis konten (postingan, halaman, dll.).
  • post_status: status konten (diterbitkan, draft, dll.).

Contoh menampilkan postingan dari kategori “staff”:

$query = new WP_Query( array( 'category_name' => 'staff' ) );

Contoh menampilkan postingan hanya tiap hari senin:

$args = array(
    'date_query' => array(
        array(
            'weekday' => 'Monday', // Menentukan hari Senin
        ),
    ),
    'posts_per_page' => -1, // Mengambil semua postingan yang cocok
);
$query = new WP_Query( $args ); // Membuat instance WP_Query
if ( $query->have_posts() ) : // Cek apakah ada postingan yang ditemukan
while ( $query->have_posts() ) : $query->the_post(); // Loop untuk setiap post
        the_title('<h2>', '</h2>'); // Menampilkan judul postingan
        the_excerpt(); // Menampilkan ringkasan postingan
    endwhile;
    wp_reset_postdata(); // Mengatur kembali data post global setelah loop
else :
    echo 'Tidak ada postingan ditemukan untuk hari Senin.'; // Pesan jika tidak ada postingan
Endif;

Keterangan:

  • date_query: Parameter ini digunakan untuk menyaring postingan berdasarkan tanggal.
  • ‘weekday’ => ‘Monday’: Menentukan bahwa kita hanya ingin mengambil postingan yang diterbitkan pada hari Senin.
  • posts_per_page: Mengatur jumlah postingan yang akan ditampilkan. Dengan -1, semua postingan yang cocok akan diambil.
  • WP_Query: Membuat objek baru dari WP_Query dengan argumen yang telah ditentukan.
  • Loop: Memeriksa dan menampilkan setiap postingan yang ditemukan.

4. Mengubah Properti Class dengan Method

WP_Query adalah PHP class yang memiliki properti (variabel) yang tidak disarankan untuk diubah langsung. Sebagai gantinya, gunakan method untuk mengakses dan memodifikasi data.

Contoh method penting adalah wp_reset_postdata() yang mengembalikan data setelah Loop selesai:

$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) : 
    while ( $the_query->have_posts() ) : $the_query->the_post();
        echo '<h2>' . the_title() . '</h2>';
    endwhile;
    wp_reset_postdata(); 
else : 
    echo 'No posts found'; 
endif;

Method ini memastikan data postingan kembali ke kondisi awal setelah query selesai.

Contoh Implementasi WP_Query di WordPress

Setelah memahami konsep dasar WP_Query WordPress, Anda bisa kreasikan tampilan website Anda dengan bebas! Dengan banyaknya parameter, sesuaikan tampilan sesuai keinginan. Simak contoh-contoh berikut untuk inspirasi modifikasi website Anda.

1. Menampilkan Postingan Berdasarkan Kategori Tertentu

Membagi konten website ke dalam kategori adalah cara yang efektif untuk mengorganisir dan menyajikan informasi kepada pengunjung. Dengan mengelompokkan postingan berdasarkan topik, kita membantu pengunjung menemukan konten yang mereka cari dengan lebih mudah.

<?php
// Argumen WP_Query

$args = array(
    'category_name' => 'health', // Mengambil postingan dari kategori 'health'
    'posts_per_page' => 3, // Menampilkan 3 postingan
);

// Membuat query baru
$health_posts = new WP_Query( $args );

// Mengecek apakah ada postingan yang sesuai
if ( $health_posts->have_posts() ) : 
    echo '<div class="health-posts">';
    while ( $health_posts->have_posts() ) : $health_posts->the_post();
    echo '<h2><a href="' . get_permalink() . '">' . get_the_title() . '</a></h2>';
    endwhile;
    echo '</div>';
    wp_reset_postdata(); 

else :
    echo 'No health posts found.';

endif;
?>

Keterangan:

  • category_name => ‘health’: Mengambil postingan dari kategori “health”.
  • posts_per_page => 3: Mengambil 3 postingan dari kategori tersebut.
  • Menampilkan judul setiap postingan sebagai link.

2. Menampilkan konten populer

Menampilkan konten terpopuler di situs web dapat membantu menarik perhatian pengunjung dan meningkatkan interaksi. Dengan menggunakan WP_Query, Anda dapat menampilkan postingan berdasarkan jumlah komentar atau meta key tertentu yang mencerminkan popularitas, seperti jumlah tampilan (views).

Pada contoh ini, kita akan menggunakan parameter order by untuk mengurutkan postingan berdasarkan jumlah komentar.

<?php
// Argumen WP_Query untuk mendapatkan postingan terpopuler

$args = array(
    'posts_per_page' => 5,     // Menampilkan 5 postingan terpopuler
    'orderby' => 'comment_count', // Mengurutkan berdasarkan jumlah komentar
    'order' => 'DESC' // Urutkan secara menurun (dari yang terpopuler)
);

// Membuat query baru
$popular_posts = new WP_Query( $args );

// Mengecek apakah ada postingan yang sesuai
if ( $popular_posts->have_posts() ) : 
    echo '<h2>Konten Terpopuler</h2>'; // Judul bagian
    echo '<ul>';
    // Loop melalui setiap postingan
    while ( $popular_posts->have_posts() ) : $popular_posts->the_post();
        echo '<li>';
        echo '<a href="' . get_permalink() . '">' . get_the_title() . '</a> '; // Judul dengan link
        echo '<span>(' . get_comments_number() . ' komentar)</span>'; // Menampilkan jumlah komentar
        echo '</li>';
    endwhile;
    echo '</ul>';

    // Mereset post data
    wp_reset_postdata(); 
else : 
    echo 'Tidak ada postingan terpopuler yang ditemukan.';

endif;
?>

Keterangan:

  • posts_per_page => 5: Mengambil maksimal 5 postingan terpopuler untuk ditampilkan.
  • orderby => ‘comment_count’: Mengurutkan postingan berdasarkan jumlah komentar. Postingan dengan jumlah komentar terbanyak akan muncul pertama.
  • order => ‘DESC’: Mengurutkan hasil secara menurun, sehingga postingan terpopuler berada di atas.
  • get_comments_number(): Mengambil jumlah komentar untuk setiap postingan dan menampilkannya setelah judul.
  • wp_reset_postdata(): Mengembalikan data postingan ke kondisi semula setelah query selesai. Ini penting untuk mencegah gangguan pada query utama di halaman.

3. Menampilkan Postingan Terbaru Dengan WP_Query WordPress

Menampilkan postingan terbaru di situs web Anda adalah cara yang efektif untuk memastikan pengunjung selalu melihat konten terbaru. Dengan menggunakan WP_Query WordPress, Anda dapat mengatur parameter untuk menampilkan sejumlah postingan terbaru sesuai kebutuhan.

<?php
// Argumen WP_Query untuk mendapatkan postingan terbaru

$args = array(
    'posts_per_page' => 5, // Menampilkan 5 postingan terbaru
    'orderby' => 'date', // Mengurutkan berdasarkan tanggal
    'order' => 'DESC'  // Urutkan secara menurun (dari yang terbaru)
);

// Membuat query baru
$latest_posts = new WP_Query( $args );

// Mengecek apakah ada postingan yang sesuai
if ( $latest_posts->have_posts() ) : 
    echo '<h2>Postingan Terbaru</h2>'; // Judul bagian
    echo '<ul>';

    // Loop melalui setiap postingan
    while ( $latest_posts->have_posts() ) : $latest_posts->the_post();
        echo '<li>';
        echo '<a href="' . get_permalink() . '">' . get_the_title() . '</a>'; // Judul dengan link
        echo '<span> - ' . get_the_date() . '</span>'; // Menampilkan tanggal postingan
        echo '</li>';

    endwhile;
    echo '</ul>';

    // Mereset post data
    wp_reset_postdata(); 

else : 
    echo 'Tidak ada postingan terbaru yang ditemukan.';

endif;
?>

Keterangan:

  • posts_per_page => 5: Mengambil maksimal 5 postingan terbaru untuk ditampilkan. Anda bisa mengubah angka ini sesuai kebutuhan.
  • orderby => ‘date’: Mengurutkan postingan berdasarkan tanggal. Postingan terbaru akan muncul pertama.
  • order => ‘DESC’: Mengurutkan hasil secara menurun, sehingga postingan terbaru berada di atas.
  • get_the_date(): Mengambil dan menampilkan tanggal publikasi untuk setiap postingan.
  • wp_reset_postdata(): Mengembalikan data postingan ke kondisi semula setelah query selesai, yang penting untuk menjaga integritas data dalam loop utama.

Kesimpulan

WP_Query adalah salah satu fitur class di WordPress yang memiliki berbagai fungsi untuk mengambil dan memanipulasi data dari database. Dengan pemahaman yang baik tentang cara kerjanya, Anda bisa menyesuaikan konten yang ditampilkan di situs secara dinamis, baik untuk meningkatkan pengalaman pengguna maupun untuk tujuan SEO.

Namun, penggunaannya harus dilakukan dengan hati-hati untuk menghindari masalah performa dan kompatibilitas dengan struktur WordPress yang Anda gunakan.

Jika Anda membutuhkan hosting untuk website WordPress Anda, layanan WordPress Hosting dari Rumahweb bisa menjadi pilihan yang tepat. Hosting kami dilengkapi dengan LiteSpeed web server, Redis, dan web accelerator yang dapat meningkatkan kecepatan loading website WordPress Anda.

Demikian artikel kami tentang WP_Query WordPress, semoga bermanfaat.

Bermanfaatkah Artikel Ini?

Klik bintang 5 untuk rating!

Rating rata-rata 0 / 5. Vote count: 0

Belum ada vote hingga saat ini!

Kami mohon maaf artikel ini kurang berguna untuk Anda!

Mari kita perbaiki artikel ini!

Beri tahu kami bagaimana kami dapat meningkatkan artikel ini?

VPS Alibaba

Amiratur Rafifah

Amiratur Rafifah, atau yang akrab dipanggil Fifah, adalah seorang staf technical support di Rumahweb Indonesia dengan passion besar di dunia pendidikan, teknologi, dan kreativitas. Melalui Journal Rumahweb, Fifah ingin berbagi insight dan solusi teknis, dengan fokus pada penggunaan dan pengembangan Python di lingkungan hosting.