Yazı Kullanarak Doğal Sıralama meta_key - CSS Hileleri

Anonim

@@ -2033,6 +2033,7 @@

 if ( !empty($q('meta_key')) ) ( $allowed_keys() = $q('meta_key'); $allowed_keys() = 'meta_value'; + $allowed_keys() = 'meta_value_num'; ) $q('orderby') = urldecode($q('orderby')); $q('orderby') = addslashes_gpc($q('orderby'));

@@ -2056,6 +2057,9 @@

 case 'meta_value': $orderby = "$wpdb->postmeta.meta_value"; break; + case 'meta_value_num': + $orderby = "$wpdb->postmeta.meta_value+0"; + break; default: $orderby = "$wpdb->posts.post_" . $orderby; )

Bu bir çekirdek dosyaya doğrudan yapılan bir düzenlemedir: /wp-includes/query.php Yukarıdaki koddaki artı işaretlerinin eklenecek yeni satırları gösterdiğine dikkat edin .

Yazar Notları:

Bir müşteri, hakkında yayınladıkları Bar listesi için 1 - 20 numara atamalarına olanak tanıyan "Kılavuz Sıralaması" adlı özel bir alan oluşturmamı istedi.

Gönderi sorgusunu çalıştırdıktan sonra, meta_value'nun bir dize olarak değerlendirildiğini ve bu nedenle sıralama düzeninin karışık olduğunu buldum:

Örneğin. 1, 10, 2, 3css-tricks.comC 7, 8, 9

WordPress / MySQL'in "Doğal Sıralama Düzeni" ni kullanmasını sağlamak için alan adına +0 uygulamanız yeterlidir ve bu bir sayı olarak değerlendirilecektir (örn. Meta_value + 0).

Mevcut davranışın kesintiye uğramaması için yeni 'meta_value_num' türünü ekledim.

Sorgu satırım şimdi şöyle görünüyor:

$guide_posts = new WP_Query("cat=12&meta_key=guide_rank&orderby=meta_value_num&order=ASC&showposts=10");

Aşağıdakileri döndürür: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Bu, WordPress gövdesine dahil edilmek üzere hazırdır - bu nedenle, uygulandığında dosyayı manuel olarak düzenlemeye gerek kalmayacağını umuyoruz.