Anonim

Hızlı Arıza

  • query_posts - En nadir görülen durumlar dışında kullanmayın
  • pre_get_posts - Bir sayfadaki varsayılan sorguyu değiştirmek istiyorsanız kullanın
  • Yeni WP_Query - ana sorgudan farklı sonuçlar almak için kullanın
  • get_posts - WP_Query ile aynı, sadece bunun yerine dizi biçiminde sonuçları döndürür
  • query_posts

    Query_posts kullanmak artık tavsiye edilmiyor. Başarmaya çalıştığın şeyi başarmanın daha iyi yolları var. Ana sorguyu değiştirmeye mi çalışıyorsun? Sonuçları filtrelemek için pre_get_posts eylemini kullanın (aşağıya bakın). query_posts, orijinal ana sorguyu (daha önce çalıştırıldıktan sonra) kenara atar ve yeni bir ana sorgu oluşturur. Tüm gönderi ile ilgili global değişkenleri değiştirir ve tamamen yeni bir veritabanı çağrısına neden olur. Sadece mevcut sorguyu değiştirmemeniz için hiçbir sebep yok. Kullanılması gereken bazı uç vakalar olduğundan eminim, ama başımın üstünden hiçbir şey düşünemiyorum. Büyük olasılıkla daha uygun olacağından, aşağıdaki seçeneklerden birini kullanın.

    pre_get_posts

    Bu bir filtredir. Bu, ana sorguyu bir sayfaya değiştirir. Örneğin, ana sayfada döndürülen sonuç sayısını değiştirmek istiyoruz…

işlevi tj_change_home_number ($ query) {if (is_home ()) {$ query-> set ('posts_per_page', 2); dönüş; }} add_action ('pre_get_posts', 'tj_change_home_number');

Bu, ana sorguyu sadece ana sayfada 2 yazı döndürecek şekilde değiştirir.

WP_Query

Herhangi bir şablondaki ana sorgu, WP_Query örneğidir. Bir şablondaki global gönderi değişkenleriyle etkileşime girdiğinizde, bu WP_Query'nin sonucudur. Bunun için kullanım durumları çoktur, ancak get_posts'ta olduğu gibi, ilgili satırları çekmek için ilgili postaları çekmek amacıyla yeni bir WP_Query ilan ederim. Yeni bir WP_Query'de döngü yaparken the_post () işlevini çalıştırırsanız, genel gönderi verilerini orijinal ana sorguya sıfırlamak için döngü oluşturduktan sonra wp_reset_postdata () işlevini çalıştırın.

get_posts

Get_posts'u kullanarak, yeni bir WP_Query'i çağıran ve bu bilgiyi bir dizi biçiminde döndürdüğünüzü açıklarsınız. Genelde, ana sayfadaki bir kaydırıcı için gönderileri döndürürken ya da kenar çubuğundaki bazı ilgili gönderileri çağırırken get_posts kullanacağım. WP_Query kadar kolay kullanılabiliyordu, ancak genel mesaj değişkenlerini değiştirmeden bir mesaj dizisi almanın iyi bir yolu. Benim görüşüme göre en basit ve kullanımı en kolay olanı. Verileriniz döndürüldükten sonra gerekli fonksiyon çağrıları yoktur, sadece bir dizi içinde döngü uygulayabilirsiniz.

Bu biraz kafa karıştırıcı olabilir, bu nedenle aşağıdaki yorumlarda soru sormaktan çekinmeyin.

Referans:
WP_Query
pre_get_posts
query_posts
get_posts

Wp_query vs query_posts vs get_posts vs pre_get_posts arasında