WordPress Meta_Query: Bilmeniz Gereken Her Şey

Yayınlanan: 2022-04-30

WordPress'teki en güçlü araçlardan biri, gönderilere özel alanlar ekleme yeteneğidir. Birçok geliştirici, gönderiler için Gelişmiş Özel Alanlar veya özel meta alanlar kullanır.

Bu gönderide, WordPress'teki meta_query işlevini kullanarak gönderileri özel alana göre nasıl sorgulayacağınızı inceleyeceğiz. Bu, birçok özel işlevselliğe sahip siteler için yararlıdır.


Bir Meta Değere Göre Sorgu Gönderileri

Özel bir alana sahip gönderileri sorgulamanın muhtemelen en popüler yolu, belirli bir meta değeri hedeflemektir. Örneğin, gönderilerin "özellikli" olup olmadığını belirlemek için kullanılan özel bir alana sahip olduğu bir sitemiz olduğunu varsayalım. Bu, bir WordPress sitesinde öne çıkan bir bölüm oluştururken yaygındır.

<?php
$ meta_query_args = array (
'meta_query' => array (
array (
'key' => 'featured_post' ,
'value' => 'yes' ,
'compare' => '='
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-query-post-meta-value.php hosted with by GitHub

Tabii ki yukarıdaki kod, alanlarınıza ve meta anahtarlarınıza ne başlık verdiğinize bağlı olarak değişecektir, ancak 'anahtar' özel alanın adıdır, 'değer' ise gönderileri sorguladığımız şeydir. 'Karşılaştır' alanı, yazının ilerleyen bölümlerinde ele alacağımız bir dizi karşılaştırma işlemi için kullanılır.

Bunu WP_Query'de kullanmak, gönderileri görüntülemek için döngü işlevleri için harika bir dizi elde etmemizi sağlayacaktır. Bu yazıda, WP_Query çıktısının nasıl görüntüleneceği yerine yalnızca meta_query işlevlerinin üzerinden geçeceğiz.


Gönderileri Birden Çok Meta Değere Göre Sorgulama

Bir meta anahtar değerini birden çok değere karşı kontrol etmek istiyorsanız, 'IN' operatörünü kullanmak en iyisidir.

<?php
$ meta_query_args = array (
'meta_query' => array (
array (
'key' => 'city_name' ,
'value' => array ( 'New York City' , 'London' , 'San Francisco' ),
'compare' => 'IN'
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-query-post-meta-value-multiple.php hosted with by GitHub

Gönderileri Birden Çok Meta Anahtarla Sorgulama

Artık gönderileri tek bir meta anahtarla sorguladığımıza göre, sorgulanan birden çok alan/anahtarla bir tane yapalım. Bu, gönderileri birden çok özel alana dayalı olarak sorgulamanıza olanak tanır. Bu örnek, sorguları bir diziye yerleştirerek ve meta_query'ye bir 'ilişki' ekleyerek yukarıda yaptığımız şeyleri birleştirir.

<?php
$ meta_query_args = array (
'meta_query' => array (
'relation' => 'AND' ,
array (
array (
'key' => 'city_name' ,
'value' => array ( 'New York City' , 'London' , 'San Francisco' ),
'compare' => 'IN'
),
array (
'key' => 'featured_post' ,
'value' => true ,
'compare' => '='
)
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-meta-query-multiple-keys.php hosted with by GitHub

'İlişki' alanı 'VE' veya 'VEYA' olarak ayarlanabilir, böylece tüm koşulların veya yalnızca birinin yerine getirilmesini isteyebilirsiniz.


Meta Sorgu Karşılaştırma Operatörleri

Gönderilerinizi meta sorgu ile sorgulamanıza yardımcı olacak birkaç operatör vardır. İşte her bir karşılaştırma operatörünün ve bunları nasıl kullanabileceğinizin hızlı bir dökümü.

  • '=' Bir meta değere eşit olan meta anahtarları sorgular
  • '!=' Bir meta değere eşit OLMAYAN meta anahtarları sorgular
  • '>' Meta değerinden büyük olan meta anahtarları sorgular
  • '>=' Meta değerinden büyük & ona eşit olan meta anahtarları sorgular
  • '<' Meta değerinden daha küçük olan meta anahtarları sorgular
  • '<=' Meta değerinden küçük ve ona eşit olan meta anahtarları sorgular
  • 'LIKE' Bir kelime/ifade içeren meta anahtarları sorgular (örneğin, "kırmızı"yı sorgulamak, "Kırmızı", "görünüm kırmızı" ve "kırmızı stil" ifadeleriyle eşleşir)
  • 'GİBİ DEĞİL' Yukarıdakilerin tersi
  • 'IN' Değerin bir dizide bulunduğu meta anahtarları sorgular
  • 'NOT IN' Değerin bir dizide olmadığı durumlarda meta anahtarları sorgular
  • 'BETWEEN' Değerin iki sayı arasında olduğu meta anahtarları sorgular
  • 'NOT BETWEEN' Değerin iki sayı arasında olmadığı meta anahtarları sorgular
  • 'EXISTS' Değerin mevcut olduğu meta anahtarları sorgular
  • 'NOT EXISTS' Değerin hiç olmadığı meta anahtarları sorgular
  • 'REGEXP' Normal bir ifadeye dayalı olarak meta anahtarları sorgular
  • 'REGEXP DEĞİL' Yukarıdaki REGEXP'in tersi

Gönderileri Meta Alanlarına Göre Sıralama

Elbette WordPress, WP_Query'deki 'orderby' seçeneğini kullanarak özel alanlarınızı kullanarak gönderileri sıralamanıza izin verir. 'orderby'yi 'meta_value' olarak ayarlamanız ve ardından alan adınıza bir 'meta_key' değeri ayarlamanız gerekir. Varsayılan olarak bu, sorgunuzun alfabetik olarak döndürülmesini veya alanınız bir sayı olduğunda sayıya göre sıralanmasını istediğinizde en kullanışlıdır.

<?php
$ meta_query_args = array (
'post_type' => 'page' ,
'order' => 'ASC' ,
'meta_key' => 'city_name' ,
'orderby' => 'meta_value'
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-orderby-meta-query.php hosted with by GitHub