Bagaimana Cara Menggunakan Kelas WP_Query Di WordPress?

Diterbitkan: 2024-08-09

Daftar isi
Apa itu WP_Query?
Catatan singkat tentang WP_Query
Bagaimana Anda bisa memanfaatkan WP_Query?
WP_Query Vs query_posts(): Mana yang lebih disukai?
Beberapa Contoh Penggunaan WP_Query
Kesimpulan

Apa itu WP_Query?

WP_Query adalah kelas PHP yang kuat di WordPress yang memungkinkan Anda membuat kueri khusus ke kumpulan data untuk mengambil postingan dan konten lainnya dan merendernya di halaman. Ini memberikan cara yang fleksibel dan efisien untuk berinteraksi dengan database dan mengambil konten berdasarkan berbagai kriteria.


Catatan singkat tentang WP_Query

Anda mungkin sudah tahu bahwa WordPress menyimpan semua data situs web Anda seperti postingan, halaman, komentar, atau pengaturan di database MySQL.

Jadi, bagi siapa pun yang mengunjungi situs web Anda, permintaan segera dikirim ke database ini, mengambil data yang diminta baik itu postingan atau halaman untuk ditampilkan di layar Anda.

Namun Anda pasti terkejut mengetahui bahwa dengan bantuan WP_Query, Anda dapat membuat kueri yang dapat membantu Anda mengambil informasi spesifik dari database Anda. Jadi, setiap kali seseorang mencari konten Anda, WordPress menggunakan kelas bawaan ini.

Tidak diragukan lagi, Anda masih dapat menggunakan SQL untuk menulis semua kueri ini, tetapi ini cukup sulit dan bukan cara termudah untuk melakukannya. Di sisi lain, WP_Query jauh lebih mudah.

WP_Query sangat membantu sehingga Anda dapat membuat kueri khusus untuk menampilkan konten tertentu di situs web Anda tanpa pengunjung harus mencarinya.

Singkatnya, WP_Query adalah alat yang memudahkan pengembang mengontrol konten apa yang ditampilkan di situs WordPress dan tampilannya, tanpa perlu menulis kode rumit.

Misalkan Anda membuat jenis konten khusus di WordPress yang disebut “blog”. Untuk menampilkan postingan “blog” ini di situs Anda, Anda dapat menulis kueri khusus menggunakan WP_Query.

// WP QUERY
$query = new WP_Query([
'post_type' => 'blog', // Type of content
'posts_per_page' => 6, // Number of posts to show
'category_name' => 'Entertainment' // Category filter
]);

Sekarang untuk menampilkan Query yang diminta, WP_Query menyediakan pintasan dan fungsi bawaan yang membantu Anda menyesuaikan Loop. Loop adalah sedikit kode PHP yang digunakan WordPress untuk menampilkan postingan pada suatu halaman.

WordPress memproses dan memformat setiap postingan sesuai dengan kriteria yang Anda tetapkan di WP_Query (seperti jenis postingan, jumlah postingan, dan kategori).

Alat canggih ini membantu pengembang dengan mudah menyesuaikan cara tema WordPress menampilkan konten tanpa harus menulis kueri database yang rumit


WPOven Dedicated Hosting

Bagaimana Anda bisa memanfaatkan WP_Query?

Sekarang Anda tahu apa itu WP_Query dan apa sebenarnya fungsinya. Mari kita periksa berbagai skenario kasus di mana Anda dapat memanfaatkan alat canggih ini.

1. Buat Lingkaran di WP_Query

Pertama, Anda harus memahami apa itu Loop. Ini adalah bagian dari WordPress yang sangat responsif untuk mengambil data posting dari data dan menampilkannya di situs web Anda. Ini terutama berfokus pada menentukan bagaimana konten Anda terlihat berdasarkan template tema Anda.

Apa yang Dapat Ditunjukkan Loop di situs web?

Tergantung pada pengaturan yang Anda pilih, Loop dapat menampilkan:

  • Jenis posting khusus dan bidang khusus
  • Posting judul dan deskripsi singkat di beranda Anda
  • Konten dan komentar satu postingan
  • Konten halaman individual menggunakan tag template

