Wp_query için rehber
Bir WordPress geliştiricisi olarak başladığımda, WordPress gönderme sınıfı WP_Query sayesinde ne olduğunu gerçekten bilmeden önce nesne odaklı PHP ile çalıştım. Makalede, PHP’nin “bileşik” olarak kabul edilen iki veri türüne sahip olduğunu söyledim, yani içindeki verilerin birden fazla kısmını saklayabiliriz. PHP’de nesneler ve diziler, gerçekten birleştirilmiş olarak kabul edilen sadece iki tür veridir. Nesneler dizilere benzer, çünkü verileri depolamak için yapılar sağlarlar, ancak dizilerin aksine, nesneler işlevleri içerebilen sınıf adı verilen bir planla yapılır.
Bu makalede, WP_Query’yi sınıfın ve nesnenin nasıl çalıştığını anlamanın bir yolu olarak göreceğiz. Girmeden önce küçük bir arka plan, sözdizimi ve terminoloji hakkında konuşalım. “Sınıf”, “nesne” ve “örnek” terimlerini iyi anladığınızdan emin olmak önemlidir. Herhangi bir programda, yalnızca bir kez belirli bir ada sahip bir sınıfınız olabilir. WordPress eklentisinde “wp_query” adlı bir sınıf oluşturursam, sınıf belirlendiğinden ölümcül bir hata alacağım. Sınıf aslında bir nesne değil, nesne yapmak için bir kuraldır. İstediğimiz kadar çok wp_query class nesnesi yapabiliriz, ancak her yaptığımızda WP_Query sınıfından yeni bir örnek oluştururuz.
Bu makalenin başında bahsettiğim gibi, her ikisi de başka veri türleri içerebileceği için dizi ve benzer nesneler. Dizi ile dizin veya dizi tuşunu tanımlamak ve erişmek için braket gösterimi kullanırız. Nesnelerle, bir anahtarımız veya dizinimiz yok, bunun yerine mülkümüz var. Mülk, nesnede olmadıkça bir değişken gibi davranır. Örneğin şu sınıfa bakın: Sınıf Say_hai {public $ hello = ‘hi roy’;
} Bu sınıfta, “Merhaba” adlı bir mülkümüz var. Bir değişken gibi görünüyor ve bir değişken gibi davranıyor, ancak yalnızca bir sınıf bağlamında erişilebilir.
“Yeni” anahtar kelimesini ekleyerek bu sınıftan bir nesne örneği oluşturursak, şuna benzer özelliklere erişebiliriz: $ hi = new say_hi ();
Echo $ hi-> merhaba; Sınıf, mülkte depolanan veriler için bir kaptan daha fazlasıdır. Ayrıca işlevselliği özetlerler. Sınıfta, işleve yöntem denir. İşlev gibi yöntemler, ancak yalnızca bir parçası olan nesneler bağlamında kullanılabilir. Bu, nesne özelliğinde depolanan verilerin yanı sıra yöntemin özelliğini veya görünürlüğünü kullanmamızı sağlar. Tanımladığımız mülkle çalışacak olan bu sınıfa yöntemi ekleyelim:
Say_hai sınıfı {
public $ hello = ‘Merhaba Roy’;
genel işlev hi_roy () {
Echo $-> merhaba;
}
} Sınıfta, örnek şu anda $ this adlı özel bir değişkente saklanır. Bu yüzden mülke erişmek için $ bunu kullanmalıyız. Tıpkı sınıf dışındaki işlev gibi, kendi kapsamını belirleme yöntemi. Bu yüzden sınıf özelliği ile aynı adla bir değişkenimiz olabilir: Say_hai sınıfı {
public $ hello = ‘hi roy’; genel işlev hi_roy () {
Bu $-> merhaba döndür;
}
genel işlev hi_shawn () {
$ hello = ‘hai shawn’;
geri $ merhaba;
}
} Yönteme ayrıca $ özel bir özellik kullanılarak da erişilir. Hatırlanması gereken bir şey, sınıfla aynı adı taşıyan bir yönteminiz olmamasıdır. PHP4 ve PHP5’te statik bir yapıcı görevi görür.
Wp_query şimdi doğru terminolojiye sahibiz, wp_query’ye geçebiliriz. WP_Query bir WordPress Post API’sıdır, WP_Query’den $ Posts özelliğine kaydettiğimiz bir yayın koleksiyonu almak için kullanıyoruz, yayınların koleksiyonu hakkında bilgi belirliyor ve koleksiyonu tekrarlıyoruz.
WordPress’i geliştirdiyseniz, böyle bir standart WordPress yayınladınız: if (has_postingan ()) {
while (has_posts ()) {
Posta ();
İçerik ();
}
} Tüm bu işlevlere bakarsanız – ciddi olmalısınız, kaynağı okumak WordPress için önemlidir – Global WP_QUERY’de depolanan nesneleri kullanarak her şeyi göreceksiniz. WordPress’te kullandığımız standart “etiket şablonlarının” çoğu bu şekilde yazılmıştır.
WordPress’in ön uçta ne yaptığının kısa bir açıklaması, geçerli URL’ye dayanan bir WP_Query nesnesi oluşturmak ve global $ wp_query değişkenine yerleştirmektir. Sonuç olarak, döngüyü şöyle yeniden yazabiliriz: Global $ wp_query;
if ($ wp_query-> heat_posts ()) {
while ($ wp_query-> heat_posts ()) {
$ wp_query-> the_post ();
Echo appling_filters (‘the_concent’, $ wp_query-> post-> post_content);
}
} Bunun bir döngü yapmanın normal yoluna karşı karmaşık olması gerekmese de, bu yöntem, döngüde yaptığımız şeyin yayınlar aracılığıyla yineleme olduğunu açıklar – daha spesifik WP_Post sınıf nesneleri için – yayınlanan WP_Query örneklerinden depolanan özelliklerde depolanır. Global değişkenler $ wp_query. En son yayınlar veya popüler gönderi widget’ları aynı sayfada olabilir ve yayınların koleksiyonunu almak ve görüntülemek için WP_Query sınıfından farklı örnekler kullanacaktır. Kendimi önceden sınıf örneklerinin yeni anahtar kelimeler kullanılarak yapıldığını söyleyin. Ayrıca sınıf örneklerinin mülk üzerinde farklı veriler içerebileceğini de söyledim. Bu, aynı yönteme sahip olmalarına rağmen, yöntemin farklı veriler üzerinde çalıştıkları için farklı davranacağı anlamına gelir. Mülk değeri iki yoldan birinde düzenlenir: dahili olarak nesne tarafından veya özelliği harici olarak değiştirerek. Çoğu WP_Query özellikleri herkese açıktır, bu nedenle teknik olarak nesnenin dışından değiştirebiliriz, ancak bu iyi bir fikir değildir.
Genellikle wp_query ile, hangi gönderileri soracağını belirleyen ve mülkü dahili olarak düzenleyen bir argüman veriyoruz. Her wp_query parametresinde size rehberlik etmeyeceğim. Örnekler yaptığımızda argümanlarımızı nesnelere sürdürebiliriz. Örneğin, wp_query’ye “ürünüm” türünden 5 gönderi almasını söylemek için bunu yapabiliriz: $ arg = [
‘Post_type’ => ‘ürünüm’,
‘Posts_per_page’ => 5
];
$ query = yeni wp_query ($ args); Örnekleri bu şekilde yaptığımızda – argümana iki parantez içinde devam edin, __Construct () sınıf yönteminin argümanına devam ediyoruz. Yapıcı, sınıf kullanıldığında denilen bir tür sihirli yöntemdir. Bu yöntem bir dizi argüman alabilir, wp_query yapıcı yöntemi bir argüman alır, ancak diğer sınıflar daha fazlasını gerektirir. WordPress odaklı programlama programına bir kapı olarak WordPress tamamen nesne yönelimli bir uygulama olmayabilir, ancak herkes için sınıflarımız var WP_Query kullanarak bir yayın koleksiyonu aracılığıyla bulmak ve tekrarlamak için kullandığımız içerik türlerimiz; kullanıcı, wp_user_query aracılığıyla; WP_TAX_QUERY kullanan taksonomi terimi ve wp_comment_query sayesinde yorumlar. Sizi bu sınıfların her birini okumanızı öneririm – belgeler değil – kaynak kodları ve kendinizi nasıl çalıştığına, hangi mülklere sahip olduklarına ve ondan hangi yöntemleri kullanabileceğinize daha fazla aşina hale getirir.
Bu temel sorguyu anlamak, bir WordPress geliştiricisi olarak hayatınızı kolaylaştıracaktır. Bu aynı zamanda sınıfın nasıl tasarlandığını öğrenmenize yardımcı olacaktır.