WordPress sitenizin işlevini genişletmek için wp_query kullanın
Bugünün konuk blog yazısı Isaac Castillo tarafından yazılmıştır. Isaac, San Antonio merkezli bir WordPress ve WooCommerce geliştirme şirketi olan Echo Design Solutions’ın kurucusudur.
WordPress geliştiricileri, müşterilerinin sitesinin işlevselliğini ve performansını artırmanın yollarını aramaya devam ediyor. Bu çabaya yardımcı olmak için WordPress, siteye özellikler ve işlevsellik eklemek için kullanılabilecek büyük bir işlev kitaplığı içerir. Örneğin, geçerli sayfada işlenen ve WordPress görüntülenen bir PHP kodu olan The Blog Post başlıkını Loop’a almak istiyorsanız, The_title () işlevini kullanabilirsiniz. Get_categories () işlevini kullanarak blog yayın içeriği almak veya gönderme kategorisini almak için the_content () işlevini de kullanabilirsiniz.
WordPress’in bir siteyle yapmak istediğiniz hemen hemen her şey için bir işlevi olmasına rağmen, varsayılan WordPress işlevini kullanarak işlenemeyen görevleri yapmanız gereken zamanlar kesinlikle olacaktır. Örneğin, gelişmiş özel eklentiyi giren verileri nasıl onarabileceğinizi ve verileri bir yayına nasıl döndürebileceğinizi düşünün. Bu örnekte kuyruğu yapmak için varsayılan WordPress işlevinin dışına bakmanız gerekir. WordPress, özel parametrelere sahip özel bir sorgu kullanarak döngüdeki WordPress veritabanından bilgi almanızı sağlayan bir sınıf içerir. Bu sınıfa WP_Query denir ve WordPress’te daha fazla gelişmeye teşvik ettiğinizde, geliştiriciler için bu değerli araca alışkın olmalısınız.
Ekibim ve ben müşteriler için WordPress’e Python göçünü tamamladık. Bu proje, ihtiyacımız olan doğru bilgileri hedeflemek için varsayılan WordPress işlevinin dışına baktığımız o kadar çok ayarlama ve özel yayın türü gerektirir. Bu durumda, müşterilerin sitelerine yalnızca en son etkinlikleri görüntülemek için ihtiyacı vardır, bu da sitenin bir etkinliğin tarihine başvurması gerektiği anlamına gelir. Site arayüzü, ziyaretçilerin bir etkinliğin yapıldığı veya girildiği tarihi döndüren bir Fonksiyon, get_the_date (); Bu işlev etkinliği yaparken sınırlı olduğundan, projemiz için yeterli olmayacaktır. Belirli olayların tarihini izlememizi sağlayan özel alanlar oluşturmak için gelişmiş özel alanlar kullanıyoruz. WP_Query kullanarak, özel etkinliklere dayalı etkinlikleri çeken özel kuyruk yazabiliriz. Sonuç olarak, site ziyaretçileri devam eden etkinliklerin bir listesini görebilir veya gelecekte gerçekleşmesi planlanabilir.
‘post_type’ => ‘yazı’,
‘Post_status’ => ‘yayın’,
‘Posts_per_page’ => -1,
);
$ the_query = yeni wp_query ($ args);
if ($ the_query-> had_posts ()) {
while ($ the_query-> heat_posts ()) {
$ the_query-> the_post ();
İçerik ();
}
wp_reset_postdata ();
} başka {
Gema ‘Üzgünüm, gösterilecek bir gönderi yok
‘; } Bu örnekteki kuyruğun sıradan posta döngü sorgularına çok benzer olduğunu fark edebilirsiniz. Temel fark, veritabanının sorguları tarafından çizilecek bilgileri belirlemenizi sağlayan $ args dizisidir. $ Args içinde, tekrarlama sonuçlarını değiştirecek her türlü kriteri geçebiliriz. Kuyruk ve döngü belirlendikten sonra, $ args dizisini doğru argümandan geçecek şekilde doldurmamız gerekir. Örneğin, örneğimde açıkladığım etkinlik için özel bir gönderi türü almak istiyorsanız, aşağıdaki argümanı kullanabilirsiniz: $ args = array (Array (
‘Sipariş’ => ‘tarih’,
‘Post_type’ => ‘Olay’,
‘Post_status’ => ‘yayın’,
‘Posts_per_page’ => -1,);
$ the_query = yeni wp_query ($ args); Bu kodla, WordPress’e etkinlik adı verilen yayın türü (yaptığımız özel gönderi türü) için veritabanını paylaşmasını ve yalnızca yayınlanmış bir duruma sahip olayı almasını söyleriz. Posts_per _Page değişkenleri, döndürülecek kayıt sayısını belirlemek için kullanılabilir. -1’de bırakmak, geçerli her notu döndürür.
Bu noktada, etkinlik yazısı türünü aldık, ancak henüz bitirmedik. Hala verileri işlememiz gerekiyor, böylece yalnızca geçerli tarih ve/veya geleceğe sahip olayın görüntülenmesi ve geçiş tarihine sahip etkinlik göz ardı edilecektir. Bu işlev, aşağıdaki ayarlanmış sorgular kullanılarak elde edilebilir: $ time = current_time (‘time damgası’); // Mevcut UNIX zaman damgasını alın
$ args = dizi (
‘Post_type’ => ‘Olay’,
‘Post_status’ => ‘yayın’,
‘Posts_per_page’ => -1,
‘Meta_key’ => ” Başlat ‘
‘meta_value’ => $ zaman,
‘Meta_ karşılaştır’ => ‘> =’,
‘Sipariş’ => ‘value_meta’,
‘Mesaj’ => ‘ASC’
);
$ the_query yeni wp_query ($ args); Daha önce olduğu gibi, kuyruğumuz yayınlanan etkinlikten yazı türünü aldı ve her şeyi iade etti. Sonuçları değiştirebilmemiz için gelişmiş özel alanın değerini yudumladığımızda mucize oynamaya geldi. Bu örnekte, bu işlevi elde etmek için aşağıdaki argümanlar kullanılır:
$ Time Komut dosyasının başlangıcında, yüklenen komut dosyası zamanını UNIX TIME damgası olarak $ Time adlı bir değişkene bağlarız. Tarihten itibaren ‘meta_key’ => ‘start_date’ hedeflemek istiyoruz. Gelişmiş özel alanda düzenlenen start_date alanı, özel gönderimimizin meta_key tipi ile ilgilidir. Gelişmiş özel alandan veri paylaşabilmek için bu alana ihtiyacımız var. Meta_adi Burada, geçtiğimiz $ Time değişkeniyle aynı olan Start_Dates’e sahip bir etkinlik aradığımızı söylüyoruz. Ancak bu istediğimiz sonuç değil çünkü bugün planlanan bir etkinlikten daha fazlasını ilgilendiriyoruz. Bugün ve geleceğe kayıtlı bir etkinlik istiyoruz. Bu durumda ne yapıyoruz? Meta_ Meta_compare’deki çözümleri karşılaştırın. Meta_key değerlerini aradığımızda, bir şeyle karşılaştırmak istediğimizi belirlemek için kullanabiliriz. Burada> = var. WP_Query burada gerçekten parlıyor çünkü uygulanması zor olacak işlevsellik eklememize izin veriyor. Son sipariş, meta_value’yi yükseltme siparişinde sıralayabileceğimizi görebilirsiniz. Bu olayları temiz bir kronolojik sırada düzenler.