Untuk pemahaman Anda yang lebih baik, di bawah ini adalah struktur sederhana dari Loop.

Contoh Loop Dasar

<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// Display post content
endwhile;
endif;
?>

  • Di sini, fungsi have_posts() memeriksa apakah ada postingan yang tersedia.
  • while ( have_posts() ) : the_post(); : Jika ada postingan, loop ini akan berjalan untuk setiap postingan dan menampilkan kontennya.

Menyesuaikan Loop dengan WP_Query

Terkadang, Anda tidak ingin menampilkan semua postingan Anda. Anda dapat menggunakan WP_Query untuk menyesuaikan apa yang ditampilkan:

<?php
// The Query
$the_query = new WP_Query( $args );

// The Loop
if ( $the_query->have_posts() ) {
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>' . get_the_title() . '</li>';
}
echo '</ul>';
} else {
// No posts found
}
/* Restore original Post Data */
wp_reset_postdata();
?>

Cara Kerja Loop Kustom Ini

  • Menyiapkan Kueri : $the_query = new WP_Query( $args ); membuat kueri khusus berdasarkan parameter yang Anda tetapkan (seperti jenis posting, kategori, dll.).
  • Menjalankan Loop : if ( $the_query->have_posts() ) { ... } memeriksa apakah ada postingan yang cocok dengan kueri Anda. Jika ada, judul setiap postingan akan ditampilkan dalam daftar.
  • Menyetel Ulang Data Postingan : wp_reset_postdata(); memastikan bahwa data postingan asli dipulihkan setelah loop kustom berjalan.

Opsi Kustomisasi

Dengan WP_Query, Anda dapat:

  • Tampilkan postingan dari kategori, penulis, atau rentang tanggal tertentu
  • Tampilkan postingan dengan tag atau kolom khusus tertentu

2. Argumen WP_Query

Saat Anda ingin mendapatkan postingan tertentu dari situs WordPress Anda, Anda perlu membuat WP_Query dan untuk itu, Anda perlu menyertakan empat bagian dasar:

  • Argumen Kueri : Memberi tahu WordPress data apa yang akan diambil.
  • Query : Menggunakan argumen untuk mengambil data.
  • The Loop : Memproses dan menampilkan setiap postingan.
  • Post Data Reset : Mereset data setelah loop berjalan.

Namun salah satu komponen paling penting dari WP_Query adalah argumen (sering disebut WP_Query args) yang bertanggung jawab untuk mengekstraksi postingan tertentu yang ingin Anda dapatkan dari database.

Sangat penting bahwa alih-alih menampilkan semua postingan, argumen menetapkan kondisi untuk hanya menampilkan postingan tertentu.

Contoh Argumen

  • Baris $args : Di sinilah Anda memasukkan argumen kueri Anda.
  • Struktur : Anda memasukkan parameter tertentu ke dalam array. Berikut ini contoh dasarnya,

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

Contoh Spesifik

Jika Anda ingin menampilkan postingan dengan tag 'Kesalahan WordPress', Anda dapat menyiapkan argumen kueri seperti ini:

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

Mengapa Argumen itu Penting

  • Tanpa Argumen, Tanpa Konten : Jika Anda tidak menyertakan argumen WP_Query, WordPress tidak akan mengetahui postingan mana yang akan ditampilkan. Kueri Anda tidak akan mengambil konten apa pun dari database.

3. Tetapkan parameter WP_query

Parameter adalah sesuatu yang membuat WP_Query berguna dan kuat. Dengan beragamnya yang tersedia, menjadi mudah bagi siapa saja untuk memfilter pencarian database.

Misalnya, ketika Anda ingin menampilkan postingan tertentu di situs WordPress Anda, Anda menggunakan WP_Query dan untuk memastikan Anda mendapatkan postingan yang tepat, Anda dapat mengatur parameter. Anda mungkin memiliki pertanyaan lain di benak Anda. Apa Parameternya?

