Anonim

Pecahan Pantas

  • query_posts - jangan gunakan kecuali dalam kes kelebihan yang jarang berlaku
  • pre_get_posts - gunakan jika anda ingin menukar pertanyaan lalai pada halaman
  • WP_Query baru - gunakan untuk mendapatkan hasil yang berbeza dari pertanyaan utama
  • get_posts - sama dengan WP_Query, hanya mengembalikan hasil dalam format array sebaliknya
  • query_posts

    Menggunakan pertanyaan_posts tidak disyorkan lagi. Terdapat cara yang lebih baik untuk mencapai apa yang anda cuba capai. Cuba mengubah permintaan utama? Gunakan tindakan pre_get_posts untuk menapis hasil (lihat di bawah). query_posts melemparkan pertanyaan utama asal ke sisi (selepas ia telah dijalankan), dan membuat pertanyaan utama yang baru. Ia menggantikan semua pembolehubah global berkaitan pasca, dan menghasilkan panggilan pangkalan data yang baru. Tidak semestinya ada sebab anda tidak perlu mengubah permintaan yang ada sekarang. Saya yakin terdapat beberapa kes kelebihan di mana ia harus digunakan, tetapi saya tidak boleh memikirkan apa-apa dari bahagian atas kepala saya. Gunakan salah satu pilihan di bawah, kerana mereka lebih mungkin akan lebih sesuai.

    pre_get_posts

    Ini penapis. Ini mengubah pertanyaan utama ke halaman. Jadi, sebagai contoh, kami mahu mengubah bilangan hasil yang dikembalikan di halaman utama …

fungsi 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 pertanyaan utama untuk hanya kembali 2 catatan pada halaman utama.

WP_Query

Pertanyaan utama pada mana-mana templat yang dipanggil adalah contoh WP_Query . Apabila anda berinteraksi dengan pemboleh ubah siaran global dalam templat, itu adalah hasil daripada WP_Query . Kes penggunaan untuk ini banyak, tetapi seperti dengan get_posts, saya akan mengisytiharkan WP_Query baru untuk tujuan menarik jawatan berkaitan, sesuatu di sepanjang baris tersebut. Ingatlah bahawa jika anda menjalankan fungsi the_post () sambil melingkari WP_Query baru, jalankan fungsi wp_reset_postdata () setelah anda selesai mengunci untuk menetapkan semula data pos global kepada pertanyaan utama yang asal.

get_posts

Dengan menggunakan get_posts, anda berkuat kuasa memanggil WP_Query baru, dan mendapat maklumat yang dikembalikan dalam format array. Saya biasanya akan menggunakan get_posts apabila saya mengembalikan jawatan untuk slider di laman utama, atau memanggil beberapa jawatan berkaitan dalam sidebar. WP_Query hanya dapat digunakan dengan mudah, tetapi cara yang baik untuk menerima pelbagai jawatan tanpa mengubah pemboleh ubah pos global. Pada pandangan saya, yang paling mudah dan paling mudah digunakan. Tiada panggilan fungsi yang diperlukan selepas data anda dikembalikan, hanya melalui satu array.

Ini boleh menjadi sedikit mengelirukan, jadi jangan ragu untuk bertanya soalan di bawah.

Rujukan:
WP_Query
pre_get_posts
query_posts
get_posts

Wp_query vs query_posts vs get_posts vs pre_get_posts