WP_Query Bağımsız Değişkenleri: Özel Alanlar

  • 17.05.2019

Makale dizimizi izlediyseniz, muhtemelen WP_Query sınıfının nasıl çalıştığını ve kendi sorgularınızı oluşturmak için onu nasıl kullanabileceğinizi zaten biliyorsunuzdur. Veritabanından hangi verileri almak istediğinizi belirlemek için bu sınıfın argümanlarına aşina olmanız ve bunları doğru kullanmayı öğrenmeniz gerekir.

Bugün özel alanlar için argümanlarla tanışacağız ( Özel Alanlar), ama önce WP_Query'de argümanların nasıl kullanılacağını hatırlayalım.

WP_Query'de Argümanların Nasıl Çalıştığını Hatırlamak

Bir temada veya eklentide WP_Query kullandığınızda, kodunuza eklemeniz gereken dört ana öğe vardır:

  • Parametreleri kullanan sorgu bağımsız değişkenleri;
  • İsteğin kendisi;
  • Çevrim;
  • Son aşama: kayıt verilerinin sıfırlanması.

Pratikte şöyle görünür:

have_posts ()) (// sorgu sonuçlarından veri işleme döngüsünü başlat while ($ sorgu-> have_posts ()) ($ sorgu-> the_post (); // yoklanan gönderinin içeriği)) // orijinal gönderiyi geri yükle veri wp_reset_postdata(); ?>

Argümanlar, WordPress'e veritabanından hangi verilerin alınacağını söyler:

$ args = dizi (// İsteğiniz için bağımsız değişkenler);

Gördüğünüz gibi, argümanlar bir diziye sarılır.

Argümanlar için Kod Yazma

Bir dizide argümanları ayarlamanın özel bir yolu vardır:

$ args = dizi ("parametre1" => "değer", "parametre2" => "değer", "parametre3" => "değer");

Parametreleri ve değerlerini tek tırnak içine almanız ve ayrıca aralarında => kullanmanız gerekir. Her argüman bir virgülle ayrılır. Burada yanlış bir şey yaparsanız, WordPress belirttiğiniz tüm argümanları yoklamayabilir ve ekranda hiçbir şey görüntülenmez.

Özel alan seçenekleri

Keyfi alanlar ( post metadata olarak da bilinir) ayrı bir WP_Meta_Query sınıfı kullanabilir. Bu nedenle, gönderi meta verilerini almak için WP_Meta_Query veya WP_Query ( yine de WP_Meta_Query'yi çağıran). Ancak meta veriler ve diğer öğeler için bir istekte bulunmak istiyorsanız ( yazı türü), o zaman yalnızca WP_Query kullanılmalıdır.

Bu sınıfı ve WP_Query arasındaki temel fark, WP_Query'nin iç içe dizileri kullanmak zorunda kalmadan basit argümanlar oluşturmanıza izin vermesidir.

Basit bir özel alan isteği için parametreler

Özel alanlarda sorgu yürütmek için temel WP_Query parametreleri:

  • Meta Anahtarı ( sicim): özel alan anahtarı;
  • meta_değer ( sicim
  • meta_değer_sayısı ( sayı): özel alan değeri;
  • meta_karşılaştır ( sicim): test edilecek operatör " meta_değer". Geçerli değerler:" = ","! = ","> ","> = ","<", "<=", "LIKE", "NOT LIKE", "IN", "NOT IN", "BETWEEN", "NOT BETWEEN", "NOT EXISTS", "REGEXP", "NOT REGEXP" или "RLIKE". Значение по умолчанию: "=".

Özel alanlarda basit sorgular oluşturmak için bu parametreleri kullanın. Örneğin, key1 ( anlamı ne olursa olsun), aşağıdaki argümanı kullanmanız gerekir:

$ args = dizi ("meta_key" => "anahtar1");

Bu argüman, değerden bağımsız olarak key1 ile rastgele bir alana sahip tüm kayıtları alacaktır. Belirli bir değer atamak için ek bir argüman eklemeniz gerekir:

$ args = dizi ("meta_key" => "anahtar1", "meta_değer" => "değer1");

Bu argüman, key1'e ve value1'e sahip rastgele bir alanla tüm kayıtları yazdıracaktır.

Anahtardan bağımsız olarak değeri value1 olacak özel bir alana sahip tüm kayıtları da alabilirsiniz. Bu, yinelenen değerlere sahip birden çok isteğe bağlı alan anahtarı kullanırken gereklidir:

$ args = dizi ("meta_değer" => "değer1");

Gördüğünüz gibi, isteğe bağlı bir alana anahtar veya değere göre bir istek gönderebilirsiniz ve her seferinde her iki argümanı da belirtmek gerekli değildir.

meta_compare argümanını kullanma

Meta_compare argümanı için birçok seçenek olduğunu fark etmiş olabilirsiniz. En sık kullanılanlara bir göz atalım:

  • =: Eşit. Bu varsayılan ayardır. Yani, meta_compare argümanını kullanmazsanız, WP_Query onu kullanır;
  • ! +: Eşit değil;
  • >: Büyüktür;
  • > =: Büyüktür veya eşittir;
  • LIKE: Bu parametre, değeri girdiğiniz durumu yok sayar. Değerleri bulmak için burada özel karakterler bile kullanabilirsiniz;
  • GİBİ DEĞİL: GİBİ ile aynı şekilde çalışır, yalnızca tam tersi;
  • IN: Bir dizide bir veya daha fazla değere sahip kayıtları aramak için bu parametreyi 'değer' bağımsız değişkeninde bir dizi ile kullanın;
  • ARASINDA: İki değer arasında (ancak buna eşit olmayan) özel alan değerine sahip kayıtları bulmak için (meta_değer bağımsız değişkeninde belirtilen) iki sayısal değerden oluşan bir diziyle kullanılır;
  • ARASINDA DEĞİL: Meta_değerinde belirtilen iki sayısal değer aralığının dışında özel alan değerine sahip sorgu kayıtları.

Özel alan anahtarlarını veya değerleri meta_compar argümanıyla hariç tutabilirsiniz. Anahtar değerinde key1 olanlar hariç tüm kayıtları almak için aşağıdaki kodu kullanmanız gerekir:

$ args = dizi ("meta_key" => "key1", "meta_compare" => "! =");

'NOT IN' değerini meta_compare bağımsız değişkeninde kullanabilirsiniz; bu, birden çok değerden oluşan bir dizeyle de kullanılabilir:

$ args = dizi ("meta_key" => "key1, key2", "meta_compare" => "DEĞİL");

Bu kod, key1 veya key2 değerlerine sahip rasgele alanları olmayan kayıtları sorgular. Belirli bir özel alanla kayıt istemeniz gerekiyorsa, ancak başka bir alanla değil, o zaman size daha sonra anlatacağım iç içe bir dizi kullanabilirsiniz.

Yukarıdaki örneklerde sayısal olmayan değerler kullanılmıştır. WP_Query'yi yalnızca bu değerlere sahip gönderileri almak için değil, aynı zamanda belirtilenlerden daha yüksek veya daha düşük özel alanlara sahip gönderileri sorgulamak için sayısal değerler içeren özel alanlarla kullanabilirsiniz. Örneğin, belirtilen maliyetten daha ucuz veya daha pahalı malları aramanız gerektiğinde bu, bir çevrimiçi mağazada yararlı olabilir.

Belirli bir sayıdan daha yüksek özel alan değerine sahip kayıtları bulmak için aşağıdaki kodu kullanmanız gerekir:

$ args = dizi ("meta_key" => "numkey", "meta_value" => "100", "meta_compare" => ">");

Bu sorgu, özel alan değeri 100'ün üzerinde olan tüm kayıtları getirecektir. 100 ve üzeri değerlere sahip kayıtları sorgulamanız gerekiyorsa, "meta_compare" => "> =" parametresini kullanabilirsiniz.

Ayrıca, BETWEEN argümanını ve bir diziyi kullanarak, belirli bir aralıktaki değerlerin kullanıldığı rastgele alanlardaki kayıtları bulabilirsiniz:

$ args = dizi ("meta_key" => "numkey", "meta_value" => dizi ("100", "200"), "meta_compare" => "ARALARINDA");

Bu sorgu, 100 ile 200 arasında özel alan değerlerine sahip tüm kayıtları bulacaktır.

İç içe geçmiş özel alanlar için sorgular

Birkaç rastgele alanda bir sorgu yürütmeniz veya birden fazla operatör kullanmanız gerekiyorsa, iç içe dizi kullanabilirsiniz.

Talep yapısı aşağıdaki gibi olacaktır:

$ args = dizi ("meta_query" => dizi ("relation" => "", // İsteğe bağlı argüman. dizi (// `meta_query` argümanları burada olacak.)));

WP_Query sınıfındaki "meta_query" argümanının yapısı, aşağıdaki makalelerde ayrıntılı olarak tartışacağımız WP_Meta_Query sınıfını kullanırken aynı olacaktır.

WordPress 4.1'in piyasaya sürülmesinden bu yana, daha da karmaşık ve kesin sorgular oluşturmak için birden çok düzeyde iç içe dizi kullanmak mümkün hale geldi. Bu tür isteklerin yapısı şöyle görünür:

$ args = dizi ("meta_query" => dizi ("ilişki" => "", // İsteğe bağlı argüman. dizi ("ilişki" => "", dizi (// İlk argüman seti `meta_query`.), dizi) ( // İkinci argüman grubu `meta_query`dir.))));

Bu yaklaşım, sorguda farklı düzeylerde farklı ilişkiler kullanmanıza olanak tanır. Örneğin, bir özel alanda tek bir değere ve başka bir özel alanda her iki değere sahip kayıtlar için sorgu oluşturabilirsiniz.

Sonuç olarak

Meta veri sonrası sorguları oluşturmak için WP_Query sınıfını kullanma ( veya özel alanlar) operatörlerle birlikte birçok farklı argümanla çalışma esnekliği sağlar.

Yalnızca meta veri sonrası argümanları kullanmak istiyorsanız ( ve onları başkalarıyla birleştirmeyin), daha sonra bahsedeceğimiz WP_Meta_Query sınıfını da kullanabilirsiniz.

Yazının tercümesi “ WP_Query Bağımsız Değişkenleri: Özel Alanlar”Şantiye kurma projesinin güler yüzlü ekibi tarafından A'dan Z'ye hazırlanmıştır.

Prestashop bir çevrimiçi mağaza yönetimi motorudur. İnternette ürün sayfalarını iyileştirmeye ve dönüşümleri artırmaya yardımcı olabilecek birçok ücretsiz ve ücretli Prestashop modülü vardır. Bu yazıda, en iyi 5 SEO modülüne bir göz atacağız.

WP_Query sınıfını keşfetme serimizdeki bugünkü makalemizde, sorgulamak için WP_Query ile birlikte kullanabileceğiniz birkaç argüman hakkında bilgi edineceksiniz:

  • durum;
  • Emir;
  • sayfalama.

Bu bağımsız değişkenler, veritabanından kayıtları almak, ek sorgularında, kayıtları yeniden sıralamak ve sıralamak, kaç tane görüntüleneceğini belirtmek ve çok daha fazlası için kullanılabilir.

WP_Query'de Argümanların Nasıl Çalıştığını Hatırlamak

WP_Query'yi kendi dış görünümlerinizde veya eklentilerinizde kullandığınızda, kodunuza eklemeniz gereken dört temel öğe vardır:

  • Parametreleri kullanan sorgu bağımsız değişkenleri;
  • İsteğin kendisi;
  • Çevrim;
  • Son aşama: kayıt verilerinin sıfırlanması.

Pratikte şöyle görünür:

have_posts ()) (// sorgu sonuçlarından veri işleme döngüsünü başlat while ($ sorgu-> have_posts ()) ($ sorgu-> the_post (); // yoklanan gönderinin içeriği)) // orijinal gönderiyi geri yükle veri wp_reset_postdata(); ?>

Argümanlar, WordPress'e veritabanından hangi verilerin alınacağını söyler. Kodun en başına odaklanalım:

$ args = dizi (// İsteğiniz için bağımsız değişkenler);

Gördüğünüz gibi, argümanlar bir diziye sarılır.

Argümanlar için Kod Yazma

Bir dizideki bağımsız değişkenleri başlatmak için belirli bir sözdizimi vardır:

$ args = dizi ("parametre1" => "değer", "parametre2" => "değer", "parametre3" => "değer");

Parametreleri ve değerlerini tek tırnak içine almalı ve aralarında => kullanmalısınız. Bağımsız değişkenler virgülle ayrılır. Yerleşik sözdizimini izlemezseniz, WordPress belirttiğiniz tüm argümanları yoklamayabilir ve sonuç olarak ekranda hiçbir şey görüntülenmez.

Durum parametreleri

Bildiğiniz gibi, WordPress her gönderi için ayrı bir durum belirler. Bir veya daha fazla statüye sahip gönderileri sorgulamak için post_status parametresini kullanabilirsiniz.

Aşağıdaki argümanlar mevcuttur:

  • yayınla: yayınlanan yazı veya sayfa;
  • beklemede: gönderi beklemede;
  • taslak: taslak durumuna giriş;
  • otomatik taslak: herhangi bir içerik olmadan yeni oluşturulan gönderi;
  • gelecek: programlı kayıt;
  • özel: giriş, sitede yetkilendirilmemiş ziyaretçiler tarafından görülmez;
  • devralın: gönderinin değiştirilmiş versiyonu veya ekli gönderilerin durumu;
  • çöp kutusu: giriş çöp kutusunda;
  • any: parametreli olanlar dışında herhangi bir durum sorar 'Exclude_from_search' true olarak ayarlayın (örneğin, otomatik taslak veya çöp).

İsteğinizin bağımsız değişkenlerinde bir durum belirtmezseniz, WordPress varsayılan olarak yayınlamayı hedefleyecektir; kullanıcı sitede yetkilendirilmiş ise, istekte özel statülü kayıtlar da dikkate alınacaktır. Yönetici olarak bir istek çalıştırırsanız, WordPress korumalı durumları da dikkate alır: gelecek, taslak ve beklemede.

Kendi etkinlik gönderi türünü kullanan ve yayın tarihi olarak etkinliğin planlandığı tarihi kullanan bir poster siteniz olduğunu varsayalım. Varsayılan olarak, WordPress henüz gerçekleşmemiş olayları görüntülemeyecektir. Planladığınıza rağmen, yayın tarihi gelecekte, yani gönderi durumu gelecekte olacak.

Bu soruna geçici bir çözüm bulmak için aşağıdaki bağımsız değişkenleri kullanabilirsiniz:

$ args = dizi ("post_type" => "event", "post_status" => "gelecek");

Bu kod, yayımlanmış kayıtlar için yayınlama durumu kullanıldığından, henüz gerçekleşmemiş olayları görüntüler. Ancak meydana gelen olayları göstermek gerekirse, birden fazla durumun belirtildiği bir dizi kullanmanız gerekir:

$ args = dizi ("post_type" => "event", "post_status" => dizi ("gelecek", "yayınla"));

Post_status parametresi, ek istekleri yapılırken önemlidir, çünkü durum yayınlamak değil devralır. Tüm ekleri sorgulamak için aşağıdaki kodu kullanabilirsiniz:

$ args = dizi ("post_type" => "ek", "post_status" => "devralma");

Ancak devralmayı size aynı sonucu verecek başka bir durumla değiştirebilirsiniz.

Sıralama seçenekleri

WP_Query kullanılarak alınan kayıtları sıralamak için kullanılabilecek iki parametre vardır: order ve orderby. Daha önce anladığınız gibi order, kayıtların döngüde görüntülenme sırasını, orderby ise veritabanında hangi alana göre sıralanacağını belirler.

Sipariş parametresi

Sıralamak için kullanabileceğiniz tüm argümanlar vardır:

ASC: Artan (1, 2, 3; a, b, c).
TANIM: azalan (3, 2, 1; c, b, a).

Sipariş için bir argüman eklemezseniz, WordPress varsayılan olarak DESC'yi kullanır.

Sipariş parametresi

Kayıtları birkaç alana göre sıralayabilirsiniz:

  • yok: sıralama koşulu yok ( 2.8 sürümünden itibaren mevcuttur);
  • Kimlik: posta kimliğine göre sıralayın. Büyük harf unutmayın;
  • yazar: yazara göre sırala;
  • başlık: başlığa göre sırala;
  • isim: bilgi girişine göre sırala;
  • tür: gönderi türüne göre sırala;
  • tarih: tarihe göre sırala;
  • değiştirilme: son değiştirilme tarihine göre sırala;
  • ebeveyn: üst yazının / sayfanın kimliğine göre sırala;
  • rand: rastgele sıra
  • yorum_sayısı: yorum sayısına göre sıralar;
  • menu_order: sayfa sırasına göre sırala. En sık sayfalar için kullanılır ( burada, sayfa düzenlenirken meta blokta belirtilen değer kullanılır.), ayrıca ekler için ( Medya Ekle / Yükle iletişim kutusundan bir tamsayı kullanır). menu_order etkinleştirilmiş herhangi bir gönderi türü için de kullanılabilir;
  • meta_value: meta-anahtar veya özel değere göre sıralayın;
  • alanlar: Yalnızca meta_key parametresi ayarlanmışsa çalışır. Meta değerler sayısal olarak değil alfabetik olarak sıralanmıştır ( yani, 4 rakamından önce 34 görüntülenecektir.);
  • meta_value_num: sayısal meta değerine göre sıralar. Meta_değerinde olduğu gibi, istek meta_key bağımsız değişkenini kullanmalıdır;
  • post__in: sıralamayı post__in dizisinde ayarlanan posta kimliğine göre tutar.

Varsayılan olarak, sıralama için tarih alanı kullanılır. Yani yayın tarihine göre sıralanmıştır.

Gönderileri başlığa göre azalan düzende sıralamak istiyorsanız, aşağıdaki argümanları kullanabilirsiniz:

$ args = dizi ("orderby" => "title", "order" => "ASC");

Birden çok alana göre sıralama

Kayıtları birden çok alana göre sıralamak için orderby parametreli bir dizi ve her alanı farklı bir sırada sıralamak istiyorsanız order parametresi kullanmanız gerekir.

Bir çevrimiçi mağazayı sıralamak için kullanmak istediğiniz özel bir derecelendirme alanınız olduğunu varsayalım. Derecelendirmeye göre artan ve ardından aşağıdaki kodla başlığa göre sıralayabilirsiniz:

$ args = dizi ("orderby" => dizi ("meta_value_num", "title"), "order" => "ASC", "meta_key" => "derecelendirme");

İsteğe meta_key argümanını ekledim ve bu, WordPress'in hangi özel alanı kullandığımızı bilmesini sağlayacak. Bunun nedeni, WordPress'in post meta verilerini wp_posts'ta değil, wp_postmeta tablosunda depolamasıdır.

Ancak, azalan derecelendirme düzeninde ve ardından başlığa göre artan düzende sıralama yapmak isterseniz ne olur? Bu durumda, başka bir dizi kullanılmalıdır:

$ args = dizi ("orderby" => dizi ("meta_value_num", "title"), "order" => dizi ("DESC", "ASC"), "meta_key" => "derecelendirme");

Kayıt meta verilerini kullanmak istemiyorsanız, birden çok alana göre de sıralayabilirsiniz. Örneğin, gönderileri türe ve ardından tarihe göre sıralamak için aşağıdaki kodu kullanabilirsiniz:

$ args = dizi ("orderby" => dizi ("tür", "tarih"), "sipariş" => dizi ("ASC", "DESC"));

Bu kod, gönderi türüne göre artan düzende ve ardından her gönderi türünde tarihe göre azalan düzende sıralanır.

Sayfalandırma seçenekleri

Sayfalandırma ile içeriğin sayfalandırılmasıyla ilgili başka bir parametre grubuna geçiyoruz. Bu parametreler, kaç kaydın yoklanacağını ve sayfalandırmanın nasıl gerçekleşeceğini belirlemeye yardımcı olur.

Aşağıdaki seçenekler mevcuttur:

  • mesaj gönderme ( boole): tüm gönderileri görüntüleyin veya sayfalama kullanın. Varsayılan 'YANLIŞ' yani sayfalama kullanılır;
  • posts_per_page ( int): sayfa başına kayıt sayısı;
  • posts_per_archive_page (int): sayfa başına kayıt sayısı, ancak yalnızca arşiv sayfasında;
  • telafi etmek ( int): çıktının başlamasından sonraki kayıt sayısı;
  • çağrılı ( int): arşivdeki sayfaların görüntülendiği sayfa;
  • sayfa ( int): statik bir ana sayfa için sayfa sayısı. Statik ana sayfa etkinleştirildiğinde normalde yalnızca X sayfasında gösterilmesi gereken gönderileri görüntüleme ( Ön Sayfa);
  • ignore_sticky_posts (boole değeri): ekli gönderileri yoksay. Varsayılan yanlıştır.

Kayıt sayısı ve atlama kayıtları

En son beş gönderiyi göstermek için aşağıdaki kodu kullanıyoruz:

$ args = dizi ("posts_per_page" => "5");

En son gönderilenler hariç, en son beş gönderi gösteriliyor:

$ args = dizi ("posts_per_page" => "5", "offset" => "1");

Lütfen, veritabanındaki son altı kayıttan kayıtları almanıza rağmen, hala kullandığınızı unutmayın. "Posts_per_page" => "5", çünkü bu, görüntülenmesi gereken girişlerin sayısıdır.

Biri en son kayıtları görüntülemek için, diğeri o kayıt hariç 10 kaydı daha görüntülemek için iki sorgu oluşturabilirsiniz:

Tüm gönderileri görüntülemek için posts_per_page kullanabilirsiniz:

$ args = dizi ("posts_per_page" => "-1");

Ekli gönderiler

Genellikle, ekli gönderiler herhangi bir istekte ilk sırada görünür. Bu ayarı geçersiz kılmanız gerekiyorsa, yoksay_sticky_posts parametresini kullanın:

$ args = dizi ("posts_per_page" => "5", "ignore_sticky_posts" => true);

Yukarıdaki argümanlar, ekli olsun ya da olmasın, son beş kaydı alacaktır.

Yalnızca ekli gönderileri görüntülemek istiyorsanız, get_option () işlevini ve post__in bağımsız değişkenini aşağıdaki gibi kullanmanız gerekir:

$ yapışkan = get_option ("sticky_posts"); $ args = dizi ("posts_per_page" => "5", "post__in" => $ yapışkan);

Yukarıdaki kod, en son eklenen beş gönderiyi alacaktır. Beşten az varsa (örneğin, üç), yalnızca mevcut sayıda ekli kayıt görüntülenecektir.

Arşiv sayfalandırması

Alınan kayıtların birden çok arşiv sayfası veya arama sayfası arasında nasıl dağıtılacağını belirlemek için sayfalandırma seçeneklerini de kullanabilirsiniz.

Örneğin, bir arşiv sayfasında her sayfada 20 kayıt görüntülemek için aşağıdaki kod kullanılabilir:

$ args = dizi ("posts_per_archive_page" => "20");

Not: posts_per_archive_page bağımsız değişkeni, posts_per_page öğesini geçersiz kılar.

Belirtilen kriterlere göre veritabanından kayıtları seçer. get_posts() ve query_posts() fonksiyonları ve wp_posts tablosundan kayıt seçimi ile ilgili diğer tüm sorgular WP_Query bazında çalışır.

Filtre Notları

Doğrudan SQL sorgusunun kendisine enjekte etmek için aşağıdaki filtreleri kullanabilirsiniz.

Önemli: Bir parametre belirtilirse, tüm bu kancalar çalışmayacaktır!

Sayfalandırma isteği yüklenmeden önce tetiklenen filtreler:
  • - SQL'i "WHERE" değiştirir
  • posts_join - SQL "JOIN" öğesini değiştirir
Sayfalandırma isteği yükledikten sonra tetiklenen filtreler:
  • - sayfalama sırasında SQL "WHERE" yi değiştirir
  • posts_groupby - SQL'i "GROUP BY" değiştirir
  • posts_join_paged - Sayfalandırma sırasında SQL "JOIN" öğesini değiştirir
  • posts_orderby - "ORDER BY" SQL'ini değiştirir
  • posts_distinct - SQL "DISTINCTROW" u değiştirir
  • post_limits - SQL "LIMIT" i değiştirir
  • posts_fields - sonuçtaki tablo alanlarını değiştirir
  • post_mime_type (dize / dizi)

    Mim kayıt türü. Yalnızca ekler için kullanılır - "ek" türündeki gönderiler.

    Bu parametre yalnızca post_type = ek ve post_status = devralan parametreleri olduğunda çalışır. Onlar. Yalnızca eklerin MIME türü olabilir.

    Sadece her türden resim alacağız

    $ sorgu = new WP_Query (dizi ("post_mime_type" => "image", "post_type" => "ek", "post_status" => "devralma",));

    Yalnızca türün gif resimlerini alacağız

    $ sorgu = new WP_Query (dizi ("post_mime_type" => "image / gif", "post_type" => "ek", "post_status" => "devralma",));

    Resimler hariç her türlü eki alacağız

    $ sorgu = new WP_Query (dizi ("post_mime_type" => dizi ("uygulama", "metin", "video", "ses")), "post_type" => "ek", "post_status" => "devralma", ));

    Seçenekler Durumlar

    Belirtilen duruma sahip gönderileri alır.

    Post_status (dize / dizi)

    Gönderi durumu.

    Varsayılan olarak yayınla ve kullanıcı yetkilendirilmişse özel de eklenir. İstek yönetici bölümünden başlatılırsa, korumalı durum türleri de eklenir: gelecek, taslak ve beklemede. Her türlü durum:

    • yayınla - yayınlanan yazı.
    • beklemede - moderasyonda yayınlayın.
    • taslak - taslak.
    • otomatik taslak - WordPress'in kendisi tarafından kaydedilen bir taslak (otomatik kaydetme).
    • gelecek planlanmış bir gönderidir.
    • özel - kişisel gönderi.
    • miras - revizyon veya ek.
    • çöp kutusu - silinen gönderi (çöp kutusunda). 2.9 sürümünden beri.
    • any - parametrede dışlama_from_search = true olan durumlar dışında tüm durumlar. register_post_status() ve get_post_stati()'ye bakın.

    Varsayılan: "yayınla"

    Duruma göre gönderiler

    Yalnızca taslaklar alacağız:

    $ sorgu = yeni WP_Query ("post_status = taslak");

    Farklı durumlara sahip gönderiler alıyoruz:

    $ sorgu = new WP_Query (dizi ("post_status" => dizi ("beklemede", "taslak", "gelecek")));

    Her türlü yatırımı alacağız:

    $ sorgu = new WP_Query (dizi ("post_status" => "herhangi bir", "post_type" => "ek"));

    Seçenekler Tarihler (zamanlar)

    Belirli bir zaman dilimine ait gönderileri görüntüler.

    Yıl (sayı) 4 basamaklı yıl (2013) ay numarası (sayı) Ay sayısı (1 - 12) w (sayı) Yılın haftası (0'dan 53'e kadar) gün (sayı) Ayın günü (1 - 31) saat (sayı) Saat (0 - 23) dakika (sayı) Dakika (0 - 60) saniye (sayı)İkinci (0 - 60) m (sayı) YılAy (2013) tarih_sorgusu (dizi)

    İsteğin oluşturulacağı parametreler. Ayrı bir sınıf tarafından desteklenmektedir: WP_Date_Query.

    Bu parametre, iç içe diziler içerebilen bir dizi olarak belirtilir. Parametreler: ana dizi için sütun, karşılaştırma, ilişki (varsa) iç içe diziler için varsayılan parametreler olarak çalışır.

      sütun, sorgu için veritabanındaki alandır. Belki:
      Posta tarihi
      post_date_gmt
      post_modified
      post_modified_gmt
      yorum_tarihi
      yorum_tarihi_gmt
      user_registered
      Varsayılan: "post_date"

      karşılaştır - Tüm iç içe diziler için varsayılan karşılaştırma operatörü. Belki: Belki: =,! =,>,> =,< , <= , IN , NOT IN , BETWEEN , NOT BETWEEN .
      Varsayılan: "="

      ilişki - operatör, tarih içeren birkaç dizi belirtilmişse:
      VE (belirtilen tüm dizileri aynı anda dikkate alın).
      VEYA (belirtilen en az bir diziyle eşleşme varsa).
      Varsayılan - VEYA

      Aşağıdaki seçenekler iç içe dizilerde kullanılmalıdır. Belirli bir tarih için talebi tanımlarlar.

      Ayrıca, aşağıdaki tüm parametreler ana dizide kullanılabilir.

      • önce (dize / dizi)- Alınacak "kadar" kayıt tarihi. strtotime () işlevinin anlayacağı bir dizeyi kabul eder: tüm olası biçimler. Veya şu indeksleri olan bir diziyi iletebilirsiniz: yıl, ay, gün: dizi ("yıl" => "2015", "ay" => "5", "gün" => "28")

        sonrasında (dize / dizi)- Alınacak "sonra" kayıt tarihi. strtotime () işlevinin anlayacağı bir dizeyi kabul eder: tüm olası biçimler. Veya şu indeksleri olan bir diziyi iletebilirsiniz: yıl, ay, gün: dizi ("yıl" => "2015", "ay" => "5", "gün" => "28")
        Geçerli site saatine göre (UTC değil).

        kolon (hat)- sadece belirli bir tarih için yukarıya bakın. Varsayılan: üst dizinin değeri.

        karşılaştırmak (hat)- sadece belirli bir tarih için yukarıya bakın. Varsayılan "="'dir.

        dahil (mantıklı)- önce ve sonra bağımsız değişkenler, doğruysa dahil olarak işlenir. Varsayılan: yanlış.

      • yıl (sayı / dizi)- yıl, örneğin 2013
      • yılın günü (sayı / dizi)- yılın gün sayısı, 1-366.
      • ay (sayı / dizi)- ay, 1-12
      • hafta (sayı / dizi)- hafta, 0-53
      • gün (sayı / dizi)- gün, 1-31
      • haftanın günü (sayı / dizi)- haftanın günü, 1-7, burada 1 Pazar
      • dayofweek_iso (sayı / dizi)- haftanın günü, 1-7, burada 1 Pazartesi
      • saat (sayı / dizi)- saat, 0-23
      • dakika (sayı / dizi)- dakika, 0-60
      • ikinci (sayı / dizi)- saniye, 0-60

      Parametrelerde: yıl, ay, hafta, yıl yılı, gün, haftanın günü, haftanın günü_iso, saat, dakika, saniye, karşılaştırma parametresi eşleşirse, bir dizi olarak birkaç değer belirtebilirsiniz.

    #1. Bugünkü yazıları alalım:

    $ bugün = getdate(); $ sorgu = yeni WP_Query ("yıl =". $ bugün ["yıl"]. "& aynum =". $ bugün ["mon"]. "& gün =". $ bugün ["gün"]);

    # 2. Geçen haftanın gönderilerini alalım:

    $ hafta = tarih ("W"); $ yıl = tarih ("Y"); $ sorgu = new WP_Query ("yıl =". $ yıl. "& w =". $ hafta);

    # 3. 20 Aralık için gönderileri alalım:

    $ sorgu = yeni WP_Query ("ay sayısı = 12 ve gün = 20");

    #4. 1 Mart - 15 Mart 2010 dönemi için gönderileri alalım:

    // filter_where ($where = "") (// 1 Mart - 15 Mart 2010 arası) sorgu işlevine where yan tümcesi ekleyecek yeni bir işlev oluşturun $where. = "AND post_date> =" 2010-03-01 "VE post_date< "2010-03-16""; return $where; } add_filter("posts_where", "filter_where"); $query = new WP_Query($query_string); remove_filter("posts_where", "filter_where");

    Yukarıdaki istekler, geçmişte belirtilen dönem için gönderileri döndürür: "X ay, X gün içindeki gönderiler." Şimdiki zamanla ilgili olarak keyfi bir süre boyunca görev alamazlar. Bu nedenle, "Son 30 gündeki gönderiler" veya "Geçen yıldaki gönderiler" gibi sorgular temel sürümde mümkün değildir, bu tür sorgular için "posts_where" filtresini kullanmanız gerekir. Aşağıdaki örnekler bunun nasıl yapılacağını göstermektedir.

    #5. Son 30 güne ait gönderileri alalım:

    // filter_where ($where = "") (// son 30 gün için $where. = "AND post_date>" ". Date (" Ymd ", strtotime) sorgu işlevine where yan tümcesi ekleyecek yeni bir işlev oluşturun (" - 30 gün "))." ""; dönüş $ nerede;) add_filter ("posts_where", "filter_where"); $ sorgu = yeni WP_Query ($ sorgu_dizisi); remove_filter ("posts_where", "filter_where");

    # 6. Şu ana kadar 30 ila 60 gün arasında gönderiler alacağız:

    // filter_where ($where = "") (// 30 ila 60 gün arası $where. = "AND post_date> =" ". Date (" Ymd ", strtotime (" - 60 gün "))." "". "VE post_date<= "" . date("Y-m-d", strtotime("-30 days")) . """; return $where; } add_filter("posts_where", "filter_where"); $query = new WP_Query($query_string); remove_filter("posts_where", "filter_where");

    "m" parametresi sadece admin panelindeki gönderiler listesinde ayarlanabilir. Tarihin YYYYmm olarak ayarlandığı bir açılır listeden seçim yaptığınızda kullanışlıdır.

    date_query parametresi ile örnekler

    #1. Gönderileri saat 9 ile 17 arasında alacağız:

    $ args = dizi ("date_query" => dizi ("saat" => 9, "karşılaştır" => "> =",), dizi ("saat" => 17, "karşılaştır" => "<=",), array("dayofweek" =>dizi (2, 6), "karşılaştır" => "BETWEEN",),), "posts_per_page" =>

    # 2. 1 Ocak - 28 Şubat arasındaki süre için gönderiler alacağız:

    Tarihler sayılar ve dizgiler olarak belirtilebilir, çünkü önceki ve sonraki argümanlar PHP'nin dizgeleri anlayan strtotime () işlevi tarafından işlenir.

    $ args = dizi ("date_query" => dizi (dizi ("sonra" => "1 Ocak 2013", "önce" => dizi ("yıl" => 2013, "ay" => 2, "gün") => 28,), "dahil" => doğru,),), "posts_per_page" => -1,); $ sorgu = yeni WP_Query ($ argümanlar);

    # 3. Bir yıl önce yayınlanan, ancak geçen ay değişen gönderileri alalım:

    $ args = dizi ("date_query" => dizi ("sütun" => "post_date_gmt", "önce" => "1 yıl önce"), dizi ("sütun" => "post_modified_gmt", "sonra" => "1 ay önce",),), "posts_per_page" => -1,); $ sorgu = yeni WP_Query ($ argümanlar);

    #4. "2 hafta önce" dizesini kullanarak son 2 haftanın gönderilerini alın:

    $ sorgu = new WP_Query (dizi ("date_query" => dizi ("sonra" => "2 hafta önce",),));

    #5. Son 2 ayın hafta içi yayınlanan gönderilerini alalım:

    $ sorgu = new WP_Query (dizi ("date_query" => dizi ("sonra" => "2 ay önce", dizi ("dayofweek" => dizi (1, 5)), "karşılaştırma" => "BETWEEN"),) ,),));

    date_query argümanı WP_Comment_Query sınıfıyla da çalışır, bu nedenle get_comments () işlevinde tam olarak kullanılabilir.

    Seçenekler Girinti

    Girintiyi sorgu sonuçlarında ilk gönderiden ayarlayabilirsiniz. Örneğin, standart sorgu 6 gönderi döndürür ve aynı sorguya offset = 1 parametresini eklerseniz 5 gönderi döndürülür (istekteki ilk gönderi atlanır).

    Telafi etmek (sayı) Sorgu sonuçlarından atlanacak yayın sayısı.

    kullanım örneği

    İlk / bir gönderiyi atlayalım (ofset = 1) ve sonraki 5'i döndürelim:

    $ sorgu = new WP_Query ("posts_per_page = 5 & offset = 1");

    Seçenekler Sırala ve sırala

    Sıralar ve sıralama yönünü ayarlar.

    Fields = ids parametresini belirtirseniz sıralama parametreleri çalışmayacaktır, çünkü bu durumda sorguda sonucu sıralayabileceğiniz alanlar olmayacaktır.

    Emir (hat)

    orderby parametresine göre sıralama yönü şöyle olabilir:

    • ASC - küçükten büyüğe doğru sırayla (1, 2, 3; a, b, c).
    • DESC - ters sırada, en yüksekten en düşüğe (3, 2, 1; c, b, a).
    tarafından sipariş (hat)

    Gönderileri sıralayabileceğiniz alanlar. Belki

    • yok - sıralama yapmayın, veritabanında olduğu gibi görüntüleyin. Kimliğe göre sıralamaya eşdeğerdir. 2.8 sürümünden beri.
    • Kimlik - kimliğe göre sıralama.
    • yazar - yazar kimliğine göre sıralama.
    • başlık - başlığa göre sıralama.
    • isim - gönderinin adına göre (kısayol, slug sonrası).
    • tarih - yayın tarihine göre sıralayın.
    • değiştirildi - değiştirilme tarihine göre sıralayın.
    • type - yazı tipine göre (post_type). 4.0 sürümünden beri
    • ebeveyn - üst alanın değerine göre sıralama.
    • rand rastgele sıradır.
    • RAND (x) - sayısal değerler için rastgele sırada. Burada "x" bir tamsayıdır.
    • yorum_sayısı - yorum sayısına göre sıralar. 2.9 sürümünden beri.
    • alaka düzeyi - arama koşuluna göre (s parametresi). Sıralama şu sırayla yapılır: 1) tüm cümlenin eşleşip eşleşmediği. 2) yazının başlığındaki tüm arama terimleri. 3) yazının başlığındaki arama isteğinden herhangi bir kelime. 4) cümlenin tamamı gönderi içeriğinde bulunur.
    • menu_order - Sayfalar ve ekler için kullanılan standart. Seri numarası yazı düzenleme sayfasında belirtilmiştir.
    • meta_value - özel bir alanın değerine göre.

      Önemli: meta_key parametresi de tanımlanmalıdır. Not: Sıralama alfabetik olacak ve rastgele alanların değerleri sayı ise mantıksal olmayacaktır (örneğin 1, 3, 4 değil 1, 3, 34, 4, 56, 6 vb. olacaktır, 6, 34, 56).

    • meta_value_num - değerleri sayı olan rastgele alanlara göre sıralama. 2.8 sürümünden beri.
    • meta_query'den dizi anahtarı - bu durumda, sıralama meta_query dizisinde belirtilen rastgele bir alanın değerine göre olacaktır.
    • post__in - post__in parametresinde belirtilen kimliklerin sırasına uyar. Sipariş parametresi yoksayılır.
    • post_name__in - post_name__in parametresinde belirtilen adların sırasına uyar. Sipariş parametresi yoksayılır.
    • post_parent__in - post_parent__in parametresinde belirtilen kimliklerin sırasını dikkate alır. Sipariş parametresi yoksayılır.
    orderby = dizi ()

    WordPress 4.0'dan beri, her iki parametreyi de birleştiren sırayla bir dizi belirtebilirsiniz: orderby ve order. Bu, aynı anda birkaç sütuna göre sıralamak için yapılır. Sözdizimi aşağıdaki gibidir:

    "orderby" => dizi ("title" => "DESC", "menu_order" => "ASC")

    # 1 Başlığa göre sırala

    $ sorgu = new WP_Query (dizi ("orderby" => "title", "order" => "DESC"));

    Menüde sırayla ve ardından başlığa göre sıralayın

    $ sorgu = new WP_Query (dizi ("orderby" => "menu_order title", "order" => "DESC"));

    # 2 Rastgele bir gönderi göster:

    $ sorgu = new WP_Query (dizi ("orderby" => "rand", "posts_per_page" => "1"));

    # 3 Gönderileri yorum sayısına göre sıralayın:

    $ sorgu = new WP_Query (dizi ("orderby" => "comment_count"));

    # 4 Ürünleri fiyata göre sıralayın (özel fiyat alanı):

    $ sorgu = new WP_Query (dizi ("post_type" => "product", "orderby" => "meta_value", "meta_key" => "price"));

    # 5 Çoklu sıralama

    Gönderileri iki alana göre sıralanmış olarak gösterelim: "başlık" ve "menü_sıra" (başlık her şeyden önemlidir):

    $ sorgu = new WP_Query (dizi ("post_type" => "sayfa", "orderby" => "title menu_order", "order" => "ASC"));

    # 6 Bir dizi kullanarak çoklu sıralama (4.0'dan beri)

    Sayfaları başlık (başlık) ve menü numarasına (menu_order) göre farklı sırayla (ASC / DESC) sıralayalım:

    $ sorgu = new WP_Query (dizi ("orderby" => dizi ("title" => "DESC", "menu_order" => "ASC")));

    # 7 Yeni yazı tipi için "meta_değer"e göre sırala (post_type)

    "yaş" özel alanının anahtarına göre sıralanmış ve filtrelenmiş "my_custom_post_type" türündeki gönderileri görüntüleyelim, böylece yalnızca alan değerleri 3 ve 4 olan gönderiler gösterilecektir:

    $ args = dizi ("post_type" => "my_custom_post_type", "meta_key" => "age", "orderby" => "meta_value_num", "order" => "ASC", "meta_query" => dizi (dizi ( "anahtar" => "yaş", "değer" => dizi (3, 4), "karşılaştır" => "IN",))); $ sorgu = yeni WP_Query ($ argümanlar);

    # 8 Birden çok meta alana göre sıralayın

    Sonucu iki farklı meta alana göre sıralamak için, örneğin önce şehre ve sonra eyalete göre, meta_query dizisindeki dizilerin anahtarlarını belirtmeniz ve ardından orderby parametresinde bu anahtarları kullanmanız gerekir:

    $ sorgu = new WP_Query (["meta_query" => ["relation" => "AND", "state_clause" => ["key" => "state", "value" => "Wisconsin",], "city_clause" "=> [" anahtar "=>" şehir "," karşılaştır "=>" VAR ",],]," orderby "=> [" city_clause "=>" ASC "," state_clause "=>" DESC ", ],]);

    Seçenekler sayfalandırma

    sayfalama (mantıklı) Sayfalandırmayı devre dışı bırakın, tüm gönderileri bir sayfada görüntüleyin. posts_per_page (sayı)

    Bir sayfadaki gönderi sayısı. -1 olarak ayarlanırsa, tüm gönderiler görüntülenecektir (sayfalama olmadan).

    Sürüm 2.1, showposts parametresinin yerini aldığından beri. Bu parametreyi kullandıktan sonra sayfalama çalışmıyorsa, disk belleği parametresini ayarlayın.

    Not: istek besleme bölümündeyse, WP bu parametrenin üzerine posts_per_rss seçeneğiyle yazar. Yayınların özet akışında görüntülenmesini etkilemek için post_limits veya pre_option_posts_per_rss filtrelerini kullanın.

    Posts_per_archive_page (sayı) Arşiv sayfaları için gönderi sayısı: is_archive () veya is_search () koşullarını karşılayan sayfalar için. Bu parametre, "posts_per_page" ve "showposts" parametrelerini geçersiz kılar. telafi etmek (sayı) Seçimin üstüne atlanacak kaç gönderi (üst kenar boşluğu).
    Dikkat: Bu parametrenin ayarlanması, "sayfalanmış" parametrenin üzerine yazar/yok sayar ve sayfalamayı keser (sorunun çözümü). çağrılı (sayı) Sayfalandırma sayfa numarası. Normalde X sayfalandırma sayfasında gösterilmesi gereken gönderileri gösterir.posts_per_page page parametresini geçersiz kılar (sayı) Statik ana sayfanın numarası. Ana statik sayfanın (ön sayfa) X sayfalandırma sayfasında normalde gösterilmesi gereken gönderileri gösterir. görmezden_yapışkan_posts (mantıklı)

    Yapışkan gönderileri yok sayın veya etmeyin (doğru/yanlış). 3.1 sürümünden beri. caller_get_posts parametresini geçersiz kılar.

    Yapışkan gönderiler listenin en üstünde görünmez, ancak hariç tutulmazlar ve normal sırayla görünürler.

    # 1 Sayfa başına gönderi

    3 gönderi alıyoruz:

    $ sorgu = yeni WP_Query ("posts_per_page = 3");

    Tüm gönderileri alıyoruz:

    $ sorgu = yeni WP_Query ("posts_per_page = -1");

    Tüm gönderileri alalım ve sayfalamayı devre dışı bırakalım:

    $ sorgu = new WP_Query ("nopaging = true");

    # 2 Üst dolgu

    Dördüncüden başlayarak gönderileri alalım (ilk 3'ü atlayalım):

    $ sorgu = yeni WP_Query ("ofset = 3"));

    İlk üç gönderiyi takip eden 5 gönderi alıyoruz:

    $ sorgu = new WP_Query (dizi ("posts_per_page" => 5, "offset" => 3));

    # 3 Sayfalandırma sayfa 6'dan gönderiler

    $ sorgu = yeni WP_Query ("sayfalanmış = 6");

    # 4 Geçerli sayfadan gönderiler

    Geçerli sayfalandırma sayfasından gönderileri alın. Özel sayfalandırma oluştururken kullanışlıdır:

    $ sorgu = new WP_Query (["sayfalanmış" => get_query_var ("sayfalanmış")]);

    Geçerli sayfadan gönderileri alın ve değişken ilk sayfalandırma sayfasında tanımlanmadığında disk belleği parametresini 1 olarak ayarlayın:

    $ disk belleği = get_query_var ("disk belleği")? get_query_var ("sayfalanmış"): 1; $ sorgu = new WP_Query (["sayfalanmış" => $ disk belleği]);

    Sitenin statik ana sayfasının sayfa numaralandırma sayfa numarasını almanız gerekiyorsa get_query_var ("sayfa") kullanın - is_front_page (). Sayfa değişkeni, bu durumda, içerik sayfalandırma etiketini kullandığında, post türündeki sayfalardaki sayfa numaralandırma numarasını içerir. .

    Geçerli sayfalandırma sayfasını statik bir ana sayfada görüntüleme:

    $ disk belleği = get_query_var ("sayfa")?: 1; $ sorgu = new WP_Query (["sayfalanmış" => $ disk belleği]);

    # 5 Yapışkan gönderiler (yazılar)

    # Tüm yapışkan gönderiler
    $ yapışkan = get_option ("sticky_posts"); $ sorgu = yeni WP_Query (["post__in" => $ yapışkan]);
    # Yalnızca ilk yapışkan gönderi
    $ yapışkan = get_option ("sticky_posts"); $ sorgu = yeni WP_Query ("p =". $ yapışkan);
    # İlk sabit gönderi, eğer böyle bir gönderi yoksa, son gönderilen gönderi
    $ args = dizi ("posts_per_page" => 1, "post__in" => get_option ("sticky_posts"), "ignore_sticky_posts" => 1); $ sorgu = yeni WP_Query ($ argümanlar);
    # İlk yapışkan gönderi, böyle bir gönderi yoksa hiçbir şey görüntülenmez
    $ yapışkan = get_option ("sticky_posts"); if (! boş ($ yapışkan)) ($ sorgu = yeni WP_Query (dizi ("posts_per_page" => 1, "post__in" => $ sticky, "ignore_sticky_posts" => 1)); // çıktı oluşturuyor ...)
    # 5 son yapışkan gönderi
    $ yapışkan = get_option ("sticky_posts"); // tüm Yapışkan kayıtlar rsort ($ yapışkan); // sırala - en üstte yenileri $ yapışkan = dizi_slice ($ yapışkan, 0, 5); // ilk 5 $ sorgusunu al = yeni WP_Query (["post__in" => $ sticky, "ignore_sticky_posts" => 1]);

    # 6 Yapışkan gönderileri gizle

    Tüm yapışkan gönderileri istekten çıkaralım:

    $ sorgu = new WP_Query (["post__not_in" => get_option ("sticky_posts")]);

    Yapışkan gönderileri kategoriden çıkaralım. Kategorideki tüm gönderileri döndürür, ancak yapışkan gönderiler üstte olmaz, normal gönderiler olarak görüntülenir (tarihe göre):

    $ sorgu = new WP_Query (["ignore_sticky_posts" => 1, "posts_per_page" => 3, "cat" => 6]);

    Yapışkan gönderileri kategoriden çıkaralım. Kategorideki tüm gönderileri döndürür, ancak yapışkan gönderiler tamamen hariç tutulur. Ayrıca doğru sayfalandırma için buraya bir kural ekleyeceğiz:

    $ disk belleği = get_query_var ("disk belleği")?: 1; $ yapışkan = get_option ("sticky_posts"); $ sorgu = new WP_Query (dizi ("cat" => 3, "ignore_sticky_posts" => 1, "post__not_in" => $ sticky, "paged" => $ disk belleği));

    Seçenekler Yorumlar

    Tek bir gönderiyse, yorum sonrası verileri WP_Query nesnesine eklenir. Aşağıdaki parametrelerde bu gibi durumlarda nasıl yorum alınacağı belirtilmektedir.

    yorum_durumu (hat) Yorum durumu. ping_status (sayı) Ping durumu. yorumlar_per_page (sayı) Tek bir yorum sayfasında alınacak yorum sayısı. Varsayılan seçenek, comment_per_page'dir. Yorum sayısı (sayı / dizi)

    Bir gönderinin sahip olması gereken yorum sayısı. 4.9 sürümünden beri.

    • Bir sayı belirtirseniz, belirtilen sayıda yorum içeren gönderileri alır (arama operatörü =).
    • Dizi, yorum sayısını karşılaştırma seçeneğini belirlemenizi sağlar. Dizide parametreleri belirtebilirsiniz:
      • değer (sayı)- karşılaştırılacak yorum sayısı.
      • karşılaştırmak (hat)- yorum sayısı nasıl karşılaştırılır. Belki: =,! =,>,> =,< , <= . По умолчанию: = .

    Seçenekler Arama

    s (hat) Arama ifadesi. bire bir aynı (mantıklı) true - s parametresinde belirtilen tam ifadeyi arayın - SQL sorgusunda arama ifadesinin sonuna % eklemeden.
    Varsayılan: yanlış cümle (doğru yanlış) true - olduğu gibi tam arama ifadesine göre arama yapın.
    false - arama ifadesi kelimelere bölünür ve arama, arama ifadesindeki kelimeler kullanılarak gerçekleştirilir.
    Varsayılan: yanlış

    Arama ifadesine göre bulunan gönderiler:

    $ sorgu = yeni WP_Query ("s = anahtar kelime");

    Seçenekler Döndürülen alanlar

    İsteğin hangi verileri döndürmesi gerektiğini ayarlar.

    Alanlar (dize / dizi)

    Hangi veriler döndürülecek. Hepsi varsayılan olarak döndürülür.

    • ids - posta kimliklerine sahip bir dizi döndürür.
    • id => parent - ilişkisel bir dizi [parent => ID,…] döndürür.
    • Diğer parametreleri eklemek, tüm alanları (varsayılan olarak) döndürür - bir dizi gönderi nesnesi.
    no_found_rows (mantıklı) true - bulunan satır sayısını saymayın. Bazı durumlarda, isteği hızlandırabilir.
    Varsayılan: yanlış

    Seçenekler Önbelleğe almak

    Sorgular yürütülürken önbelleğe veri eklemez.

    önbellek_sonuçları (doğru yanlış) Gönderiyle ilgili bilgilerin önbelleğe alınıp alınmayacağı.
    Varsayılan: doğru update_post_meta_cache (doğru yanlış) Gönderi meta bilgilerinin önbelleğe alınıp alınmayacağı.
    Varsayılan: doğru update_post_term_cache (doğru yanlış) Bağlama sonrası bilgilerinin terimlere ve sınıflandırmalara önbelleğe alınıp alınmayacağı.
    Varsayılan: doğru lazy_load_term_meta (doğru yanlış) Meta veri teriminin "tembelce" yüklenip yüklenmeyeceği.
    false - meta veri teriminin tembel yüklenmesini devre dışı bırakır ve her get_term_meta() çağrısı veritabanına erişir.
    Varsayılan: $ update_post_term_cache değeri

    # 1 50 gönderi görüntüle, ancak gönderiler hakkında önbelleğe bilgi eklemeyecek:

    $ sorgu = new WP_Query (dizi ("posts_per_page" => 50, "cache_results" => false));

    # 2 50 gönderi görüntüleyin, ancak önbelleğe gönderi meta verileri eklemeyin

    $ sorgu = new WP_Query (dizi ("posts_per_page" => 50, "update_post_meta_cache" => yanlış));

    # 3 50 gönderi gösterelim ama gönderi terimleri ile ilgili bilgileri önbelleğe eklemeyeceğiz

    $ sorgu = new WP_Query (dizi ("posts_per_page" => 50, "update_post_term_cache" => yanlış));

    Genellikle bu işlevleri kullanmanıza gerek yoktur - bir önbelleğe ihtiyacınız vardır! Bununla birlikte, bu yaklaşım bazı durumlarda kullanışlı olabilir. Örneğin, gönderi başlıklarının bir listesini almamız gerekiyorsa ve gönderiler hakkında başka herhangi bir bilgiye ihtiyacımız yoksa: ne taksonomiler hakkında ne de meta veriler hakkında. Bu bilgileri yüklemeyerek gereksiz SQL sorgularında zaman kazanabiliriz.

    Not: kalıcı önbelleğe alma eklentisi kullanılıyorsa, her sayfa yüklemesinde önbelleği yenilemeye gerek olmadığından bu bayrakların tümü varsayılan olarak false değerine ayarlanır.

    Seçenekler Filtreler (kancalar)

    bastırma_filtreleri (doğru yanlış)

    WP_Query sınıfındaki bazı filtrelerin (kancaların) çalışmasının devre dışı bırakılıp bırakılmayacağı. Bu parametrenin etkinleştirilmesi, posts_ * veya comment_feed_ * gibi tüm SQL sorgusu değişiklik filtrelerini iptal eder.

    true - aşağıdaki kancaların işlenmesini devre dışı bırakın:

    Posts_search posts_search_orderby posts_where posts_join posts_where_paged posts_groupby posts_join_paged posts_orderby posts_distinct post_limits posts_fields posts_clauses posts_where_request posts_groupby_request posts_join_request posts_orderby_request posts_distinct_request posts_fields_request post_limits_request posts_clauses_request posts_request posts_results the_posts comment_feed_join comment_feed_where comment_feed_groupby comment_feed_orderby comment_feed_limits init (), nesne boş tüm değerleri ortaya 0 ya da yanlış sağlar. parse_query ($ sorgu) Sorgu parametrelerini alır, ayrıştırır ve temel sınıf özelliklerini ayarlar: $ post, $ post_count, $ post ve $ current_post. parse_query_vars () Eski sorguyu yeniden ayrıştırır. get ($ query_var) Ada göre bir sorgu değişkeni alır. set ($ sorgu_var, $ değer) Bir sorgu değişkeni ayarlar. Belirtilen: değişkenin adı ve değeri. & get_posts () Gerekli gönderileri veritabanından alın. Ayrıca $ post ve $ post_count özelliklerini de doldurur. next_post () Döngü sırasında kullanılır. $ posts dizisindeki bir sonraki gönderiye gider. $ current_post ve $ post'u ayarlar. Yöntem, global $ post değişkenini ayarlamaz, ancak sınıf içindeki değişkeni etkiler. Geçerli gönderinin (nesnenin) verilerini döndürür. the_post () Döngü sırasında kullanılır. Bir sonraki gönderiye gider ve $ post global değişkenini değiştirir. have_posts () Döngüden hemen önce kullanılır. Görüntülenecek gönderi olup olmadığını kontrol eder. rewind_posts () $ current_post ve $ post değişkenlerini sıfırlar. & sorgu ($ sorgu) Yöntemleri çağırır: parse_query () ve get_posts (). get_posts() sonucunu döndürür. get_queried_object () Henüz doldurulmamışsa $queried_object değişkenini doldurur ve döndürür. get_queried_object_id () Henüz doldurulmamışsa $ queried_object_id değişkenini doldurur ve döndürür. __construct ($ sorgu = "") Sınıfın kurucusu. Sorgu verileri iletilirse, sorgu () yöntemini çağırır ve verileri ona iletir.

Bir süre WordPress ile çalıştıysanız, birçok kritere dayalı ve aynı zamanda WordPress standartlarına uygun gönderi listeleri oluşturmanın ne kadar zor olduğunu bilmelisiniz. Ancak platform son birkaç yılda çok yol kat etti. Ve şimdi, güçlü bir sınıfın yardımıyla WP_Query, kendimizi sınırlamadan mesaj listeleri oluşturabiliriz.

WP_Query nedir?

Sınıf WP_Query WordPress motorunun en önemli parçalarından biridir. Diğer şeylerin yanı sıra, herhangi bir sayfada ihtiyacınız olan sorguları tanımlar ve belirtilen kriterlere göre mesajları görüntüler. Ayrıca, sayfa optimizasyonuna (ve hata düzeltmelerine) yardımcı olan istekler hakkında birçok bilgi depolar.

WP_Query karmaşık veritabanı sorgularını güvenli, basit ve modüler bir şekilde yürütmemizi sağlar.

Güvenlik

Bu nesneyle etkileşimimiz boyunca, amacımıza ulaşmak için yalnızca parametreleri belirler ve işlevleri kullanırız. SQL enjeksiyonuna karşı koruma ve doğru veri türünün kullanıldığından emin olmak gibi birçok sorunu dahili elemanlar halleder.

Basitlik

Bu nesneyi kullanırken, veritabanımızın özelliklerini öğrenmemize gerek yoktur. Parametrelerimizi iletmek için bir dizi kullandığımız için, birleştirme sorgularını veya iç içe sorguları manuel olarak yazmaya gerek yoktur, sadece bir dizi argüman ve sınıfın bir örneğini oluşturmamız yeterlidir!

modülerlik

WP_Query kodunuzda SQL sorguları kullanmaktan kaçınmanıza izin verir, sınıf argüman olarak bir ilişkisel dizi kullanır. Bunun birçok avantajı vardır: Kodunuzdaki farklı yerlerden gelen argümanları birleştirebilir, bir dizi işlevi çalıştırabilir ve bunları her türlü şekilde değiştirebilirsiniz.

Öyleyse başlayalım!

WordPress'teki "standart" döngü

Önce normal bir döngüye bakalım ve sonra kullanarak aynı döngüyü oluşturalım. WP_Query... Diyelim ki temamız için bir kategori.php dosyası oluşturuyoruz.

if (have_posts()):
while (have_posts()):
posta ();
?>



son zaman;
Başka:
?>
Hata, giriş bulunamadı!
endif;
?>

WP_Query kullanarak aynı döngü:

$ args = dizi ("kedi" => 4);
$ kategori_yazıları = yeni WP_Query ($ argümanlar);

if ($ Category_posts -> have_posts()):
while ($ kategori_posts -> have_posts()):
$ kategori_yazıları -> the_post();
?>



son zaman;
Başka:
?>
Hata, giriş bulunamadı!
endif;
?>

Gördüğünüz gibi, ilk bakışta pek bir fark yok! Daha yakından bakalım:

Sorgu oluşturma

Kategori sayfasında, o kategorideki gönderilerin bir listesini almak istiyoruz. WP_Query kullanarak sıfırdan bir sorgu oluşturduğumuz için bunu kendimiz tanımlamalıyız. Buna biraz sonra dalacağız.

Mesajlar için sınıfı ve sorguları başlatma

WP_Query, sınıfın bir örneğini ve bir dizi argüman kullanarak belirtilen mesajları almaya çalışacaktır.

Döngü oluşturma

Herhangi bir normal işlevi kullanabilirsiniz, yalnızca bunları nesnenin yöntemleri olarak kullanmayı unutmayın:

Onun yerine have_posts (), kullanmak $ kategori_posts-> have_posts().
Onun yerine posta (), kullanmak $ kategori_posts-> the_post().

Yukarıdakilerin hepsini yaptıktan sonra, bildiğimiz ve sevdiğimiz şablon etiketlerini kullanabilirsiniz.

Buna daha detaylı bakarsanız, global nesnenin $ gönderi Ayrıca mevcut. Bu, özel bir döngü kullanıyorsanız bir şeylerin ters gidebileceği anlamına gelir. Nesnenin orijinal değerini koruduğunuzdan emin olun. $ gönderi ve döngüden sonra geri yükleyin.

Devam et...

Döngüler oluşturmanın kolaylığı açıktır, ancak gerçekte kayıtlar için nasıl sorgular oluşturabiliriz? Size ticari temalarda kaydırıcılar oluştururken sıklıkla kullanılan yaygın bir teknik göstereyim.

Çoğu zaman, temanızın kullanıcıları sitelerinde harika görünen kaydırıcılar görmek ister, ancak içerik oluştururken biraz tembel olabilirler. Birçok kullanıcı, gelecekte yayınlanması planlanan gönderileri de göstermek ister. Görsel içeren yaklaşan (yani yayınlanmamış) gönderileri almak için bir istek oluşturalım.

$ argümanlar = dizi (
"post_status" => "gelecek",
"meta_query" => dizi (
dizi (
"anahtar" => "_thumbnail_id",
"değer" => "",
"karşılaştır" => "! ="
)
) ;
$ slider_posts = yeni WP_Query ($ argümanlar);
?>

have_posts()):?>


have_posts()): $ slider_posts -> the_post()?>




Kısa ve mükemmel anlaşılır kod - basit ve güzel.

Varsayılan değerler

İsteğimde gerekli giriş sayısını belirtmediğimi fark etmiş olabilirsiniz. Listede kaç mesaj var? Ve yaptığımız ilk istekteki gönderinin durumu nedir?

Varsayılan değerler, en yaygın argümanların çoğu için ayarlanır. Değiştirmek istemediğiniz sürece eklemeniz gerekmeyen birkaç tanesi:

posts_per_page
Varsayılan olarak, sayfa başına mesaj sayısı hakkında site parametrelerinde belirtilen değer kullanılır.

yazı tipi
Varsayılan İleti.

post_status
Varsayılan Yayınla.

Parametrelerin tam listesini belgelerde bulabilirsiniz!

diziler

Çoğu durumda, bir argümanın alabileceği birden fazla değer sağlamanız gerekecektir. Ve WP_Query, hayatınızı kolaylaştırmak için dizileri kullanmanıza izin verir. İşte bazı örnekler:

için bir dizi kullanabilirsiniz post_status farklı durumlara sahip mesajlar almak için. hattını kullanabileceğinizi unutmayın. herhangi her türlü statüye sahip mesajlar almak için.

Meta verilerle çalışma

bunu zaten gördün WP_Query meta verilerle harika bir iş çıkarıyor - kullandık meta_query ikinci örnekte, resimleri olan gönderilerle bir kaydırıcı oluştururken.

Kiralık site(ler) için kullanılacak bir WordPress teması oluşturduğumuzu hayal edin. Daireleri özel bir posta türünde saklayacağız ve ek bilgileri depolamak için meta verileri kullanacağız. Böylece örneğin dört ve daha fazla kişinin konaklayabileceği tüm daireleri, balkonlu daireleri veya sadece bir günlüğüne jakuzili daireleri rahatlıkla alabiliyoruz.

$ argümanlar = dizi (
"post_type" => "apartman",
"meta_query" => dizi (
"ilişki" => "VE",
"=" => "="
)
) ;
?>

Kullanabileceğiniz parametreler hakkında daha fazla bilgi edinmek için WP_Query belgelerinin Özel Alan Parametreleri bölümüne gitmeniz yeterlidir.

Yöntemler ve özellikler

Bir istekte bulunduktan sonra, nesnenizden birçok bilgi çekebilirsiniz. "Yöntemler ve Özellikler"in tam listesini belgelerde bulabilirsiniz. İşte en çok kullanmayı sevdiklerim:

$ sorgusu
$ wp_query nesnesine iletilen sorgu dizesini gösterir. Bu, bazı durumlarda sorun giderme için çok kullanışlıdır.

$ sorgu_değişkenleri
İlettiğiniz bağımsız değişkenlerin ilişkisel bir dizisini gösterir. Argümanları iletmeden önce çok fazla karıştırma ve eşleştirme yapıyorsanız, bu araç her şeyin doğru bir şekilde iletildiğini kontrol etmek için faydalı olabilir.

$ gönderi
Veritabanından istenen kayıtları içerir.

$ Found_posts
Bulunan toplam öğe sayısını gösteren kullanışlı bir şey (post_per_page bağımsız değişkeni tarafından belirlenen bir sınır yok).

Büyük güç büyük sorumluluk getirir

WP_Query size birçok seçenek sunar, ancak dezavantajları vardır. Birçok kişi, her yerde sorgu çağırmanın ne kadar kolay olduğunu anladığında çıldırır.

Ne kadar çok istek olursa, sunucudaki yükün o kadar büyük olduğunu unutmayın. Karmaşık sorgular yaparken, muhtemelen sizin için sınırlı bir kaynak olan hosting üzerinde RAM ile ilgili sorunlar olabilir.

Sorguyu varsayılan olarak her sayfada çalıştırdığınızdan emin olun. Varsayılan olarak oradaysa, ana sayfada en son gönderileri almak için yeni bir istek oluşturmanın anlamı nedir? Sunucu yükünü azaltmak için sonuç önbelleğe almayı kullanın.


Herhangi bir sorunuz varsa, uygulamamızı kullanmanızı öneririz.

init () Nesneyi sıfırlayın, tüm özellikleri boş, sıfır veya yanlış olarak ayarlayın. parse_query ($ sorgu) İsteği tanımlayan bir sorgu dizesi alır, onu ayrıştırır ve $ post, $ post_count, $ post ve $ current_post dışındaki tüm özellikleri doldurur. parse_query_vars () Eski sorgu dizesini yeniden ayrıştırın. get ($ query_var) Adlandırılmış bir sorgu değişkeni alın. set ($ sorgu_var, $ değer) Adlandırılmış bir sorgu değişkenini belirli bir değere ayarlayın. & get_posts () İstenen gönderileri veritabanından alır ve döndürür. Ayrıca $ gönderileri ve $ post_count değerini de doldurun. Not: Bu, WP_Query bağımsız değişkenlerle oluşturulmuşsa, yapım sırasında çağrılır. Bu Olumsuz idempotent ve aynı sorgu nesnesi üzerinde bir kereden fazla çağrılmamalıdır. Bunu yapmak bozuk bir sorguya neden olabilir. next_post () (içindeyken kullanılacak) $ gönderilerinde sonraki gönderiye ilerleyin. $ current_post'u artırın ve $ post'u (yeni) geçerli gönderi nesnesine ayarlayın (not: bu, global $ post değişkenini ayarlamaz, yalnızca WP_Query nesnesinin örnek değişkenini ayarlar.) Geçerli gönderi nesnesini döndürür (Bu kullanımdan kaldırılmıştır, lütfen "next_post_link ()" kullanın) the_post () (içindeyken kullanılacak) Bir sonraki gönderiye ilerleyin ve global $ post değişkenini ayarlayın. have_posts () (The Loop'tayken veya The Loop'tan hemen önce kullanılır) Görüntülenecek kalan gönderilerimiz olup olmadığını belirleyin. rewind_posts()'u çağırır ve eğer "kalan gönderi yoksa" false döndürür. Geri sarma nedeniyle, have_posts()'un false kalmasına güvenemezsiniz. Görmek. rewind_posts () $ current_post ve $ post'u sıfırlayın. & sorgu ($ sorgu) parse_query() ve get_posts()'u çağırın. get_posts () sonuçlarını döndür. get_queried_object () Henüz ayarlanmamışsa $ ​​queried_object öğesini ayarlayın ve geri gönderin. get_queried_object_id () Zaten ayarlanmamışsa $ ​​queried_object_id öğesini ayarlayın ve geri gönderin. WP_Query ($ sorgu = "") (yapıcı) Bir sorgu dizesi sağlıyorsanız, onunla sorgu () öğesini çağırın.

parametreler

Yazar Parametreleri

Belirli bir yazarla ilişkili gönderileri göster.

  • yazar (int | sicim) - yazar kimliğini veya virgülle ayrılmış kimlik listesini kullanın.
  • yazar_adı (sicim) - "user_nicename" kullanın - isim DEĞİL.
  • yazar__in (dizi
  • yazar__not_in (dizi) - yazar kimliğini kullanın (o zamandan beri mevcuttur).

Bir Yazar için Gönderileri Göster

Yazar kimliğini kullanarak yayınları yazara göre göster:

$ sorgu = yeni WP_Query (dizi ("yazar" => 123);

"user_nicename" yazarını kullanarak yayınları yazara göre görüntüleyin:

$ sorgu = new WP_Query (dizi ("yazar_adı" => "rami"));

Birkaç Yazardan Gönderileri Göster

Birkaç belirli yazarın gönderilerini görüntüleyin:

$ sorgu = yeni WP_Query (dizi ("yazar" => "2,6,17,38"));

Bir Yazara Ait Gönderileri Hariç Tut

Tüm gönderileri göster hariç bir yazardan (tekil), kimliğinin önüne bir "-" (eksi) işareti koyarak:

$ sorgu = yeni WP_Query (dizi ("yazar" => -12);

Çoklu Yazar İşleme

Birden çok yazarın gönderilerini görüntüleyin:

$ sorgu = yeni WP_Query (dizi ("yazar__in" => dizi (2, 6));

Ayrıca birden çok yazarı şu şekilde hariç tutabilirsiniz:

$ sorgu = yeni WP_Query (dizi ("yazar__not_in" => dizi (2, 6));

Kategori Parametreleri

Belirli kategorilerle ilişkili gönderileri göster.

  • kedi (int) - kategori kimliğini kullanın.
  • Kategori adı (sicim) - kategori bilgisini kullanın.
  • kategori__ve (dizi) - kategori kimliğini kullanın.
  • kategori__in (dizi) - kategori kimliğini kullanın.
  • kategori__not_in (dizi) - kategori kimliğini kullanın.

Bir Kategori için Gönderileri Göster

Kategori kimliğini kullanarak bu kategoriye (ve bu kategorinin tüm alt öğelerine) sahip gönderileri görüntüleyin:

$ sorgu = yeni WP_Query (dizi ("kedi" => 4));

Kategori bilgisini kullanarak bu kategoriye (ve bu kategorinin tüm alt öğelerine) sahip gönderileri görüntüleyin:

$ sorgu = yeni WP_Query (dizi ("kategori_adı" => "personel"));

Kategori kimliğini kullanarak bu kategoriye (o kategorinin çocukları olmayan) sahip gönderileri görüntüleyin:

$ sorgu = yeni WP_Query (dizi ("category__in" => 4));

Birkaç Kategoriden Gönderileri Göster

Kategori kimliğini kullanarak bu kategorilere sahip gönderileri görüntüleyin:

$ sorgu = yeni WP_Query (dizi ("kedi" => "2,6,17,38"));

Kategori bilgisini kullanarak bu kategorilere sahip gönderileri görüntüleyin:

$ sorgu = new WP_Query (dizi ("kategori_adı" => "personel, haberler"));

Bu kategorilerin "tümü" olan gönderileri göster:

$ sorgu = new WP_Query (dizi ("kategori_adı" => "personel + haberler"));

Kategoriye Ait Gönderileri Hariç Tut

Tüm gönderileri göster hariç bir kategoriden gelenler, kimliğinin önüne "-" (eksi) işareti koyarak.

$ sorgu = new WP_Query (dizi ("cat" => "-12, -34, -56"));

Çoklu Kategori İşleme

Birden çok kategoride olan gönderileri görüntüleyin. Bu, hem kategori 2 hem de 6'daki gönderileri gösterir:

$ sorgu = new WP_Query (dizi ("category__and" => dizi (2, 6));

Kategori 2 VEYA 6'dan herhangi birinden gönderileri görüntülemek için, yukarıda bahsedildiği gibi cat'ı kullanabilir veya kategori__in'i kullanabilirsiniz (bunun, bu kategorilerin herhangi bir alt öğesinden gelen gönderileri göstermediğini unutmayın):

$ sorgu = yeni WP_Query (dizi ("category__in" => dizi (2, 6));

Ayrıca birden fazla kategoriyi şu şekilde hariç tutabilirsiniz:

$ sorgu = yeni WP_Query (dizi ("category__not_in" => dizi (2, 6));

Etiket Parametreleri

Belirli etiketlerle ilişkili gönderileri göster.

  • etiket (sicim) - etiket bilgisini kullanın.
  • tag_id (int) - etiket kimliğini kullanın.
  • etiket__ve (dizi) - etiket kimliklerini kullanın.
  • tag__in (dizi) - etiket kimliklerini kullanın.
  • tag__not_in (dizi) - etiket kimliklerini kullanın.
  • tag_slug__ve (dizi) - etiket sümüklü böcekleri kullanın.
  • tag_slug__in (dizi) - etiket sümüklü böcekleri kullanın.

Bir Etiket İçin Gönderileri Göster

Etiket bilgisini kullanarak bu etikete sahip gönderileri görüntüleyin:

$ sorgu = new WP_Query (dizi ("etiket" => "pişirme"));

Etiket kimliğini kullanarak bu etikete sahip gönderileri görüntüleyin:

$ sorgu = yeni WP_Query (dizi ("tag_id" => 13);

Birkaç Etiketten Gönderileri Göster

Bu etiketlerden "ikisinden birini" içeren gönderileri görüntüleyin:

$ sorgu = new WP_Query (dizi ("etiket" => "ekmek, fırınlama"));

Not: WP_Query, sonucun tekil (doğru) olacağını belirlerse, tax_query parametresini yok sayar. Tax_query'yi değiştirmek için gerekli SQL deyimlerini eklemek için filtreyi kullanın.

Önemli Not: tax_query bir dizi vergi sorgusu argümanları diziler(bir dizi dizi alır). Bu yapı, aşağıdakileri kullanarak birden çok taksonomiyi sorgulamanıza izin verir. ilişki taksonomi dizileri arasındaki boole ilişkisini açıklamak için ilk (dış) dizideki parametre.

Basit Taksonomi Sorgusu:

Görüntülemek gönderiler ile etiketlendi bob, altında insanlarözel taksonomi:

$ args = dizi ("post_type" => "post", "tax_query" => dizi ("taksonomi" => "people", "field" => "slug", "terms" => "bob", ),),); $ sorgu = yeni WP_Query ($ argümanlar);

Çoklu Taksonomi İşleme:

Görüntülemek gönderiler birkaç özel taksonomiden:

$ args = dizi ("post_type" => "post", "tax_query" => dizi ("ilişki" => "AND", dizi ("taksonomi" => "movie_genre", "field" => "slug", "terms" => dizi ("aksiyon", "komedi")), dizi ("taksonomi" => "aktör", "field" => "term_id", "terms" => dizi (103, 115, 206 ), "operatör" => "DEĞİL",),),); $ sorgu = yeni WP_Query ($ argümanlar);

Görüntülemek gönderiler içinde olanlar tırnak kategori VEYA alıntı :

$ args = dizi ("post_type" => "post", "tax_query" => dizi ("ilişki" => "VEYA", dizi ("taksonomi" => "kategori", "alan" => "sümüklü böcek", "terms" => dizi ("tırnaklar")), dizi ("taksonomi" => "post_format", "field" => "slug", "terms" => dizi ("biçim alıntı sonrası"), ),),); $ sorgu = yeni WP_Query ($ argümanlar);

İç İçe Taksonomi İşleme:

Daha karmaşık sorgular oluşturmak için "tax_query" yan tümceleri iç içe yerleştirilebilir. Örnek: Ekran gönderiler içinde olanlar tırnak kategori VEYA her ikisi de alıntı yazı biçimi VE bilgelik kategori:

$ args = dizi ("post_type" => "post", "tax_query" => dizi ("ilişki" => "VEYA", dizi ("taksonomi" => "kategori", "alan" => "sümüklü böcek", "terms" => dizi ("tırnaklar")), dizi ("ilişki" => "VE", dizi ("taksonomi" => "post_format", "field" => "slug", "terms" =>) dizi ("son biçim alıntı")), dizi ("taksonomi" => "kategori", "alan" => "sümüklü böcek", "terimler" => dizi ("bilgelik")),),) ,); $ sorgu = yeni WP_Query ($ argümanlar);

Arama Parametresi

Anahtar kelime aramasına dayalı yayınları gösterin.

  • s (sicim) - Anahtarkelime Ara.

Anahtar kelime aramasına göre Gönderileri Göster

"Anahtar kelime" arama terimiyle eşleşen gönderileri görüntüleyin:

$ sorgu = yeni WP_Query (dizi ("s" => "anahtar kelime"));

Bir terimin başına tire işareti koymak, o terimle eşleşen gönderileri hariç tutacaktır. Örneğin, "yastık -sofa", "yastık" içeren ancak "kanepe" içermeyen gönderileri döndürür (o zamandan beri mevcuttur).

Gönderi ve Sayfa Parametreleri

İçeriği gönderi ve sayfa parametrelerine göre görüntüleyin. Varsayılan post_type'ın sayfaları değil, yalnızca gönderileri gösterecek şekilde ayarlandığını unutmayın.

  • P (int) - posta kimliğini kullanın. Varsayılan gönderi türü gönderidir.
  • isim (sicim) - post slug kullanın.
  • Başlık (sicim) - gönderi başlığını kullanın (ile kullanılabilir).
  • sayfa_kimliği (int) - sayfa kimliğini kullanın.
  • sayfa ismi (sicim) - sayfa bilgisi kullanın.
  • post_parent (int) - yalnızca alt sayfaları döndürmek için sayfa kimliğini kullanın. Yalnızca üst düzey girişleri döndürmek için 0'a ayarlayın.
  • post_parent__in (dizi) - posta kimliklerini kullanın. Ebeveynleri bir dizide olan gönderileri belirtin. (o zamandan beri mevcuttur)
  • post_parent__not_in (dizi) - posta kimliklerini kullanın. Üstü bir dizide olmayan gönderileri belirtin. post__in / post__not_in gibi, post_parent__in içinde bulunan id "ler, post_parent__not_in içinde belirtilen kimlikleri geçersiz kılar (o zamandan beri mevcuttur)
  • post__in (dizi) - posta kimliklerini kullanın. Alınacak gönderileri belirtin. DİKKAT Yapışkan gönderiler kullanırsanız, isteseniz de istemeseniz de aldığınız gönderilere eklenirler (başına eklenir!). Bu davranışı bastırmak için kullanın.
  • post__not_in (dizi) - posta kimliklerini kullanın. Alınmayacak gönderiyi belirtin. Bu, post__in ile aynı sorguda kullanılırsa yok sayılır.
  • post_name__in (dizi) - post sümüklü böcekleri kullanın. Alınacak gönderileri belirtin. (o zamandan beri mevcuttur)
  • yazı tipi (sicim / dizi) - yazı türlerini kullanın. Gönderileri alır, varsayılan değer "gönder" dir. Bir sorgu için "tax_query" ayarlanmışsa, varsayılan değer "any" olur;
    • "post" bir yazıdır.
    • "sayfa" bir sayfadır.
    • "revizyon" bir revizyondur.
    • "ek" - bir ek. Varsayılan WP_Query post_status "yayınla" iken, eklerin varsayılan post_status değeri "devralma"dır. Bu, post_status'u açıkça "devralma" veya "herhangi biri" olarak ayarlamadığınız sürece hiçbir ekin döndürülmeyeceği anlamına gelir. (Aşağıya bakınız)
    • "nav_menu_item" - bir gezinme menüsü öğesi
    • "any" - "exclude_from_search" true olarak ayarlanmış revizyonlar ve türler dışında herhangi bir türü alır.
    • Özel Gönderi Türleri (ör. filmler)

Gönderiyi Türe Göre Göster

Yalnızca sayfaları göster:

$ sorgu = new WP_Query (dizi ("post_type" => "sayfa"));

"Herhangi bir" gönderi türünü görüntüle ("exclude_from_search" TRUE olarak ayarlanmış revizyonlar ve türler dışında herhangi bir türü alır):

$ sorgu = new WP_Query (dizi ("post_type" => "herhangi biri"));

Özel gönderi türleri de dahil olmak üzere birden çok gönderi türünü görüntüleyin:

$ args = dizi ("post_type" => dizi ("post", "sayfa", "film", "kitap")); $ sorgu = yeni WP_Query ($ argümanlar);

Durum Parametreleri

  • post_status (sicim / dizi) - gönderi durumunu kullanın. İletileri alır. Varsayılan değer "yayınla"dır, ancak kullanıcı oturum açtıysa "özel" eklenir. Genel de varsayılan olarak dahildir. Sorgu bir yönetici bağlamında (yönetim alanı veya AJAX çağrısı) çalıştırılırsa, korumalı durumlar da eklenir. Varsayılan olarak korumalı durumlar "gelecek", "taslak" ve "beklemede" şeklindedir.
    • "yayınla" - yayınlanmış bir gönderi veya sayfa.
    • "beklemede" - gönderi incelenmeyi bekliyor.
    • "taslak" - taslak durumundaki bir gönderi.
    • "otomatik taslak" - içeriği olmayan yeni oluşturulmuş bir gönderi.
    • "gelecek" - gelecekte yayınlanacak bir gönderi.
    • "özel" - oturum açmamış kullanıcılar tarafından görülmez.
    • "miras" bir revizyondur. görmek.
    • "çöp" - gönderi çöp kutusunda (o zamandan beri mevcut).
    • "any" - "exclude_from_search" true (yani çöp kutusu ve otomatik taslak) olarak ayarlanmış gönderi durumlarından olanlar dışında herhangi bir durumu alır.

Duruma Göre Gönderiyi Göster

Yalnızca taslakları göster:

$ sorgu = yeni WP_Query (dizi ("post_status" => "taslak"));

Birden çok gönderi durumunu görüntüle:

$ args = dizi ("post_status" => dizi ("beklemede", "taslak", "gelecek")); $ sorgu = yeni WP_Query ($ argümanlar);

Tüm ekleri göster:

$ args = dizi ("post_status" => "herhangi bir", "post_type" => "ek"); $ sorgu = yeni WP_Query ($ argümanlar);

Yorum Parametreleri

$ disk belleği = (get_query_var ("sayfa"))? get_query_var ("sayfa"): 1; $ sorgu = new WP_Query (dizi ("sayfalanmış" => $ disk belleği));

Yapışkan Gönderileri Göster

Yalnızca ilk yapışkan gönderiyi görüntüleyin:

$ yapışkan = get_option ("sticky_posts"); $ sorgu = yeni WP_Query (dizi ("p" => $ yapışkan));

Hiçbiri yayınlanan son gönderiyi döndürmediyse, yalnızca ilk yapışkan gönderiyi görüntüleyin:

$ yapışkan = get_option ("sticky_posts"); $ args = dizi ("posts_per_page" => 1, "post__in" => $ yapışkan, "ignore_sticky_posts" =>

Yalnızca ilk yapışkan gönderiyi görüntüleyin, bu satırı yukarıdaki bloğa ekleyin:

Eğer ($ yapışkan) (// buraya eşyalarını ekle ...)

Yapışkan Gönderileri Göstermeyin

Tüm yapışkan gönderileri sorgudan hariç tut:

$ sorgu = new WP_Query (dizi ("post__not_in" => get_option ("sticky_posts")));

Kategorideki TÜM gönderileri döndür, ancak yapışkan gönderileri üstte "gösterme (" yoksay ") (Yine de doğal konumlarında, örneğin tarihe göre gösterilecekler):

$ sorgu = new WP_Query (dizi ("ignore_sticky_posts" => 1, "posts_per_page" => 3, "cat" => 6);

Bir kategoriden yapışkan gönderileri hariç tutun. Kategori içindeki gönderileri döndürün, ancak yapışkan gönderileri tamamen hariç tutun ve sayfalama kurallarına uyun:

$ disk belleği = get_query_var ("disk belleği")? get_query_var ("sayfalanmış"): 1; $ yapışkan = get_option ("sticky_posts"); $ args = dizi ("cat" => 3, "ignore_sticky_posts" => 1, "post__not_in" => $ sticky, "paged" => $ disk belleği,); $ sorgu = yeni WP_Query ($ argümanlar);

Sipariş ve Sipariş Parametreleri

Alınan gönderileri sıralayın.

  • Emir (dize | dizi) - "orderby" parametresinin artan veya azalan sırasını belirler. "DESC" varsayılandır. Bir dizi, birden çok sıra/sıraya göre kümeler için kullanılabilir.
    • "ASC" - en düşükten en yükseğe doğru artan düzen (1, 2, 3; a, b, c).
    • "DESC" - en yüksekten en düşüğe doğru azalan düzen (3, 2, 1; c, b, a).
  • tarafından sipariş (dize | dizi) - Alınan gönderileri parametreye göre sıralayın. Varsayılan olarak "tarih (post_date)" şeklindedir. Bir veya daha fazla seçenek iletilebilir.
    • "none" - Sipariş yok (o zamandan beri mevcut).
    • "Kimlik" - Posta kimliğine göre sıralayın. Büyük harf kullanımına dikkat edin.
    • "yazar" - Yazara göre sırala. ("post_author" da kabul edilir.)
    • "başlık" (! LANG: - Başlığa göre sıralayın. (" post_title "da kabul edilir.)
    • " name " - Order by post name (post slug). (" post_name " is also accepted.)!}
    • "type" - Sıralama ölçütü (o zamandan beri mevcuttur). ("post_type" da kabul edilir.)
    • "tarih" - Tarihe göre sıralayın. ("post_date" de kabul edilir.)
    • "değiştirildi" - Son değiştirilme tarihine göre sıralayın. ("post_modified" da kabul edilir.)
    • "ebeveyn" - Posta / sayfa ebeveyn kimliğine göre sıralayın. ("post_parent" de kabul edilir.)
    • "rand" - Rastgele sıra. "X"in bir tamsayı tohum değeri olduğu "RAND (x)" de kullanabilirsiniz. "orderby" rand'ın çalışması için bir "order" parametresinin bulunması gerektiğini unutmayın.
    • "comment_count" - Yorum sayısına göre sıralayın (o zamandan beri mevcut).
    • "alaka" - Aşağıdaki sırayla arama terimlerine göre sıralayın: İlk olarak, tüm cümlenin eşleşip eşleşmediği. İkincisi, tüm arama terimleri başlıkların içindeyse. Üçüncüsü, arama terimlerinden herhangi biri başlıklarda görünüyorsa. Ve dördüncüsü, içerikte tam cümle görünüyorsa.
    • "menu_order" - Sayfa Sırasına Göre Sırala. En sık kullanılan ( Emir Sayfa Niteliklerini Düzenle kutusundaki alan) ve for (Medya Galerisi Ekle / Yükle iletişim kutusundaki tamsayı alanları), ancak farklı "menu_order" değerlerine sahip herhangi bir gönderi türü için kullanılabilir (hepsi varsayılan olarak 0'dır).
    • "meta_value" (! LANG: - Bir" meta_key=keyname " must also be present in the query. Note also that the sorting will be alphabetical which is fine for strings (i.e. words), but can be unexpected for numbers (e.g. 1, 3, 34, 4, 56, 6, etc, rather than 1, 3, 4, 6, 34, 56 as you might naturally expect). Use " meta_value_num " instead for numeric values. You may also specify " meta_type " if you want to cast the meta value as a specific type. Possible values are "NUMERIC", "BINARY", "CHAR", "DATE", "DATETIME", "DECIMAL", "SIGNED", "TIME", "UNSIGNED", same as in " $meta_query ". When using " meta_type " you can also use " meta_value_* " accordingly. For example, when using DATETIME as " meta_type " you can use " meta_value_datetime " to define order structure.!}
    • "meta_value_num" - Sayısal meta değerine göre sırala (o zamandan beri mevcut). Ayrıca sorguda bir "meta_key = keyname" bulunması gerektiğini de unutmayın. Bu değer, yukarıda "meta_value" (! LANG :.
    • " post__in " - Preserve post ID order given in the " post__in " array (available since ). !} Not
    • "post_name__in" - "post_name__in" dizisinde verilen post slug sırasını koru (o zamandan beri mevcuttur). Not- order parametresinin değeri, ortaya çıkan sıralama düzenini değiştirmez.
    • "post_parent__in" - "post_parent__in" dizisinde verilen üst öğe sırasını koru (o zamandan beri mevcuttur). Not- order parametresinin değeri, ortaya çıkan sıralama düzenini değiştirmez.

Başlığa göre sıralanmış Gönderileri Göster, Azalan düzende

Gönderileri "başlığa" göre azalan bir düzende sıralanmış olarak görüntüleyin:

$ args = dizi ("orderby" => "title", "order" =>

Gönderileri, azalan bir düzende "başlık" yayınlamak için bir geri dönüşle "menu_order" ile sıralanmış olarak görüntüleyin:

$ args = dizi ("orderby" => "menu_order title", "order" => "DESC",); $ sorgu = yeni WP_Query ($ argümanlar);

Rastgele Gönderiyi Göster

Rastgele bir gönderi göster:

$ args = dizi ("orderby" => "rand", "posts_per_page" => 1,); $ sorgu = yeni WP_Query ($ argümanlar);

Popüler Gönderileri Göster

Yorum sayısına göre sıralanmış gönderileri göster:

$ args = dizi ("orderby" => "comment_count"); $ sorgu = yeni WP_Query ($ argümanlar);

Fiyata göre sıralanmış ürünleri göster

"Fiyat" özel alanına göre sıralanmış "Ürün" türündeki gönderileri görüntüleyin:

$ args = dizi ("post_type" => "product", "orderby" => "meta_value_num", "meta_key" => "fiyat",); $ sorgu = yeni WP_Query ($ argümanlar);

Çoklu "orderby" değerleri

"Başlık" ve "menü_sıra" ile sıralanmış sayfaları görüntüleyin. (başlık baskındır):

$ args = dizi ("post_type" => "sayfa", "orderby" => "title menu_order", "order" => "ASC",); $ sorgu = yeni WP_Query ($ argümanlar);

Bir dizi kullanarak birden fazla "orderby" değeri

Farklı sıralama düzenleriyle (ASC / DESC) "başlık" ve "menü_düzeni"ne göre sıralanmış sayfaları görüntüleyin (şu tarihten itibaren mevcuttur):

$ args = dizi ("orderby" => dizi ("title" => "DESC", "menu_order" => "ASC")); $ sorgu = yeni WP_Query ($ argümanlar);

Çoklu sipariş/sipariş çiftleri

$ args = dizi ("orderby" => dizi ("meta_value_num" => "DESC", "title" => "ASC"), "meta_key" => "yaş"); $ sorgu = yeni WP_Query ($ argümanlar);

""meta_value" ile sipariş ve özel gönderi türü

"my_custom_post_type" türündeki gönderileri, "yaşa" göre sıralanmış ve yalnızca 3 ve 4 yaşlarını gösterecek şekilde filtrelenmiş (meta_query kullanarak) görüntüleyin.

$ args = dizi ("post_type" => "my_custom_post_type", "meta_key" => "age", "orderby" => "meta_value_num", "order" => "ASC", "meta_query" => dizi (dizi ( "anahtar" => "yaş", "değer" => dizi (3, 4), "karşılaştır" => "IN",),),); $ sorgu = yeni WP_Query ($ argümanlar);

"orderby "birden çok" meta_key "s ile

İki farklı postmeta parçasına göre sipariş vermek istiyorsanız (örneğin, Önce Şehir ve İkinci Eyalet), meta sorgunuzu birleştirmeniz ve "adlandırılmış meta sorguları" kullanarak orderby dizinize bağlamanız gerekir. Aşağıdaki örneğe bakın:

$ q = new WP_Query (dizi ("meta_query" => dizi ("ilişki" => "AND", "state_clause" => dizi ("anahtar" => "durum", "değer" => "Wisconsin")) , "city_clause" => array ("anahtar" => "şehir", "karşılaştır" => "VAR",),), "orderby" => array ("city_clause" => "ASC", "state_clause" = > "DESC",),));

Tarih Parametreleri

Belirli bir saat ve tarih dönemiyle ilişkili gönderileri göster.

  • yıl (int) - 4 basamaklı yıl (ör. 2011).
  • ay (int
  • w (int) - Yılın haftası (0'dan 53'e kadar). MySQL WEEK komutunu kullanır. Mod, "haftanın başlangıcı" seçeneğine bağlıdır.
  • gün (int
  • saat (int) - Saat (0'dan 23'e kadar).
  • dakika (int) - Dakika (0'dan 60'a kadar).
  • ikinci (int) - İkinci (0 ila 60).
  • m (int) - YearMonth (Örn: 201307 ).
  • tarih_sorgusu (dizi) - Tarih parametreleri (o zamandan beri mevcuttur).
    • yıl (int) - 4 basamaklı yıl (ör. 2011).
    • ay (int) - Ay numarası (1'den 12'ye kadar).
    • hafta (int) - Yılın haftası (0'dan 53'e kadar).
    • gün (int) - Ayın günü (1'den 31'e kadar).
    • saat (int) - Saat (0'dan 23'e kadar).
    • dakika (int) - Dakika (0'dan 59'a kadar).
    • ikinci (int) - İkinci (0 ila 59).
    • sonrasında (dizi / dizi) - Gönderilerin alınacağı tarih. strtotime'ı () kabul eder
      • yıl (sicim
      • ay (sicim) Yılın ayı. 1-12 arası sayıları kabul eder. Varsayılan: 12.
      • gün (sicim) Ayın günü. 1-31 numaralarını kabul eder. Varsayılan: ayın son günü.
    • önce (dizi / dizi) - Daha önce gönderilerin alınacağı tarih. strtotime () -uyumlu dizeyi veya "yıl", "ay", "gün" değerleri dizisini kabul eder:
      • yıl (sicim) Herhangi bir dört basamaklı yılı kabul eder. Varsayılan boş.
      • ay (sicim) Yılın ayı. 1-12 arası sayıları kabul eder. Varsayılan: 1.
      • gün (sicim) Ayın günü. 1-31 numaralarını kabul eder. Varsayılan: 1.
    • dahil (boole) - Sonrası/öncesi için tam değerin eşleşmesi gerekip gerekmediği ".
    • karşılaştırmak (sicim) - WP_Date_Query'ye bakın:: get_compare ().
    • kolon (sicim) - karşı sorgulamak için. Varsayılan: "post_date".
    • ilişki (sicim) - VEYA veya VE, alt dizilerin nasıl karşılaştırılacağı. Varsayılan: VE.

12 Aralık 2012 tarihli gönderileri döndürür:

$ sorgu = yeni WP_Query ("yıl = 2012 ve ay sayısı = 12 ve gün = 12");

$ args = dizi ("date_query" => dizi (dizi ("yıl" => 2012, "ay" => 12, "gün" => 12,),),); $ sorgu = yeni WP_Query ($ argümanlar);

Bugünkü gönderileri döndürür:

$ bugün = getdate(); $ sorgu = yeni WP_Query ("yıl =". $ bugün ["yıl"]. "& aynum =". $ bugün ["mon"]. "& gün =". $ bugün ["gün"]);

$ bugün = getdate(); $ args = dizi ("date_query" => dizi ("yıl" => $ bugün ["yıl"], "ay" => $ bugün ["mon"], "gün" => $ bugün ["gün "],),),); $ sorgu = yeni WP_Query ($ argümanlar);

Bu haftanın gönderilerini döndürür:

$ hafta = tarih ("W"); $ yıl = tarih ("Y"); $ sorgu = new WP_Query ("yıl =". $ yıl. "& w =". $ hafta);

$ args = dizi ("date_query" => dizi (dizi ("yıl" => tarih ("Y")), "hafta" => tarih ("W"),),),); $ sorgu = yeni WP_Query ($ argümanlar);

Gönderileri hafta içi 09:00 - 17:00 arası iade edin

$ args = dizi ("date_query" => dizi ("saat" => 9, "karşılaştır" => "> =",), dizi ("saat" => 17, "karşılaştır" => "<=",), array("dayofweek" =>dizi (2, 6), "karşılaştır" => "BETWEEN",),), "posts_per_page" =>

1 Ocak - 28 Şubat arası gönderileri döndür

$ args = dizi ("date_query" => dizi (dizi ("sonra" => "1 Ocak 2013", "önce" => dizi ("yıl" => 2013, "ay" => 2, "gün") => 28,), "dahil" => doğru,),), "posts_per_page" => -1,); $ sorgu = yeni WP_Query ($ argümanlar);

Before parametresinde yalnızca bir tarih içeren strtotime () -uyumlu bir dize geçirilirse, bunun o tarihte 00:00:00'a dönüştürüleceğini unutmayın. Bu durumda, kapsayıcı doğru olarak ayarlansa bile tarih sorguya dahil edilmez. Önceki bir tarihin dahil olmasını istiyorsanız, "önce" => "2013-02-28 23:59:59" gibi saati de ekleyin veya kapsayıcı ayarlanmışsa otomatik olarak ayarlanan dizi biçimini kullanın. ...

Bir yıldan uzun süre önce yapılmış ancak geçen ay değiştirilmiş gönderileri döndür

$ args = dizi ("date_query" => dizi ("sütun" => "post_date_gmt", "önce" => "1 yıl önce"), dizi ("sütun" => "post_modified_gmt", "sonra" => "1 ay önce",),), "posts_per_page" => -1,); $ sorgu = yeni WP_Query ($ argümanlar);

Karmaşık sorgular oluşturmak için "date_query" yan tümceleri iç içe yerleştirilebilir. Sözdizimi ile ilgili ayrıntılar için bkz.

Özel Alan Parametreleri

Belirli bir özel alanla ilişkili gönderileri göster.

Sorgunun bu kısmı tarafından ayrıştırılır, bu nedenle bu argüman listesinin "güncel olmaması" durumunda da kontrol edin.

  • Meta Anahtarı (sicim) - Özel alan anahtarı.
  • meta_değer (sicim) - Özel alan değeri.
  • meta_değer_sayısı (sayı) - Özel alan değeri.
  • meta_karşılaştırma (sicim) - Operatör "meta_value" yu test edecek (! LANG :. Olası değerler:"=", "!=", ">", ">=", "!}<", "<=", "LIKE", "NOT LIKE", "IN", "NOT IN", "BETWEEN", "NOT BETWEEN", "NOT EXISTS", "REGEXP", "NOT REGEXP" or "RLIKE". Default value is "=".
  • meta_query (dizi) - Özel alan parametreleri (o zamandan beri mevcuttur).
    • ilişki (sicim) - Birden fazla olduğunda, her bir iç meta_query dizisi arasındaki mantıksal ilişki. Olası değerler "VE", "VEYA"dır. Tek bir iç meta_query dizisiyle kullanmayın.

meta_query ayrıca aşağıdaki anahtarlara sahip bir veya daha fazla dizi içerir:

  • anahtar (sicim) - Özel alan anahtarı.
  • değer (sicim|dizi) - Özel alan değeri. Yalnızca bir dizi olabilir karşılaştırmak"GİRDİ", "DEĞİL", "BETWEEN" veya "NOT ARASINDA DEĞİL" şeklindedir. WordPress 3.9 ve sonraki sürümlerde "EXISTS" veya "NO EXISTS" karşılaştırmalarını kullanırken bir değer belirtmeniz gerekmez.
    (Not: 23268 numaralı hata nedeniyle, NOT EXISTS karşılaştırmalarının doğru çalışması için değer gereklidir 3.9'dan önce... tedarik etmelisiniz biraz değer parametresi için dize. Boş bir dize veya NULL ÇALIŞMAZ. Ancak, diğer herhangi bir dize hile yapacak ve NOT EXISTS kullanırken SQL'inizde GÖRÜNMEYECEKTİR. İlhama mı ihtiyacınız var? "Hata # 23268" nasıl olur?)
  • karşılaştırmak (sicim) - Test edilecek operatör. Olası değerler "=", "! =", ">", "> =", "<", "<=", "LIKE", "NOT LIKE", "IN", "NOT IN", "BETWEEN", "NOT BETWEEN", "EXISTS" and "NOT EXISTS". Default value is "=".
  • tip (sicim) - Özel alan türü. Olası değerler "NUMERIC", "BINARY", "CHAR", "DATE", "DATETIME", "DECIMAL", "SIGED", "TIME", "IGNED" şeklindedir. Varsayılan değer "CHAR"dır. "DECIMAL" ve "NUMERIC" türleri için kesinlik ve ölçek de belirleyebilirsiniz (örneğin, "DECIMAL (10.5)" veya "NUMERIC (10)" geçerlidir).

"TÜR" TARİH, yalnızca tarih YYYY-AA-GG biçiminde depolanırsa ve bu biçimle test edilirse BETWEEN "karşılaştır" değeriyle çalışır.

Önemli Not: meta_query alır dizi meta sorgu argümanları diziler(bir dizi dizi alır) - bunu aşağıdaki örneklerde görebilirsiniz. Bu yapı, kullanarak birden çok meta veriyi sorgulamanıza olanak tanır. ilişki meta sorguları arasındaki boole ilişkisini açıklamak için ilk (dış) dizideki parametre. Kabul edilen argümanlar "VE", "VEYA"dır. Varsayılan "VE" dir.

Basit Özel Alan Sorgusu:

Özel alan değerinden bağımsız olarak, özel alan anahtarının "renk" olduğu gönderileri görüntüleyin:

$ sorgu = yeni WP_Query (dizi ("meta_key" => "renk"));

Özel alan anahtarından bağımsız olarak, özel alan değerinin "mavi" olduğu gönderileri görüntüleyin:

$ sorgu = new WP_Query (dizi ("meta_value" => "mavi"));

Özel alan anahtarından bağımsız olarak özel alan değerinin "mavi" olduğu yeri görüntüleyin:

$ args = dizi ("meta_value" => "mavi", "post_type" => "sayfa"); $ sorgu = yeni WP_Query ($ argümanlar);

Özel alan anahtarının "renk" ve özel alan değerinin "mavi" olduğu gönderileri görüntüleyin:

$ args = dizi ("meta_key" => "renk", "meta_değer" => "mavi"); $ sorgu = yeni WP_Query ($ argümanlar);

Özel alan anahtarının "renk" olduğu ve özel alan değerinin "mavi" OLMADIĞI gönderileri görüntüleyin:

$ args = dizi ("meta_key" => "renk", "meta_değer" => "mavi", "meta_compare" => "! ="); $ sorgu = yeni WP_Query ($ argümanlar);

Özel alan değerinin bir sayı olduğu gönderileri görüntüleyin. Yalnızca bu sayının 10'dan küçük olduğu gönderileri görüntüler. (WP_Query, karşılaştırmak için bu denklemi kullanır: $ post_meta. $ Args ["meta_compare"]. $ Args ["meta_value"], burada "$ post_meta" özel gönderinin değeridir her gönderide depolanan meta; doldurulan değerlerle gerçek denklem: $ post_meta< 10)

$ args = dizi ("post_type" => "post", "meta_key" => "sayı", "meta_value_num" => 10, "meta_compare" => "<",); $query = new WP_Query($args);

Özel alan anahtarının belirli bir tarih olduğu ve özel alan değerinin şimdi olduğu gönderileri görüntüleyin. Yalnızca tarihi geçmemiş gönderileri görüntüler.

$ args = array ("post_type" => "event", "meta_key" => "event_date", "meta_value" => date ("Ymd"), // "event date" nin nasıl saklandığını değiştir "meta_compare" = > ">",); $ sorgu = yeni WP_Query ($ argümanlar);

Özel alan anahtarının "fiyat" olduğu ve özel alan değerinin 22'DEN KÜÇÜK VEYA EŞİT olduğu "ürünleri" görüntüleyin.
'meta_value' parametresi kullanıldığında, veriler 'sayılar' değil 'dizeler' olarak depolandığından 99 değeri 100'den büyük kabul edilecektir. Sayı karşılaştırması için 'meta_value_num' kullanın.

$ args = dizi ('meta_key' => 'fiyat', 'meta_değer' => '22', 'meta_compare' => '<=', 'post_type' =>'ürün'); $ sorgu = yeni WP_Query ($ argümanlar);

Özel alan anahtarından bağımsız olarak, özel alan değeri sıfır (0) olan gönderileri görüntüleyin:

$ args = dizi ('meta_value' => '_wp_zero_value'); $ sorgu = yeni WP_Query ($ argümanlar);

Tek Özel Alan İşleme:

Tek bir özel alandan gönderileri görüntüleyin:

$ args = dizi ('post_type' => 'product', 'meta_query' => dizi (dizi ('anahtar' => 'renk', 'değer' => 'mavi', 'karşılaştır' => 'GİBİ DEĞİL') ,),),); $ sorgu = yeni WP_Query ($ argümanlar);

(Yalnızca bir sorgunuz olsa bile meta_query'nin iç içe diziler beklediğini unutmayın.)