Parameternya seperti instruksi yang memberi tahu WordPress jenis postingan apa yang akan diambil dari database.

Contoh Parameter Umum

Berikut beberapa parameter umum yang dapat Anda gunakan:

  • cat : Menampilkan postingan dari kategori tertentu.
  • author : Menampilkan postingan oleh satu atau lebih penulis tertentu.
  • post_status : Menampilkan postingan yang sedang berlangsung, dijadwalkan, diterbitkan, atau dihapus.
  • orderby : Mengurutkan postingan berdasarkan penulis, jenis postingan, tanggal, dll.
  • posts_per_page : Mengatur jumlah postingan yang akan ditampilkan.
  • tag : Menampilkan postingan dengan tag tertentu.
  • order : Mengurutkan postingan dalam urutan menaik atau menurun.
  • post_type : Menentukan apakah akan menampilkan postingan, halaman, atau jenis postingan khusus.

Cara Menggunakan Parameter

Jika Anda ingin menampilkan postingan dari kategori tertentu, Anda dapat menggunakan parameter category_name . Berikut ini contohnya:

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

Ini akan menampilkan semua postingan dalam kategori “staf” dan subkategori apa pun.

Contoh yang Lebih Kompleks

Dalam contoh ini, kami mendemonstrasikan bagaimana Anda dapat memanfaatkan beberapa nilai dalam argumen berbeda untuk membuat kueri yang kompleks dan disesuaikan guna mengambil postingan persis seperti yang Anda inginkan.

Kami akan mengambil postingan yang berada dalam kategori tertentu, memiliki tag tertentu, ditulis oleh penulis tertentu, dan diurutkan berdasarkan tanggal dalam urutan menurun.

$args = array(
'category__in' => array(5, 10), // Categories with IDs 5 and 10
'tag__in' => array('featured', 'popular'), // Posts tagged with 'featured' or 'popular'
'author__in' => array(1, 2), // Authors with IDs 1 and 2
'orderby' => 'date', // Order by date
'order' => 'DESC', // In descending order
'posts_per_page' => 10 // Limit to 10 posts
);

$query = new WP_Query($args);

// The Loop
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
// Display post content
the_title('<h2>', '</h2>');
the_excerpt();
}
} else {
// No posts found
echo 'No posts found';
}

// Restore original Post Data
wp_reset_postdata();

  • kategori__in : Membantu menentukan apakah kita menginginkan postingan dari kategori dengan ID 5 dan 10.
  • tag__in : Menentukan bahwa kita ingin postingan diberi tag dengan 'unggulan' atau 'populer'.
  • author__in : Menentukan bahwa kita menginginkan postingan oleh penulis dengan ID 1 dan 2.
  • orderby : Menentukan bahwa kita ingin mengurutkan postingan berdasarkan tanggal penerbitannya.
  • order : Menentukan bahwa kita ingin postingan dalam urutan menurun (yang terbaru terlebih dahulu).
  • posts_per_page : Membatasi jumlah postingan yang diambil hingga 10.

4. Memodifikasi Objek dengan Metode dan Properti Kelas

Di WordPress, WP_Query adalah kelas PHP khusus yang digunakan untuk mengambil postingan dari database. Anggap saja sebagai alat yang membantu Anda mendapatkan postingan tepat yang ingin Anda tampilkan di situs web Anda.

Apa Itu Properti dan Metode Kelas?

Dalam PHP, suatu kelas dapat memiliki properti (seperti variabel) dan metode (seperti fungsi). Berikut cara sederhana untuk memahaminya:

  • Properti : Ini seperti wadah yang menyimpan informasi. Dalam konteks WP_Query , properti mungkin menyertakan hal-hal seperti daftar postingan atau jumlah postingan yang ditemukan.
  • Metode : Ini seperti alat atau tindakan yang dapat Anda lakukan. Di WP_Query , metode dapat membantu Anda memeriksa apakah ada postingan, mendapatkan judul postingan, atau menyetel ulang kueri.

Bisakah Anda Mengubah Properti Secara Langsung?

