WordPress Geliştirme için Doğru Sorguyu Seçme
Web sitenizin belirli bir sayfasında sorulan ve görüntülenerek göndererek benzersiz bir şey yapmak istediğinizi varsayalım. Belki birkaç soruya sahip olmak istersiniz – biri üstün ve en son gönderi için bir gönderi için. Ya da belki belirli bir yayın kategorisini blog sayfanızdan hariç tutmak istersiniz. Hedefiniz ne olursa olsun, biraz farklı bir şey yapan bir kuyrukla özel bir sayfa şablonu yapmaya karar verirsiniz. Ancak, kodu yapmaya başlamadan önce bir karar vermelisiniz: Hangi WordPress Queri Aracını kullanmalısınız? WordPress birkaç farklı kuyruk içeriyor: wp_query, query_posts (), get_posts (), get_pages () ve pre_get_posts. Birçok durumda, istenen sonuçları elde etmek için bu araçlardan birden fazlasını kullanabilirsiniz. Ancak, soru hala, hangisini kullanmalısınız?
Bu yazıda bu beş WordPress sorgu işlevinin her birini ayrıntılı olarak göreceğiz. Her çalışmanın nasıl olduğunu öğreneceğiz, doğasında olan sınırları veya tuzakları nasıl belirleyeceğiz ve her birinin kullanılması gereken senaryoyu belirleyeceğiz. Bu yazının sonunda, gönderinizin ihtiyaçları için doğru araçlar hakkında eğitimli kararlar verebileceğinizi bileceksiniz. Hadi devam edelim. WP_Query WP_Query (neredeyse) her WordPress sorgusunun arkasındaki bir sınıftır. WordPress, WP_Query Nesneleri, $ sorgusu, oluşturulan ve ilgili yayın veya sayfaları çizin. WordPress sorgularının çoğunu hareket ettiren bir makine olarak WP_Query’yi düşünün.
WP_Query kullandığınızı fark etmeden bile kullanıyorsunuz. URL’yi yüklediğinizde, WordPress’in çekirdeği, URL’ye ve web sitenize uyguladığınız ayarlara göre WP_Query ile bir veritabanı sorgusu yapar. Dolayısıyla, http://example.com/category/wordpress gibi URL’lerle sayfalara erişirseniz, WordPress tüm yayınları WordPress kategorisine yerleştiren ve tüm yayın verilerini içerir. WP_Query, WordPress’teki standart yayınları ve sayfaları destekler ve özel sorgular yapmak için de kullanılabilir. Bu, küçük bir nesne yönelimli programlama ile yapılır. Tek yapmanız gereken yeni bir değişken oluşturmak ve WP_Query sınıfının yeni bir örneği olarak bildirmek, bunun gibi: jpen365/dc83c6eaf8b76343b4af18a5c81ab621’in özünü sevmek
Tabii ki, kuyruğun sonuçlarıyla bir şeyler yapmanız gerekir. Ancak bu, bu öğreticinin kapsamı dışında olan bir şeydir. Bunun yerine, wp_query uygulamak için yardıma ihtiyacınız varsa, bu yazının sonundaki öğreticilerin listesine bakın. Bir WordPress geliştiricisi olarak, WP_Query’yi diğer işlevlerden veya kancalardan daha sık kullanabilirsiniz. Bu çok yönlü ve güçlü. Bu yayında yer alan diğer bazı sorular bazı durumlarda bazı düğmeler vurgu yapabilse de, genel olarak, özel sorgu yazmanızın ihtiyaçları için yanlış wp_query’yi seçemezsiniz.
Bunun tek istisnası, yalnızca standart sorguları filtrelemeniz gereken bir durumdur. Bu durumda, pre_get_posts kullanmanız gereken bir araçtır. Öyleyse bir sonrakine bakalım. pre_get_posts pre_get_posts bir fonksiyon değil, bir kanca. Pre_get_posts veritabanı yerine, pre_get_posts, veritabanı kullanılmadan önce $ sorgu nesnesini değiştirmenize olanak tanır – standart kuyruk tarafından döndürülen sonuçları etkili bir şekilde filtreleyin. Çoğu durumda, pre_get_postlar, belirli durumlarda sorguların sonuçlarını filtrelemek için koşullu etiketlerle eşleştirilir. Örneğin, site ana sayfasındaki farklı sayıda yayını geri yüklemek için pre_get_posts kullanabilirsiniz. Özünde, standart bir sorgu çalıştırmak, ancak belirli bir şekilde değiştirmek istiyorsanız, pre_get_posts iş için bir araçtır. Pre_get_postların çalışmayacağı ve kullanılmaması gereken bazı örnekler vardır. Codex WordPress bunun gibi iki örnek önerir:
Pre_get_posts filtresi, bir sayfa için şablondaki kuyruğu değiştirmek için kullanılmamalıdır, çünkü parse_query () tarafından ayarlanan özelliğe müdahale edecektir.
Pre_get_posts filtresi, archive.php gibi şablon dosyasına eklenirse işlev görmez, çünkü bu dosya ana sorgu çalıştırıldıktan sonra yüklenir.
Bizi nerede bıraktı? Pre_get_posts, ana sayfanın ana döngülerine, blog sayfalarına ve page.php ve single.php gibi tek tek sayfalara gönderilen sorguları değiştirmek için doğru seçimdir.
Bununla birlikte, bazen standart kuyruğu filtrelemek yeterli değildir. Belki bazı WordPress sorguları kullanmak veya kuyruğun sonuçlarını pre_get_posts tarafından izin verilmeyecek şekilde değiştirmek istersiniz. Bu durumda, wp_query’ye dönebilir veya bazı ek seçenekler okuyabilirsiniz. Query_posts () Birkaç yıl önce WordPress öğreticileri arıyorsanız, Query_Posts () ‘nın kullanımını öneren birçok öğretici bulacaksınız. Ancak, modern öğreticiler bunu neredeyse evrensel olarak tavsiye eder. Sebep bu. Query_posts () işlevi, WordPress çekirdeği tarafından yapılan varsayılan döngü tarafından yapılan ve kullanılan ana sorgular, $ query’nin yerini alır. Bu, yeni bir WP_Query örneği oluşturarak ve $ Query nesnesine atayarak yapılır. Query_posts () gerçekten güçlü ve kullanışlı gibi görünebilir. Bununla birlikte, çekirdek döngü ile uğraşmak, Query_Posts () ‘nın büyük zayıflıklara sahip olduğu ve önlenmesi gerektiği anlamına gelir. WordPress kodu referansı, çoğu durumda Query_Posts () kullanımından kaçınılmasının birkaç nedenini sunar. Buna verilen ana nedenler şunları içerir:
Query_posts () kullanmak, sorguları işlemek için gereken iş miktarını iki katına çıkararak sayfa açma süresini önemli ölçüde yavaşlatabilir.
Query_posts () standart sorgu verilerinin yerini aldığından, bu, sayfalandırma ile ilgili bir dizi soruna neden olabilir ve birkaç sorgu kullanan sayfalarda felaket getirebilir.
Kısacası, query_posts () kullanımı tehlikeli bir tekliftir. Aslında, resmi belgeler bir uyarı ile açılır: Bu işlev ana sorguları tamamen geçersiz kılacak ve eklentiler veya temalar tarafından kullanılmak üzere tasarlanmayacaktır. Ana sorguları değiştirmek için çok basit yaklaşımı bir sorun olabilir ve mümkün olduğunca kaçınılmalıdır. Başka bir deyişle, temaları veya eklentileri kodlarsanız – tıpkı çoğumuz gibi – Query_Posts () kullanmaktan kaçının. Bunun yerine, bir wp_query nesnesi oluşturun veya bunun yerine get_posts (), get_pages () veya pre_get_posts kullanın. get_posts () Get_posts () işlevini düşünün Bir wp_qury sınıfı örneği önceden değiştirilebilir ve belirlenebilir, çünkü böyle. Get_posts () kullandığınızda, ayarlanan varsayılan değeri etkili bir şekilde çağırırsınız ve bir WP_QUERY sınıfı örneği oluşturmak için kullanırsınız. Bir yandan, get_posts () query_posts () ile çok benzer: her ikisi de wp_query örnekleri önceden belirlenmiş. Bununla birlikte, query_posts () $ sorgusu varsayılan nesne değiştirirken, get_posts () yalnızca query_posts () gibi global değişkenlere müdahale etmeyen tamamen yeni bir sorgu oluşturduğundan çok farklıdırlar.
Peki, get_posts () kullanmanın anlamı nedir? Neden wp_query kullanmıyorsunuz? Cevap konfor. Get_posts () kullanmayı düşünüyorsanız, kesinlikle wp_query ile elde etmek istediğiniz her şeyi başarabilirsiniz. Ancak, get_posts () kullanarak bazı düğmeleri kaydedersiniz. WP_Query ve get_posts () arasında başka farklılıklar da vardır. Yani ikincisi, yazıyı the_post () işleviyle tek tek döndürmek için geçici gönderi dizisini döndürür. Bu, Get_Posts () ‘nin tüm yayınları aynı anda bir dizi olarak döndürdüğü anlamına gelirken, WP_Query, yineleme sırasında her bir yayından ilgili içeriği tek tek tekrarlayan yayınlardan geçer. Pratik olarak, bu, get_posts () kullanırken, sonuçları görüntülemek için forEach işlevini kullandığınız anlamına gelir, ancak yapıyı kullanırsanız … WP_Query kullanırken içeriği yankılayarak döngü. Hatırlanması gereken başka bir şey, get_posts () Nesneleri Değiştir $ Query Global, WP_Query yöntemine ve özelliğine erişmek için her yazı için setup_postdata () kullanmanız gerekir. Kulağa karmaşık gelse bile, aslında değil. Bak:
JPEN365/67592C6E5F70553692A002FEA13DA63F’nin özünü içerir
Böylece küçük bir kod, kaydırıcı kategorisinden dört yayın döndürür (belki de kaydırıcı direğinde görüntülemek için). İlk olarak, kuyruğun IF koduyla ($ slider_posts) bir şey döndürdüğünden, ardından başlığı ve içeriği görüntüleyen yayını izlediğinden emin oluruz. Setup_postdata () kullanarak $ id ve $ authordata ve the_title () ve the_concent () gibi şablon etiketleri gibi global değişkenleri kullanabiliriz. Veri gönderme hazırlamadan, şablonun değişkenlerini ve etiketlerini kullanamayacağız. Get_pages () Çok endişe duymayan kuyruğun işlevlerinden biri get_pages () sorgularıdır. Bir şekilde WP_Query ile ilgili olan bu yazıdaki diğer tüm sorguların aksine, get_pages () wp_query’den geçen ve hemen veritabanını soran bir işlevdir. Get_posts () gibi, bu işlev diziye yerleştirdiği içeriği geri yükler. Bununla birlikte, her türlü yayın türünün (yayınlar, sayfalar, özel yazı türleri vb.) Her gönderisini çekmek için kullanılabilen get_posts () ‘dan farklı olarak, get_pages () yalnızca sayfalar ve türler gibi hiyerarşik yayınları almak için kullanılabilir. özel gönderiler hiyerarşik. Buna ek olarak, get_pages (), ‘child_of’, ‘ebeveyn’ ve ‘hiyerarşik’ dahil olmak üzere hiyerarşik yazı türü için bazı benzersiz sorgu parametrelerini belirlemenize olanak tanır.
. Bu parametreye erişim, bu özel sorguyu kullanmayı düşünebilmenizin ana nedenidir. Teoriyi uygulamaya uygulamak Bu yazıda beş güçlü WordPress sorgusu tanıttık, ancak size nasıl kullanılacağını gerçekten göstermedik. Ancak, geçmişte özel Quents yazma hakkında yazdık ve blogumuzdan bu diğer kaynakları kontrol ederek bu sorguyu temanızda ve eklentinizde nasıl kullanacağınız hakkında daha fazla bilgi edinebilirsiniz:
Wordpress döngü açıklaması
Herhangi bir sırayla bir wordpress gönderisi nasıl ayarlanır
Orta Kullanıcılar İçin WordPress Geliştirme: Perde ve Tekrarlama
WordPress’te özel sorgular yapmak için 5 basit yöntem
Özet Gördüğünüz gibi, WordPress veritabanları isterken seçim seçeneği yoktur. Göstermek istedikleri veritabanı girişini almak için WordPress geliştiricileri tarafından kullanılabilecek en az beş sofistike araç vardır. Kullanılabilir her seçeneği özetleyelim:
WP_Query: WordPress sorgularının çoğunu destekleyen çok amaçlı sınıf. Bu esnektir ve herhangi bir kuyruk yapmak için kullanılabilir.
Pre_get_posts: Veritabanı kullanılmadan önce $ sorgu nesnelerini geliştirmek için kullanılabilecek kancalar, böylece varsayılan sorguyu güvenli bir şekilde değiştirir. Standart sorguları filtrelemek için koşullu etiketlerle birlikte kullanın.
Query_posts (): WP_Query sınıfının Nesnenin yerini alan ve temaların veya eklentilerin geliştirilmesi için tasarlanmayan güçlü örneği. Bunu kullanma.
get_posts (): WP_QUY sınıfından post dizisini döndüren türevler.Bu, bir WP_Query özel örneği oluşturmak yerine bazı düğmeler vurgu kaydetebilecek çeşitli varsayılan değerler içerir, ancak yalnızca varsayılan seçenek ihtiyaçlarınıza uygunsa. Özel hiyerarşik gönderim.
WordPress sorgularını kullanma hakkında sorularınız mı var?Aşağıdaki yorumlar bölümünde paylaşın!
Etiket:
gelişim
WordPress Circle
WP isteği