PHP

WP_Query Bağımsız Değişkenleri: Taksonomiler

Şimdiye kadar bu seride, nasıl yapılacağını öğrendiniz WP_Query yapılandırılmıştır ve özellikleri ve yöntemleri nelerdir. Şimdi kullanabileceğiniz çeşitli argümanlara bakıyoruz. WP_Query ve onları nasıl kodladığınızı.

WP_Query çok sayıda olası argümana sahiptir, bu da onu son derece esnek kılar. İçinde tutulan her şeyi sorgulamak için kullanabileceğiniz gibi wp_posts tablosunda, içeriğinizde çalıştırmak isteyebileceğiniz her sorgu permütasyonu için argümanları vardır.

Bu eğitimde, sınıflandırma terimlerini sorgulamak için argümanlara bakacağım.

Argümanların Nasıl Çalıştığına İlişkin Bir Özet WP_Query

Başlamadan önce, argümanların nasıl çalıştığına dair kısa bir özet yapalım. WP_Query. kodladığınızda WP_Query temalarınıza veya eklentilerinize dört ana öğe eklemeniz gerekir:

  • Bu eğitimde ele alınacak parametreleri kullanarak sorgu için argümanlar
  • sorgunun kendisi
  • döngü
  • bitirmek: kapatmak if ve while etiketler ve gönderi verilerini sıfırlama

Pratikte, bu aşağıdaki gibi görünecektir:

Argümanlar, WordPress’e veritabanından hangi verilerin getirileceğini söyler ve burada ele alacağım olanlar bunlar. Yani burada odaklandığımız tek şey kodun ilk kısmı:

Gördüğünüz gibi, argümanlar bir dizide yer alıyor. Bu eğitimde çalışırken onları nasıl kodlayacağınızı öğreneceksiniz.

Argümanlarınızı Kodlamak

Dizideki bağımsız değişkenleri kodlamanın aşağıdaki gibi belirli bir yolu vardır:

Parametreleri ve değerlerini tek tırnak içine almalısınız, => aralarına virgül koyarak ayırın. Bunu yanlış anlarsanız, WordPress tüm argümanlarınızı sorguya eklemeyebilir veya beyaz bir ekran alabilirsiniz.

Taksonomi Parametreleri