Tidak, Anda tidak dapat mengubah properti secara langsung, bahkan Pengembang juga sangat tidak menyarankan hal ini, Namun Anda dapat menggunakan Metode sebagai alternatif.

Metode sama seperti alat atau perintah resmi yang membantu Anda mengikuti cara yang benar. Inilah yang berfungsi seperti fungsinya, ketika Anda membuat perubahan tertentu dalam metode WP_Query, Anda juga dapat menyesuaikan data yang diambil.

Contoh Penggunaan Metode di WP_Query

Dalam contoh ini, fungsi reset_postdata() dapat menjadi langkah penting dalam menulis WP_Query Anda. Metode ini akan mengatur ulang properti untuk $current_post dan $post.

<?php
// Create a new query with specific arguments
$the_query = new WP_Query(array(
'post_type' => 'post',
'posts_per_page' => 5,
'category_name' => 'news',
));
?>

<?php if ($the_query->have_posts()) : ?>
<!-- Display the posts -->
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<p><?php the_excerpt(); ?></p>
<?php endwhile; ?>
<!-- Reset the post data to avoid conflicts -->
<?php wp_reset_postdata(); ?>
<?php else : ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>

Perincian:
  • Membuat Kueri :
    • $the_query = new WP_Query($args); : Ini membuat objek WP_Query baru dengan argumen yang Anda berikan.
  • Memeriksa Postingan :
    • if ($the_query->have_posts()) : Ia memeriksa apakah ada postingan yang akan ditampilkan berdasarkan kueri Anda.
  • Mengulangi Postingan :
    • while ($the_query->have_posts()) : $the_query->the_post(); : Ini mengatur data kiriman sehingga Anda dapat menampilkannya.
  • Menampilkan Postingan :
    • the_title(); dan the_excerpt(); : Ini menampilkan judul dan kutipan postingan saat ini.
  • Mengatur Ulang Data Posting :
    • wp_reset_postdata(); : Ini menyetel ulang data kiriman global ke kiriman kueri utama. Hal ini penting untuk menghindari mengacaukan bagian lain halaman Anda.

Metode Umum yang Dapat Anda Gunakan

