Merhaba
Şu yazımda da belirttiğim gibi bir takım WordPress sorunlarını ve çözümlerini karşılaştıkça yazıyorum.
WordPress‘te yazıları listelerken orderby etiketini kullanarak bir takım sıralamalar yapabiliyoruz. Örnekse şu şekilde tarihe göre sıralayacak şekilde son 5 yazıyı listeyebiliyoruz;
<?php
$args = array( 'numberposts' => 5, 'orderby' => 'date'); // 5 olan listelenecek yazı sayısı.
$tariheGore = get_posts( $args );
foreach( $tariheGore as $post ) : ?>
<li><?php the_title(); ?></li> //yazı başlığı
<?php endforeach; ?>
Sorun
Buraya kadar her şey normal. Şimdi diyeceksiniz peki sorun ne?
Sorun şu, enazından benim yaşadığım.
Biz bu sıralamayı tarihe göre değil de yazılara eklediğimiz özel alanlar yani Custom Field(meta_key)’lara göre nasıl sıralarız?
Yazılara eklediğiniz alan meta_key oradaki değer de meta_value oluyor.
Internette de o kadar bilgi kirliliği var ki, çıkan sonuçlara bakınca hem kısa çözümler değil hem de tamamen wordpress’in yapısının dışına çıkılmış uzun çözümler. Bu da gereğinden fazla zaman kaybına neden oluyor. Bu yolu ancak kendim uğraşarak, deneyerek bulabildim.
Çözüm
meta_value‘ ye göre sıralamak için şunları yazıyoruz. 2 satır ekleme yaptığım satır.;
<?php
$args = array( 'numberposts' => 5); // 5 olan listelenecek yazı sayısı.
$args = array('meta_key' => 'KELIME', 'orderby' => 'meta_value_num'); // KELIME yazıdaki meta_key
$metayaGore = get_posts( $args );
foreach( $metayaGore as $post ) : ?>
<li><?php the_title(); ?></li> //yazı başlığı
<?php endforeach; ?>
Burada KELIME diye yazdığım yere, kendi özel meta_key‘inizi yazacaksınız. Başka değiştirmeniz gereken bir yer yok.
Teşekkürler.
2 responses to “WordPress’te Özel Alanlara (meta_key, meta_value) Göre Sıralama”
Kardeş ben özel alan verisine göre sıralama yaptırmak istiyorum, ama şu şekilde
?orderby=date&order=DESC”>Son Eklenene Göre
bu bir örnek.
Benim yapmak sitediğim şey; Fiyata Göre Sırala, en ucuzdan pahalıya şeklinde.
Fiyatı özel alan olarak giriyorum.
Bunu nasıl yapabiliriz.
Merhaba, yazida yazdigimi denediginizde olmuyor mu? KELIME yerine fiyat yazinca yani?