WP_QUERY’i tanıyın
WP_Query sınıfı, WordPress’te çok güçlü bir araçtır. Bildiğiniz gibi, her WordPress sitesi, site içeriğinin çoğunu oluşturan birçok yayın (birçok yazı türünden) depolayan bir veritabanı içerir ve WP_QURY, işlenecek yazıdan belirli seçenekleri almanın veya yapmanın en iyi yoludur. Dolayısıyla tema dosyanız bunu düzenli olarak kullanır ve WordPress sitesindeki çok sayıda eklenti yapabilirsiniz. Detayları tartıştığımızda WP_Query’nin kullanımı ve gücü daha mantıklı olacaktır, bu yüzden başlayalım! WP_Query ve PHP Nesne yönelimli WP_Query, belirli özelliklere sahip PHP sınıflarıdır. PHP’de yeni wp_query () dediğinizde, o sınıftan bir nesne (veya örnek) oluşturursunuz.
PHP nesne yönelimli ise yeni bir kavram ise, konumuza girişimizi okumak isteyebilirsiniz. Eğer okuduysanız veya nesne odaklı PHP’nin temellerini zaten anladıysanız, konsepti WP_Query’ye uygulayalım. Yeni bir WP_Query nesnesi oluşturduğunuzda istediğiniz WP_Query nesnesini alın, WordPress veritabanından ilginç olacak sorguları istediğiniz tüm yayınları yaparsınız. Yeni bir WP_Query nesnesi oluşturduğunuzda, istediğiniz tüm WordPress yayınlarını WordPress veritabanından ilginç olacak bir veritabanı sorgusu yaparsınız. WP_Query hakkında anlamanız gereken ilk şeylerden biri, varsayılan olarak, yalnızca yeni WP_Query dediğinizde, bundan fazla fayda sağlamamanızdır. Tersine, bir nesne oluşturma şekliniz – çalıştırdığınız belirli sorgular – WP_Query’nin gücünü kullanma şeklinizdir.
“Yapıcı” yöntemi veya wp_query’nin başlatılması yalnızca bir parametre, $ args gerektirir. Bu, WordPress’te yaygındır – tekrar istediğinize dair zengin özellikler içeren dizi veya Dize $ arg’larına devam edebilirsiniz. $ Args’inize neyin dahil edilebilecek derinliği, burada paylaşmak için değerli olanın çok ötesindedir, ancak temel noktaları tartışacağız. Belirli bir amaç için özel bir sorgu yapmanız gerektiğinde, Codex’e danışmanızı öneririm. $ Args parametresi diziler ve dizeler alır ve sözdizimi ikisi arasında biraz farklıdır. Çoğunlukla $ args’lerinizi bir dizi olarak oluşturmanızı öneririm, çünkü sizi daha ileri ve dizeten daha az olan bir zihinsel ağırlık ile getirebilirler. Örnek wp_query: Son zamanlarda yazdığım tüm yayınları alın Tüm yayınları alabilmenizi öneririm Bu sözdizimine sahip bazı kullanıcılardan: $ query = yeni wp_query (‘yazar_adı = kenevir’); Bahsettiğim gibi, bir dizi kullanacağım, çünkü her şeyi iyi biçimlendirilmiş bir dizi ile izlemek kıvrımlı bir dizeden daha kolay. Yazdığım yazıyı bulmak için bir sorgu yazmak için aşağıdakilerle başlayacağım: $ query = new wp_query (array (‘yazar_adı’ => ‘David’)); Dizinin sözdizimi hakkında daha fazla bilgi edinmek istiyorsanız, PHP Array hakkında tanıtım öğreticime bakın.
Buradaki tam amacımız, geçen hafta WPSOT’da yazdığım tüm bağlantıları çizmek. Bunu yapmak için aşağıdaki sorguları yaptım: ‘David’, ‘Post_type’ => ‘Post’, ‘Tax_query’ => Array (‘Taksonomi’ => ‘Post_format’, ‘Field’ => ‘slug’, ‘terim’ => dizi (‘format sonrası-link’), ‘date_query’ => dizi (dizi (‘sonra’ => tarih (‘f j,’ => tarih (‘f j,’ => Y ‘, (strtotime (‘ 7 gün önce ‘))),’ dahil ‘=> true,),),’ Posts_per_page ‘=> -1,); $ query = yeni wp_query ($ query_args); Yapılan şey oldukça derindir, ancak WP_Query’yi anladığınızda size gönderinize ait olabilecek derinliği göstermek için her iki ayağıyla dalış yapıyorum. İlk örnekte tartıştığımız $ query_args dizimizin ilk satırı – bu, yayınımdaki sonuçlarımızı sınırlar. WP_Query’deki sorguların detaylandırılmasının ilişki olduğunu fark etmek de önemlidir. Eklediğim her yeni kriter, belirtilen kriterlere geri döndüğüm yayın sayısını sınırlar. Ve ilk yeni sınırım, başka bir yazı türü değil, sadece bir yazı istediğimi belirlediğim (aka: içerik). Bu teknik olarak aşırı, ancak söylediğim basit ve kafa karıştırıcıdan daha güvenli ve açık.
Bir sonraki bit – Tax_query bizi gönderme bağlantısı formatıyla sınırlar. Gönderme formatı WordPress’in daha garip bir parçasıdır ve bu sorgu bunu gösteriyor gibi görünüyor. Kısacası, teknik gönderi formatları yalnızca etiketler veya kategoriler gibi WordPress taksonomisidir, bu nedenle kendinizi belirli formatlarla sınırlamak için argümanınızda kullanmanız gerekir. Bu, Post formatını almak için Codex tarafından önerilen özel bir formattır. Sonraki, sadece son 7 günden itibaren yayınlamak istiyorum. WordPress 3.7’ye eklenen yeni tarih sorgu özelliği çok iyi, ancak burada yüzeyi çiziyorum. Son olarak, ‘Posts_per_Page’ => -1 ile WordPress’e pajinasyon yapmamasını söylüyoruz -bize bulunan her şeyin sadece bir parçası -çünkü 250 yazı olsa bile, her şeyi istiyorum. Bazen belirli sitelerdeki varsayılan sayfalandırma oldukça düşüktür ve bazı sonuçlar isteyeceksiniz ve WP_Query’nin varsayılan olarak paginasyonunu unutursanız çok karışık olabilirsiniz.
WP sorgu örneğimizin sonuçlarını kullanarak WordPress’te gizli bir sır vardır ve bu, yukarıdaki bölüm boyunca tartıştığımız WP_Query nesnesiyle ilgilidir. Bu da ne? Bunun nedeni, ayrıntılı olarak açıkladığım “The Loop” ile rahat hissettiğimizde ve “WordPress temasının üç temel kavramının” özelliklerinde WP_QUY nesneleriyle çalışmaya alışık olduğumuz için. Yani, her zaman (HAY_POSTS ()) her zaman WP_Query nesneleriyle çalışırsınız, nesne sizden gizlenir. Yani yenisiyle çalışma şekliniz hiç tanıdık. Sonuçlara genellikle temanız için şablon dosyasında yaptığınız gibi göz atmak için, işlem varsayılan döngüye çok benzer: $ query = new wp_query ($ query_args); while ($ query-> heat_posts ()) {$ query-> the_post (); Echo ‘
‘. get_the_title (). ‘
‘; } // Orijinal Gönderi Verilerini Geri Yükle WP_RESET_POSTDATA (); Anlamı, Had_posts () dansı yaparken bütününü yaptığınızda, şimdiye kadar wp_query nesnesiyle çalıştığınızdır, sadece sizden gizlenir. Yani yenisiyle çalışma şekliniz hiç tanıdık. Döngüye ve Varsayılan Döngüde olduğu gibi the_post () ‘yı hazırlamak, ancak bunu uyguladığımız WP_Query nesnesi – $ sorgusu olarak adlandırdığımız kendi özel sorgularımız hakkında açıkça. Nesne döngüsümüzde, bu yazının başlığını basit bir HTML listesi haline getiriyoruz.Daha fazla format yapabilir ve normalde döngüde kullandığınız tüm şablon etiketlerini kullanabilirsiniz.Gerçekten, döngüyü biliyorsanız, son satırdaki WP_RESET_POSTDATA () işlevine bir çağrı olduğunu biliyorsanız, burada tek yeni ve önemli ayrıntı.Bu alternatif bir döngüde gereklidir, çünkü WordPress birçok küresel değişkeye bağlıdır ve bunu yapmazsanız, sayfadaki diğer yerlerde IS_CATEGORY çağrılarınız gibi şeylerle garip şeyler olabilir.Bu yüzden, Brian Krogsgard tarafından açıklandığı gibi, WP_RESET_POSTDATA’yı arayarak Kustom WP_Query nesnelerinin kullanımına her zaman devam etmek ve bitirmek için iyi bir uygulamadır.