Berikut adalah beberapa metode umum di WP_Query yang dapat Anda gunakan untuk menangani kueri Anda:

  • get_posts :
    • Kegunaan : Mengambil daftar posting.
    • Contoh :phpSalin kode $posts = get_posts(array('category' => 'news'));
  • have_posts :
    • Kegunaan : Memeriksa apakah ada postingan untuk ditampilkan.
    • Contoh :phpSalin kode if ($the_query->have_posts()) { // There are posts to show }
  • the_post :
    • Kegunaan : Mengatur data postingan saat ini.
    • Contoh :phpSalin kode $the_query->the_post();
  • fill_query_vars :
    • Kegunaan : Melengkapi detail kueri yang hilang.
    • Contoh :phpSalin kode $the_query->fill_query_vars($args);

Dengan memberikan WP_Query informasi yang benar, Anda dapat menyesuaikannya untuk melakukan tugas yang berbeda. Metode ini adalah cara yang fleksibel dan aman untuk menyesuaikan properti kelas.


WP_Query Vs query_posts(): Mana yang lebih disukai?

Di bawah ini adalah tabel perbandingan rinci WP_Query vs. query_posts() di WordPress, termasuk beberapa poin utama yang dapat membantu Anda memahami mengapa WP_Query umumnya lebih disukai daripada query_posts() :

Fitur WP_Query permintaan_postingan()
Tujuan Buat kueri khusus untuk mengambil postingan dari database. Ubah kueri utama pada halaman (tidak disarankan untuk penggunaan umum).
Penggunaan Utama Ideal untuk membuat kueri baru dan menampilkan postingan dengan cara khusus. Umumnya digunakan untuk mengubah kueri utama tetapi tidak disarankan.
Penggunaan yang Disarankan Ya, ini adalah cara yang disarankan untuk mengambil dan menampilkan postingan. Tidak, sebaiknya hindari penggunaan fungsi ini di dalam Loop utama, plugin, dan tema.
Efek pada Kueri Utama Tidak mempengaruhi permintaan utama. Anda dapat menjalankan kueri khusus tanpa mengubah Loop utama. Sepenuhnya mengesampingkan kueri utama, yang dapat menyebabkan konflik atau hasil yang tidak diharapkan.
Mengatur Ulang Data Postingan Gunakan wp_reset_postdata() untuk memulihkan kueri asli setelah menjalankan kueri khusus. Tidak ada fungsi yang setara, yang berarti Anda mungkin harus memulihkan data postingan kueri utama secara manual.
Menangani Banyak Pertanyaan Dapat menangani banyak pertanyaan dan dirancang untuk skenario yang kompleks. Hanya menangani satu kueri dan mengubah kueri utama, yang dapat menjadi masalah untuk beberapa kueri.
Dampak Kinerja Umumnya lebih baik untuk kinerja karena tidak mengubah permintaan utama. Bisa jadi kurang efisien dan mungkin menimbulkan masalah karena dampaknya pada kueri utama.
Contoh Kueri Khusus $custom_query = new WP_Query(array('post_type' => 'post', 'posts_per_page' => 5)); query_posts(array('post_type' => 'post', 'posts_per_page' => 5));
Contoh Reset Data <?php wp_reset_postdata(); ?> Tidak ada fungsi reset, reset manual diperlukan jika ada perubahan pada permintaan utama.
Kemudahan penggunaan Mudah digunakan dengan metode dan fungsi bawaan untuk menanyakan postingan dan halaman. Kurang jelas dan dapat menimbulkan masalah jika tidak digunakan dengan hati-hati.
WP_Query Vs query_posts()

WPOven Dedicated Hosting

Beberapa Contoh Penggunaan WP_Query

Untuk lebih memahami WP_Query dan penggunaan praktisnya, lihat beberapa Contoh yang diberikan di bawah ini:

1. Tampilkan Postingan Terbaru yang Diterbitkan Minggu Ini

Jika Anda memiliki basis pengguna yang baik atau jumlah lalu lintas web yang layak, itu berarti pengunjung Anda menyukai konten Anda dan ingin membaca artikel terbaru yang dipublikasikan di situs Anda.

Saat mendesain situs web Anda, Anda dapat menampilkan postingan terbaru di bagian khusus halaman web. Untungnya, dengan WP_Query, Anda dapat dengan mudah menemukan postingan berdasarkan parameter tanggal. Mari kita lihat caranya.

<?php
$arguments = array(
"date_query" => array(
array(
"year" => date( "Y" ),
"week" => date( "W" ),
)
)
);
$posts = new WP_Query($arguments);
?>

Dalam contoh ini, kami membuat WP_Query untuk menemukan postingan yang diterbitkan pada minggu ini. Kami menggunakan bagian khusus dari WP_Query yang disebut date_query untuk menentukan kriteria pencarian kami.

Tujuan utama dari kueri ini adalah untuk menemukan postingan yang diterbitkan selama minggu ini. Dan untuk itu, kami menggunakan parameter date_query untuk mencari postingan berdasarkan tanggal. Dibutuhkan serangkaian argumen terkait tanggal.

Jadi, saat Anda menyesuaikan parameter date_query , Anda dapat mengambil dan menampilkan postingan yang baru saja diterbitkan. Namun, Anda juga bebas menentukan nilai khusus untuk membuat kueri lebih efektif dan untuk menyorot artikel terbaru yang ditulis dalam seminggu terakhir.


2. Tampilkan Postingan Terbaru dalam Kategori Tertentu

Pengunjung situs web Anda mungkin sering mencari informasi terbaru dan untuk meningkatkan keterlibatan serta tampilan halaman, praktik yang baik adalah menyarankan beberapa postingan terkait lainnya yang mungkin mereka sukai.

Meskipun ada banyak cara untuk menautkan posting terkait di WordPress, WP_Query adalah salah satu cara efisien untuk melakukan ini. Terutama cara yang bagus untuk situs web yang selalu memposting konten terkini.

Misalnya, jika seseorang membaca artikel tentang Kesalahan WordPress, WP_Query dapat membantu menampilkan artikel lain yang serupa dan terbaru.

Jadi, jika Anda ingin mengambil postingan terbaru dalam kategori tertentu, gunakan WP_query ini, dan lakukan sedikit pengeditan yang menyertakan informasi situs Anda:

<?php

// Get the current post id.
$current_post_id = get_the_ID();

// Get the current post's category (first one if there's more than one).
$current_post_cats = get_the_category();
$current_post_first_cat_id = $current_post_cats[ 0 ]->term_id;

// Setup arguments.
$args = array(
// Get category's posts.
'cat' => $current_post_first_cat_id,
// Exclude current post.
'post__not_in' => array( $current_post_id )
);

// Instantiate new query instance.
$my_query = new WP_Query( $args );

?>


3. Tampilkan postingan dari Penulis yang Sama dan dalam Kategori yang sama

Kemungkinan besar jika pengunjung menyukai konten Anda, mereka mungkin menyukai pandangan penulis, gaya penulisan, dan persepsinya.

Untuk ini, Anda dapat menggunakan WP_Query untuk menyarankan pembaca Anda postingan serupa yang ditulis oleh penulis yang sama. Kueri akan mencari postingan yang ditulis oleh penulis yang sama untuk kategori yang sama dengan postingan saat ini.

Untuk ini, kita harus membuat string WP_Query tertentu, yang akan mencari postingan dengan penulis serupa dan kategori yang sama.

Ini kodenya:

<?php
$arguments = array(
"author_name" => "Rahul",
"category_name" => "WordPress",
"posts_per_page" => 3,
);
$posts = new WP_Query($arguments);
?>

Pada kode di atas, Anda perlu mengganti “Rahul” dengan nama penulis dan “WordPress” dengan nama kategori.


4. Tampilkan Postingan Anda yang paling populer

Sama seperti postingan Terkini atau Terkini yang Anda tampilkan kepada pembaca Anda. Anda mungkin juga ingin menampilkan postingan tentang topik yang disukai dan banyak dilibatkan oleh pembaca Anda. Untuk mencapai hal ini, Anda dapat menggunakan parameter orderby dan meneruskannya ke argumen comment_count .

<?php
$arguments = array(
"category_name" => "WordPress Errors",
"orderby" => "comment_count",
"posts_per_page" => 5,
);
$posts = new WP_Query($arguments);
?>

WP_Query di atas akan mencari postingan dalam kategori “Kesalahan WordPress” dan memfilter hasilnya berdasarkan jumlah komentar yang dimiliki setiap postingan.

Outputnya akan menampilkan lima postingan dengan komentar terbanyak, dalam urutan menurun dari kiri ke kanan, dimulai dengan postingan dengan keterlibatan tertinggi dan diakhiri dengan yang terendah.


Kesimpulan

Sekarang Anda telah menyaksikan, betapa kuatnya WP_Query dan bagaimana memudahkan Anda melakukan permintaan database di WordPress. Juga, memberi Anda fleksibilitas untuk menyesuaikan situs Anda dan memberikan pengalaman unik bagi pengunjung.

Untuk menggunakan WP_Query, Anda dapat:

  • Buat Lingkaran: Tampilkan postingan Anda.
  • Gunakan Argumen Kueri: Sesuaikan pencarian Anda.
  • Tetapkan Parameter Tertentu: Filter hasil Anda.
  • Ubah Properti Kelas: Sesuaikan hasil kueri dengan metode.

Jika Anda telah menguasai semua teknik ini, Anda akan dapat dengan mudah merekomendasikan postingan tertentu berdasarkan berbagai faktor seperti popularitas dan tanggal.

Teknik ini membantu meningkatkan keterlibatan pengguna, meningkatkan pengalaman pengguna, dan juga membantu pengunjung setia Anda untuk menemukan konten yang lebih relevan.

Jika Anda masih ragu tentang WP_Query atau ingin menambahkan lebih banyak konten yang mungkin kami lewatkan. Silakan beri tahu kami di bagian komentar di bawah.