WP_Query vs query_posts vs get_posts vs pre_get_posts

Perincian Cepat

  • query_posts - jangan gunakan kecuali dalam kasus tepi langka
  • pre_get_posts - gunakan jika Anda ingin mengubah kueri default pada suatu halaman
  • WP_Query baru - gunakan untuk mendapatkan hasil yang berbeda dari kueri utama
  • get_posts - sama seperti WP_Query, hanya mengembalikan hasil dalam format array
  • query_posts

    Menggunakan query_posts tidak disarankan 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 melempar kueri utama asli ke samping (setelah itu telah dijalankan), dan membuat kueri utama baru. Ini menggantikan semua variabel global yang terkait dengan posting, dan menghasilkan panggilan database yang benar-benar baru. Tidak ada alasan Anda tidak seharusnya mengubah kueri yang ada. Saya yakin ada beberapa kasus tepi di mana itu harus digunakan, tapi saya tidak bisa memikirkan apapun dari atas kepala saya. Gunakan salah satu opsi di bawah ini, karena kemungkinan besar akan lebih cocok.

    pre_get_posts

    Ini adalah filter. Ini memodifikasi permintaan utama ke halaman. Jadi, misalnya, kami ingin mengubah jumlah hasil yang ditampilkan 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 kueri utama agar hanya mengembalikan 2 entri di beranda.

    WP_Query

    Query utama pada sembarang template yang dipanggil adalah instance dari WP_Query . Ketika Anda berinteraksi dengan variabel posting global dalam template, itu adalah hasil dari WP_Query . Kasus penggunaan untuk ini banyak, tetapi seperti halnya dengan get_posts, saya akan menyatakan WP_Query baru untuk tujuan menarik posting terkait, sesuatu di sepanjang baris tersebut. Hanya perlu diingat bahwa jika Anda menjalankan fungsi the_post () saat mengulang melalui WP_Query baru, jalankan fungsi wp_reset_postdata () setelah Anda selesai melakukan perulangan untuk mereset data posting global ke kueri utama asli.

    get_posts

    Dengan menggunakan get_posts, Anda berlaku memanggil WP_Query baru, dan mendapatkan informasi yang dikembalikan dalam format array. Saya biasanya akan menggunakan get_posts ketika saya mengembalikan posting untuk slider di homepage, atau memanggil beberapa posting terkait di sidebar. WP_Query bisa dengan mudah digunakan, tetapi itu cara yang baik untuk menerima berbagai posting tanpa memodifikasi variabel posting global. Menurut saya, ini yang paling sederhana dan mudah digunakan. Tidak ada panggilan fungsi yang diperlukan setelah data Anda dikembalikan, cukup dengan mengulang melalui larik.

    Ini bisa sedikit membingungkan, jadi silakan mengajukan pertanyaan di komentar di bawah.

    Referensi:
    WP_Query
    pre_get_posts
    query_posts
    get_posts

Lihat Juga