Döngü olmadan WP_QUERY NEBERİNİ KULLANMAK

Birkaç hafta önce, WordPress-yuva verilerinin yapısı için geçerli olan fonksiyonel programlamanın temelleri hakkında David’in makalesinden gerçekten keyif aldım. Onunla çalışmakla ilgili eğlenceli şeylerden biri de çok şey öğrenmem. Bugün, David’in tanıttığı oldukça işlevsel bir dünyayı keşfetmeye devam etmek istiyorum ve WordPress’teki çok önemli varlıklarla etkileşim kurmak için birkaç ücretsiz yol daha önerdi: WP_Query nesneleri. WP_Query, soyut bir varlık olmayan bir WP_Query nesnesidir. Bu, programlama anlamında bir nesnedir. WordPress’i incelemeye başladığımda, wp_query mistik bir soyutlamadır: sihirli bir büyü gibi dediğiniz bir şey, böylece özel bir döngüde the_title () ve the_concent () gibi işlevleri gerçekleştirebilirsiniz.
Ancak, wp_query soyut bir varlık değildir; Bunun yerine, bu programlama anlamında bir nesnedir. Önceki nesne odaklı nesnelerin temelleri ve programlama hakkında yazdık; Tartışmayı hızlı bir şekilde özetleyelim:
Nesneden daha büyük sınıfa ait her bir nesne. Örneğin, otomobil sınıfına ait bireysel araba nesneleri.
Her nesnenin sınıfının diğer nesneleriyle benzerlikleri vardır. Bu benzerlik mülk ve yöntemlere ayrılmıştır.
Özellik, belirli nesnelerle ilgili şeylerdir. Araba nesneleri için, bir özellik “renk” olabilir: “Renk” kendisi bir özelliktir ve verilen araba nesnesinin mülk için değeri olarak “kırmızı” veya “mavi” olabilir.
Yöntemler, belirli nesneler tarafından yapılabilecek şeylerdir. Araba nesneleri bir sürücü () ve stop () yöntemi olabilir.
Şimdi WP_Query’nin kendisine bakalım. Herhangi bir WP_Query nesnesinin büyük bir özellik ve yöntem listesi vardır. WP_Query Nesne özelliği, aslında nesnenin kendisinde saklanan her türlü durum ve bilgiyi içerir. WP_Query nesnesinden print_r () php: print_r’ın ilk birkaç satırı kullanarak doğrudan okuyabilirsiniz.

Bugün hedefimiz WP_Query’yi manipüle edebileceğimiz gerçek nesneler dünyasına getirmek. WP_Query ile sadece özel bir döngü çalıştırarak yapamayacağınız bir şey yapmak için bir meydan okuma hazırladım. Proje: Bu kodla amaçlı içeriğimize dayalı alfabe aşağıdaki sayfaya yazdırmaktır:
Gönderi kategorilerimizden birindeki tüm yayınların listesi, editörler,
İçeriğinin başlığı ve kısa alıntısı ile,
İçerik göndermenin ilk mektubu tarafından sıralanır.
Üçüncü bölüm karmaşıktır, çünkü WP_Query izin verilen sipariş seçeneğinde “Post” seçeneği yoktur.
Son ürün aşağıdaki gibi görülür:
Gönderin, gönderi başlığına göre değil, içeriğin ilk kelimeleriyle alfabetik sırayla sıralandığını unutmayın. Bu örnek kodu oldukça kısa, bu yüzden bu makalenin içeriğine her şeyi koydum: // USort’a WPSHOUT_SORT_BY_CONCENT ($ A, $ B) {Return Strcmp ($ A [‘Post_Content’], WP_STRIP_ALL_TAGS işlevini ne karşılaştıracağınızı söyleyin. $ b) [‘post_content’]))); } // [abc_editorials] add_shortcode kısa kodu (‘abc_etitorials’, ‘wspspout_abc_editorials’); İşlev wspout_abc_editorials () {// wp_query nesnemizi al $ args = Array (‘tax_query’ => dizi (dizi (‘taksonomi’ => ‘kategorisi’, ‘tarla’ => ‘slug’, ‘slug’, ”, ),), ‘Posts_per_page’ => -1,); $ query = yeni wp_query ($ args); // sorgunun yayınlarını tutun $ gönder = $ query-> yayınlar; // her gönderinin sadece post_title ve post_content al = array_map (array_map (işlev ($ post) {return array (‘post_title’ => $ post-> post_title, ‘post_content’ => $ post-> post_content,); $ gönderiler ); // İçerik sonrası kullanıma göre sıralama ($ gönderiler, ‘wphout_sort_by_content’); // cortcode $ return = ” foreach ($ gönder) {$ return. = ‘

‘. $ Post [‘Post_title’]. ‘

‘; $ return. = substr (wp_strip_all_tags ($ post [‘post_content’]), 0, 260); } // dönüş üretilmiş dize dönüş $ return; } Wp_query nesneleri alma, editör kategorisine dahil olan tüm yayınları içeren bir WP_Query nesnesi oluşturmak için basit bir çağrı ile başlarız.

