Kerusakan Cepat
- query_posts - jangan gunakan kecuali dalam kasus tepi langka
- pre_get_posts - gunakan jika Anda ingin mengubah kueri default pada halaman
- WP_Query baru - gunakan untuk mendapatkan hasil yang berbeda dari permintaan utama
- get_posts - sama seperti WP_Query, sebagai gantinya hanya mengembalikan hasil dalam format array
query_posts
Menggunakan query_posts tidak direkomendasikan lagi. Ada cara yang lebih baik untuk mencapai apa yang ingin Anda capai. Mencoba mengubah kueri utama? Gunakan tindakan pre_get_posts untuk memfilter hasil (lihat di bawah). query_posts melemparkan kueri utama asli ke samping (setelah dijalankan), dan membuat kueri utama baru. Ini menggantikan semua variabel global terkait posting, dan menghasilkan panggilan database yang sama sekali baru. Sama sekali tidak ada alasan Anda tidak boleh hanya mengubah permintaan yang ada. Saya yakin ada beberapa kasus tepi di mana itu harus digunakan, tetapi saya tidak dapat memikirkan apapun di bagian atas kepala saya. Gunakan salah satu opsi di bawah ini, karena kemungkinan besar akan lebih cocok.
pre_get_posts
Ini adalah filter. Ini mengubah kueri utama ke halaman. Jadi, misalnya, kami ingin mengubah jumlah hasil yang dikembalikan di beranda …
function tj_change_home_number ($ query) {if (is_home ()) {$ query-> set ('posts_per_page', 2); kembali; }} add_action ('pre_get_posts', 'tj_change_home_number');
Ini akan mengubah permintaan utama untuk hanya mengembalikan 2 posting di beranda.
WP_Query
Kueri utama pada templat apa pun yang dipanggil adalah turunan dari WP_Query . Saat Anda berinteraksi dengan variabel pos global di dalam templat, itu adalah hasil WP_Query . Kasus penggunaan untuk ini banyak, tetapi seperti halnya get_posts, saya akan mendeklarasikan WP_Query baru untuk tujuan menarik posting terkait, sesuatu di sepanjang baris tersebut. Hanya perlu diingat bahwa jika Anda menjalankan fungsi the_post () saat perulangan melalui WP_Query baru, jalankan fungsi wp_reset_postdata () setelah Anda selesai melakukan perulangan untuk mengatur ulang data pos global ke kueri utama asli.
get_posts
Dengan menggunakan get_posts, Anda sebenarnya memanggil WP_Query baru, dan mendapatkan informasi itu dikembalikan dalam format array. Saya biasanya akan menggunakan get_posts ketika saya mengembalikan posting untuk slider di beranda, atau memanggil beberapa posting terkait di sidebar. WP_Query dapat dengan mudah digunakan, tetapi ini adalah cara yang baik untuk menerima array posting tanpa memodifikasi variabel posting global. Dalam pandangan saya ini yang paling sederhana dan termudah untuk digunakan. Tidak ada panggilan fungsi yang diperlukan setelah data Anda dikembalikan, hanya perulangan melalui array.
Ini bisa sedikit membingungkan, jadi silakan bertanya di komentar di bawah.
Referensi:
WP_Query
pre_get_posts
query_posts
get_posts
