Taksonominin hükümlerine göre yayınlar nasıl sıralanır
SETUP_POSTDATA () ‘daki son makalemizde, bir okuyucu iyi bir soru yayınladı: Verilen taksonomide Abjad’a göre alınan wp_post nesne dizisini nasıl sıralarsınız? Başka bir deyişle, film türünün yayınlanmasıyla çalışırsam ve tür adı verilen bir taksonomide düzenlenirse, o zaman filmi önce “aksiyon” ve sonra “komedi” ve sonra “romantik” – – sonra ” – sonra” – sonra ” Bir turda ve yazının gerçek başlığı dışında mı? En üst cevap şu anda Google’da “taksonomi değerine dayalı olarak göndermek” için bazı get_posts () çağrılarını kullanarak Loop foreach (). Çözümü sevmiyorum çünkü bu birkaç WP_Post nesne dizisi ile çalışmayı ima ediyor – bir değil, istediğimiz her şeyle yapabileceğimiz sıralı dizi.
Biz dalış yapmadan önce bir davet. Genel olarak WordPress’in gelişimini daha iyi anlamak istiyorsanız, bunun için en iyi yönergeleri yazdık:
WordPress’in gelişimini öğrenmenin en iyi yolu uyan ve bugün koş!
“Bence WordPress’in gelişimini öğrenmek isteyen herkes bu kursu gerektiriyor. Videoyu izlemek açılan bir grup ışık gibi. ” -Jason, WordPress geliştiricisi
“Denediğim diğer kursların neredeyse her zaman WordPress’in neden belirli bir şekilde bir şey yaptığını veya her şeyin birlikte nasıl çalıştığını açık bir şekilde açıklamamış. Tüm bunları çalıştırıyor ve her şey net ve anlaşılması kolay bir dilde açıklanıyor. ” -Caroline, WordPress -Out ve şimdi çalışan işçiler
Şimdi: Sıralı WP_POST S dizisi boyunca taksonomimiz terimini bir döngüde sıralamak oldukça fazla koddur, ancak iyi bir çözüm vardır. Bugün ele aldığımız şey bu. Taksonomiye göre sıralanan demo yayınları Bu demo, iki farklı kategoride iki gönderisi olan bir test sitesinden gelir:
Test sitesi yirmi on yedi çalışır. Aşağıdaki “Tam Çalışma Kodu” bölümünden tüm kodu şablon dizinine koyduk. Bu sonucu demo sitesinin ana sayfasında verir: Bu özeldir, çünkü bu yazıyı, bulundukları kategorinin adına göre alfabeye göre sıralar. Gönderi, kendi adlarıyla alfabeye göre veya yayın tarihlerine göre kronolojik olarak (sağdaki “son yazı” widget’ında olduğu gibi) kronolojik olarak sıralanmışsa, ters sırada görünecektir. Tesonomik hükümlere dayanan dizi gönderimi sıralama: Aşağıdaki tam çalışma kodu aşağıdakileri yapar:
Taksonomik kategorisi için bir değeri olan tüm yayınları (varsayılan olarak gönderi türünden) alın.
Gönderiyi, kayıtlı oldukları ilk kategorinin adıyla alfabeye göre sıralayın.
Sıralanan sırada her yazının kalıcı bir bağlantısını ve başlığını görüntüler.
İşlev wspout_fetch_posts_in_category_taxonomy () {// ‘kategorisi’ taksonomi $ args = dizi (‘Tax_query’ => dizisi (diz (‘taksonomi’ => ‘kategorisi’,)); // dönüş getirilen gönderiler dönüş get_posts ($ args); } // Alınan WP_POST nesnelerinin her birini özelleştirin: her biri bir // ‘kategorisi’ özelliğine sahip olacaktır. kategori’); // İlk wp_term nesnesini wp_post nesnesine kaydedin $ current_post-> category = $ terimler [0]; // $ yayın dizisini değiştirilmiş wp_post nesnesi $ gönderilerle güncelleyin [$ post_index] = $ current_post; Endforeach; // Değiştirilmiş WP_POST Nesneleri Dönüş Dizisi $ Döndürme; } // Sıralama işlevini kategoriye göre sıralayacak şekilde tanımla işlevi wspout_sort_posts_by_category ($ a, $ b) {return strcmp (wp_strip_all_tags ($ a-> kategori-> name), wp_all_all_tags ($ b-> kategori-> adı); } // WP_POST nesneleri dizisini almak için sadece kayıtlı işlevi çağırın, // forEach () işlevi ile çıktı wspout_output_posts_sorted_by_category () {$ post = wsp. // Sonuç yoksa (! Is_array ($ gönderiler)): false döndür; Endif; // her wp_post nesnesine bir özellik olarak wp_term nesnesi kategorisi ekle $ yayınlar = wspspout_add_category_term_objects_to_posts ($ gönderiler); // Yazıları kategoriye göre sıralama adı kullanma ($ gönderiler, ‘wphout_sort_posts_by_category’); // Global Call $ Post değişkeni Global $ Post;
// Sıralı yayınlar boyunca döngü ve şablon etiketlerini kullanarak görüntüleme forEach ($ current_post): // $ POST Global değişkeni şu anki Post Nesnesi’ne ayarlayın = $ current_post;// Şablon etiketleri için “ortam” ı ayarlayın setup_postdata ($ post);// Normalde şablon etiketlerini kullanın.Başlık ();echo ‘ ‘;Endforeach;// Global $ post değişkenini sıfırla wp_reset_postdata ();} // Şablon dosyanızda istediğiniz yerde çıktı işlevini çağırın wspout_output_posts_sorted_by_category ();Kod Hakkında Not Burada dikkate alınması gereken birkaç önemli nokta vardır.
WP_POST nesnesine kategori özelliği ekleme “> İlk soru, taksonomi terimi WP_POST nesnesinin varsayılan özelliği değildir. Bu nedenle, yayın tarihine göre sıralamadan daha zordur, yayın tarihi, yayın tarihi, yayın tarihine göre daha zordur ve böylece. Diğer nesneleri kilitleyerek sorunu çözüyoruz – Okja wp_term – her gönderinin üye olduğu ilk kategori hakkında her türlü bilgiyi vermek. [“Term_id”] => int (15) [“ad”] => String (14) “İlk kategori” [“slug”] => dize (14) “ilk kategori” [“term_group”] => int (0) [“term_taxonomy_id”] => int (15) [“taksonomi”] => string (8) “kategori” [“açıklama”] => string (0) “” [“ana”] => int (int (int ( 0) [“sayım”] => int (1) [“filtre” => String (3) “ham”} Her wp_post nesnesi, wpshout_add_category_term_objects_to_posts () () () () () () () () (),), Yeni bir kategori özelliği olarak eklenen bir wp_term nesnesi.
USORT () Yukarıdaki adımlarla kategorinin adına göre, her yazı için kategori özelliğinin adını kullanabiliriz. Değiştirilmiş WP_POST nesneleri kategorisinin adını almak şöyle görünüyor: $ this_post-> category-> name. Bu, USORT () kullanarak kategorinin adına göre alfabetik gönderim yapmamızı sağlar. Setup_postdata () hakkındaki makalemizde USORT () hakkında biraz daha dokunduk. İçeriği Sayın WP_POST Nesne dizisini her zamanki gibi kullanmak için WP_QUY nesnesini kullanıyoruz, güzel WordPress setup_postdata () kullanmaya geri dönüyoruz. Yayınlar, taksonomi terimi ile sipariş edin ve sayfaya görüntüler. Yukarıdaki hızlı demomuz, tema.php dizinine eksiksiz bir demo kodu eklemek için yeterlidir. Ayrıca, temanızın son satırı dışında her şeyi girebilir ve daha sonra istediğiniz temanın herhangi bir yerinde WSPSPOUT_OUTPUT_POSTS_SORTED_BY_CATATORY () arayabilir veya bu işlevi kullanan bir widget’ı kaydedebilirsiniz. Get_posts () argümanını WP_Query ve get_posts () kapağı için kılavuz olarak değiştirerek, get_posts () argümanını istediğiniz gibi ayarlayabilirsiniz. Aşağıdaki örnek, bir ürün olmak için hedeflenen posta türünü değiştirir, alınan sonuçları en son yayınlanan beş yayınla sınırlar ve sınıflandırılacak taksonomiyi ürün_cat olarak değiştirir.
‘Post_type’ => ‘Ürün’, ‘Posts_per_Page’ => 5, ‘Tax_query’ => dizi (dizi (‘Taksonomi’ => ‘Ürünler Bu, değiştirebileceğimi umduğum şeydir: Ayrıca Tek get_posts () çağrısına, alınan yazı başına get_the_terms () bir çağrı vardır. Call get_posts () bin yayın alırsanız, bu, veritabanına 1.001 ekstra gezi anlamına gelir, bu da performans açısından zararlı olacaktır. Bunun gelişmesini bilen biri varsa duymak isteyeceğim. Bir fikir, tüm yayınlar için hedeflenen taksonomi için taksonomiyi alan bir önbellek sorgusu yazmaktır ve daha sonra sadece kodun geri kalanındaki kuyruğun sonuçlarını ifade eder, ancak pratikte nasıl çalıştığından emin değilim. Yorumlar. Metada’ya göre yazıyı nasıl sıralayacağınızı anlamak – taksonomi terimi de dahil – WordPress’te nasıl yapılacağını bilmek de oldukça yararlıdır, bu yüzden umarım yukarıdaki gösteriyi ve nasıl değiştirilebileceğini ve genişletilebileceğini anladınız. Eğer öyleyse, tebrikler, WordPress konusunda yeterince iyisiniz. Okuduğunuz için teşekkürler! Aşağıdaki sorularınızı ve yorumlarınızı dinleyelim. Kredi resmi: allispossible.org.uk