$ args = dizi (‘Tax_query’ => dizi (dizi (‘taksonomi’ => ‘kategori’, ‘alan’ => ‘slug’, ‘terim’ => ‘editoryal’,),, ‘Posts_per_page’ => -1,); $ query = yeni wp_query ($ args); Sizin için veya yukarıdaki kod için yeni WP_Query olağandışı ise, burada yazdık. WP_Query nesnesinin en önemli özellik dizisinin yayınlarında, özellikle amacımız için, gönderiler. Bu tesis, kuyruğumuzla aldığımız her gönderi için tüm bilgileri – gönderme başlıkları, yazarlar, yayın tarihi, içerik ve daha fazlasını içerir. Gönderiler, BookShelves depolama kitapları gibi tüm bu bilgileri doğrudan depolar.
Bu yüzden yapacağımız ilk şey, sadece wp_query’de önem verdiğimiz şeylerle yeni bir değişken olan $ yayınlar oluşturmaktır: $ postalar = $ query-> yayınlar; Bu bizi sadece alınan görevlere odaklanmamayı değil. (Bu arada, aynı $ args ile get_post () wordPress işlevini çağırmak ve $ yayın olarak tutmakla aynıdır.) Array_map () -ing yayınları WP_Query’den kitap rafları ve wp_post gibi özelliği özelliği özelliği Nesneler bireysel kitaplar gibidir. İçindeki yayınların içeriği nedir? WP_POST nesne dizisi vardır: her biri Post_title, Post_Excerpt ve Post_Content gibi farklı özelliklerden oluşan bir koleksiyona sahip, ayrı ayrı alınan gönderileri temsil eden nesneler.

Bir kez daha, WP_Query’den yayınlar biraz kitap rafları gibidir ve WP_Post nesnelerimiz her biri kendi mülklerine sahip tek tek kitaplar gibidir. Bizim durumumuzda, her kitaptan sadece iki özelliği önemsiyoruz:
Başlık ve
İçerikler.
Array_map () burada girer. David’in açıkladığı gibi, Array_map (), büyük bir dizi (WP_Post nesne dizimiz gibi) almanın ve yalnızca ihtiyacımız olan parçaları saklamanın mükemmel bir yoludur. $ posts = array_map (function ($ post) {return array (‘post_title’ => $ post-> post_title, ‘post_content’ => $ post-> post_content,);}, $ direkler); $ Yayınlarındaki her $ yayın için, yalnızca Post_title ve Post_Content adlı iki öğeli yeni bir dizi yapıyoruz. Daha sonra tüm bu sonuçların sonuçlarını $ yayınlara kaydederiz. İçeriğe dayalı sıralama bir sonraki adım, başlığımızın ilk mektubuna göre sıralamaktır. $ Direkler ilişkisel diziler olduğundan, biraz karmaşık bir şey kullanmalıyız, () kullanın. Daha önce USORT () tartıştım. Sizden kendi karşılaştırma işlevinizi yazmanızı ister, bu da daha sonra sağladığınız ilişkisel dizide çalıştırılır, tüm dizileri karşılaştırır ve sıralayın. Yazdığımız işlev: Çok derin dalış yapmadan, bu işlev “Alfabede ilk başlayan iki post_content öğesinden hangisi?” İşlev wpShoutsortByContent ($ a, $ b) {return strcmp (wp_strip_all_tags ($ a [‘post_content’]), wp_strip_all_tags ($ b [‘post_content’])); } $ Yayınlar yaptıktan sonra USORT () arayacağız ve aşağıdaki gibi özel karşılaştırma işlevimize USORT’a () devam edeceğiz:
USORT ($ gönderiler, ‘wpshoutsortbyContent’); Bu, tüm yayınlarımızı içeriğe dayalı olarak şekillendirir. Foreach () ile Bina Çıktı Sıradan WP_Query’de, daha önce The_Title () ve The_Concent () gibi yazılmış özel döngüler ve WordPress işlevleri kullanıyoruz. Ancak gönderileri özel bir şekilde ayırdığımız için, hangi çıktının üretileceğine tam olarak karar vermek için Loop foreach () kullanabiliriz: $ return = ”; foreach ($ gönder) {$ return. = ‘

‘. $ Post [‘Post_title’]. ‘

‘; $ return. = substr (wp_strip_all_tags ($ post [‘post_content’]), 0, 260); } return $ return; Tüm bunları değişken, $ return olarak saklıyoruz, daha sonra işlevi çağıran kısa koda geri dönüyoruz. (Bu kodu kısa bir koda yazmak, sayfaya görüntülemenin kolay bir yoludur – kısa kodlar hakkında daha fazla bilgi edinmek istiyorsanız, buradan okuyun.) Bu metin, kısa kodun olduğu her yerde sayfa içeriğine yazdırılmasına neden olur girdi, sonuçları sonumuzu verdi. WP_Query’nizi kullanın Bu makalenin özü, WP_QUY nesnesine yaklaşmak için güvene sahip olmanın birkaç yolunu önermektir – bir şekilde konfor bölgesi döngümüzü üreten bir gizem olarak değil, gerektiğinde özgürce manipüle edilebilen bir programlama nesnesi olarak. Umarım bu, varsayılan WordPress yeteneği ihtiyaçlarınızı karşılamadığında bazı engelleri ortadan kaldırmaya yardımcı olacaktır. Okuduğunuz için teşekkürler! Kredi resmi: resim kataloğu

admin

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir