Saya pikir sekarang saya mengerti apa yang Anda coba lakukan. Ketika Anda menjalankan kueri khusus dengan WP_Query
dan menetapkan batas untuk hanya mendapatkan 5 posting per halaman, hanya 5 posting yang akan diambil oleh kueri dan permintaan itu hanya akan menampung 5 posting, TAPI demi pagination, WP_Query
masih berjalan melalui seluruh database dan menghitung semua pos yang cocok dengan kriteria kueri.
Itu bisa dilihat saat Anda melihat $found_posts
dan $max_num_pages
properti kueri. Mari kita ambil contoh:
Anda memiliki 20 pos yang termasuk dalam jenis pos standar post
. Anda hanya perlu 5 posting terbaru tanpa pagination. Kueri Anda terlihat seperti ini
$q = new WP_Query( 'posts_per_page=5' );
var_dump( $q->posts )
akan memberi Anda 5 posting terbaru seperti yang diharapkan
echo $q->found_posts
akan memberimu 20
echo $q->max_num_pages
akan memberimu 4
Dampak dari pekerjaan ekstra ini sangat kecil di situs dengan hanya beberapa posting, tetapi ini bisa mahal jika Anda menjalankan situs dengan ratusan atau ribuan posting. Ini adalah pemborosan sumber daya jika Anda hanya akan membutuhkan 5 posting terbaru
Ada parameter tidak berdokumen yang disebut no_found_rows
yang menggunakan nilai boolean yang dapat Anda gunakan untuk membuat jaminan permintaan Anda setelah ditemukan 5 posting yang Anda butuhkan. Ini akan memaksa WP_Query
untuk tidak mencari lagi posting yang menghitung kriteria setelah telah mengambil jumlah posting yang ditanyakan. Parameter ini sudah dibangun ke dalam get_posts
, itu sebabnya get_posts
sedikit lebih cepat daripada menggunakan WP_Query
meskipunget_posts
WP_Query
Kesimpulan
Sebagai kesimpulan, jika Anda tidak akan menggunakan pagination pada sebuah query, selalu bijaksana untuk melakukan 'no_found_rows=true'
query untuk mempercepat dan menghemat sumber daya yang terbuang.
'posts_per_page=5'