Taksonomi terimleri için parametreleri ayarlamak, kullandığınız için kategoriler ve etiketler için olduğundan biraz daha karmaşıktır. tax_query. Bu bağımsız değişken içinde, bu parametreleri kullanarak sınıflandırmayı ve terimi belirtmek için iç içe geçmiş bir dizi bağımsız değişken yazarsınız:

  • taxonomy (sicim): sınıflandırma
  • field (sicim): ( ile sınıflandırma terimini seçin'term_id (varsayılan), 'name' veya 'slug')
  • terms (int/dize/dizi): taksonomi terim(ler)i
  • include_children (boole): hiyerarşik taksonomiler için çocukların dahil edilip edilmeyeceği. Varsayılan olarak true olur.
  • operator (sicim): test etmek için operatör. Olası değerler 'IN' (varsayılan), 'NOT IN', 'AND', 'EXISTS've 'NOT EXISTS'.

sahip olduğun gerçeği operator parametresi, terimleri dahil edip etmeyeceğinizi (etiketler ve kategoriler için yaptığınız gibi) tanımlamak için bir dizi kullanılabilir argüman arasından seçim yapmanız gerekmediği anlamına gelir, ancak tax_query bunun yerine taksonomi ile ilgili her şey için.

Birden çok taksonomiyi sorgulamak istiyorsanız, relation tüm dizilerinizden önce parametre (her taksonomi için bir tane) AND veya OR tüm terimleri veya herhangi birini içeren gönderileri bulmak isteyip istemediğinizi belirtmek için.

Bu, bazı örneklerle en kolay şekilde açıklanır.

Bir Taksonomi Terimi için Sorgulama

Bu en basit senaryodur ve yalnızca bir iç içe dizi kullanmayı içerir:

Kategoriye Göre Gönderi SlugKategoriye Göre Gönderi Slug

İle gönderiler için yukarıdaki sorgular tutorial içinde terim category taksonomi. kullanmanız gerektiğini de unutmayın. field Varsayılan olan terim kimliğini kullanmıyorsanız, terimi tanımlamak için hangi alanı kullandığınızı belirleyen parametre. Kimlik terimini kullanmak isteseydiniz, şöyle bir şey kullanırdınız:

Kategori Kimliğine göre yayınlaKategori Kimliğine göre yayınlaKategori Kimliğine göre yayınla

Kimliği kullanmak, sorgunuzun daha sonraki bir tarihte ne aradığını belirlemenizi zorlaştırır, ancak kullanıcılarınızın sümüklü böcek terimini düzenleyebileceğini düşünüyorsanız, olası sorunları önler.

Tek Bir Taksonomide Birden Fazla Terim Sorgulama

Aynı sınıflandırmada bir veya daha fazla terim dizisine sahip gönderileri tanımlamak istiyorsanız, yine de iç içe bir dizi yazarsınız, ancak bir dizi terim eklersiniz.

Örneğin, gönderileri sorgulamak için hiç taksonominizdeki terim kimlikleri listesinden şunları kullanırsınız:

Herhangi Bir Etiket Kimliğine Göre GönderilerHerhangi Bir Etiket Kimliğine Göre GönderilerHerhangi Bir Etiket Kimliğine Göre Gönderiler

Ama ya gönderileri sorgulamak istersen tüm bu terimlerden? kullanmanız gerekecek operator iç içe dizinizin içindeki parametre:

Tüm Etiket Kimliklerine Göre GönderilerTüm Etiket Kimliklerine Göre GönderilerTüm Etiket Kimliklerine Göre Gönderiler

İlk örneğin aslında IN Operatör, terimlerden herhangi birine sahip gönderileri bulmak için kullanılır, ancak bu varsayılan olduğundan, argümanlarınızda belirtmeniz gerekmez.

Başka bir senaryo, bir taksonomide herhangi bir terim dizisine sahip olmayan gönderileri sorgulamak istiyorsanız, böyle yaparsınız:

Etiket Kimlikleri Yok Tarafından GönderilerEtiket Kimlikleri Yok Tarafından GönderilerEtiket Kimlikleri Yok Tarafından Gönderiler

İşte, değiştirdim AND operatör ile NOT INbu, WordPress’in dizideki herhangi bir terim olmadan gönderileri bulacağı anlamına gelir.

Terim kimlikleri yerine sümüklü böcek kullanmayı tercih ederseniz, bunu bu senaryolardan herhangi biriyle yapabileceğinizi unutmayın. Son örnek şöyle görünecektir:

Hiçbiri Etiket Slug tarafından yazılan gönderilerHiçbiri Etiket Slug tarafından yazılan gönderilerHiçbiri Etiket Slug tarafından yazılan gönderiler

Birden Çok Taksonomiden Terim Sorgulama

Birden fazla sınıflandırma ile çalışmak istiyorsanız, birden fazla dizi oluşturmanız gerekir. Kategori sınıflandırmasından bir terim içeren gönderileri sorgulamak için en basit örneğe bakalım. ve etiket sınıflandırmasından bir terim:

AND Operatörlü Çoklu TaksonomilerAND Operatörlü Çoklu TaksonomilerAND Operatörlü Çoklu Taksonomiler

Burada iki iç içe dizi yazdım: her taksonomi için bir tane, sadece bir taksonomi kullanan örnekler için yaptığım argümanları kullanarak. Ben bunlardan önce relation argüman. dahil etmeniz gerekir relation WordPress’e her bir dizinin çıktılarının tamamını mı yoksa bir kısmını mı aradığını söyleyen argüman. Bu şu şekilde çalışır:

  • Eğer kullanırsan 'relation' => 'AND'WordPress ilk dizide belirtilen gönderileri getirecektir. ve ikinci dizi. Yani yukarıdaki örnekte, yalnızca ikisi birden en tutorial susmak category ve javascript susmak post_tag sorgulanacak.
  • Eğer kullanırsan 'relation' => 'OR'WordPress ilk dizi tarafından çıktıları alacak veya ikinci dizi. Yani bu durumda herhangi biri en tutorial sümüklü böcek veya javascript sümüklü böcek (veya her ikisi).

Bu, iki sümüklü böcekten birini içeren gönderiler arıyorsanız kullanacağınız koddur:

VEYA Operatörlü Çoklu TaksonomilerVEYA Operatörlü Çoklu TaksonomilerVEYA Operatörlü Çoklu Taksonomiler

Ayrıca, diziye ekleyerek belirli bir taksonomide birden fazla terim arayabilirsiniz:

Çoklu Terimli Çoklu TaksonomilerÇoklu Terimli Çoklu TaksonomilerÇoklu Terimli Çoklu Taksonomiler

birleştirerek relation sorgularla argüman ve ayrıca operator argüman, karmaşık sorgular oluşturabilirsiniz. Aşağıdaki argümanlar, bir taksonomiden bir terim içeren ancak başka bir taksonomiden bir terim içermeyen gönderileri sorgulayacaktır:

Operatör İlişkili Çoklu TaksonomilerOperatör İlişkili Çoklu TaksonomilerOperatör İlişkili Çoklu Taksonomiler

kullandığıma dikkat 'relation' => 'AND' burada: kullansaydım ORile gönderileri sorgular slug-two ve olmayan gönderiler slug-onesahip olan gönderiler yerine slug-two Ama değil slug-onearadığım şey bu.

Taksonomilerinizin terimlerini istediğiniz gibi sorgulamak için bunu daha ileri götürebilirsiniz: operator hem iç içe sorgularda bağımsız değişken hem de başka bir sınıflandırmadaki terimleri sorgulamak için ek bir iç içe sorgu ekleme.

İç İçe Taksonomi Sorguları

Gönderilerinizi almak için çok daha karmaşık filtreler oluşturmak için iç içe sınıflandırma sorguları oluşturmanız mümkündür. Sürüm 4.1’de WordPress çekirdeğine iç içe taksonomi desteği eklendi. Benzer sonuçları daha önce elde etmek ya çok daha karmaşıktı ya da düpedüz imkansızdı.

Yukarıdaki sorgu, altındaki gönderileri seçecektir. category ile taksonomi guide sümüklü böcek veya gönderiler tutorial altında sümüklü böcek category ve sahip olmak php, strings altında sümüklü böcek kombinasyonu post_tag.

İç İçe Taksonomi Operatörleriİç İçe Taksonomi Operatörleriİç İçe Taksonomi Operatörleri

üzerine bir not tax Argüman

Neden eklemediğimi merak ediyor olabilirsiniz. {tax} argümanınızı basitçe aşağıdaki gibi yazdığınız argüman:

Geçmişte yaptıysanız, bu taksonomi sorgulama yöntemine aşina olabilirsiniz, ancak artık kullanımdan kaldırıldı ve kullanmamalısınız. bu yüzden bağlı kal tax_query! kullanma tax_query yine de size çok daha fazla esneklik sağlar.

Özet

Taksonomileri sorgulamak, kategoriler ve etiketlerden biraz daha karmaşıktır, çünkü tax_query argüman.

Ancak, gördüğümüz gibi, bu, veritabanınızı istediğiniz şekilde sorgulamanız için size çok fazla kapsam ve esneklik sağlayan çok güçlü bir argümandır.

Bu gönderi, şu kişilerin katkılarıyla güncellendi: Nitish Kumar. Nitish, çeşitli platformlarda e-ticaret web siteleri oluşturma deneyimine sahip bir web geliştiricisidir. Boş zamanlarını günlük hayatını kolaylaştıran kişisel projeler üzerinde çalışarak ya da arkadaşlarıyla uzun akşam yürüyüşleri yaparak geçiriyor.

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

Başa dön tuşu