Urutan Semula Jadi Menggunakan Post meta_key - Trik CSS

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; )

Ini adalah suntingan langsung ke fail inti: / wp- include/query.php Perhatikan tanda tambah dalam kod di atas menunjukkan baris baru untuk ditambahkan .

Catatan Pengarang:

Seorang pelanggan menginginkan saya untuk menyiapkan bidang khusus yang disebut "Peringkat Rank" yang membolehkan mereka menetapkan # 1 - 20 untuk senarai Bar yang mereka hantar.

Setelah menjalankan pertanyaan entri, saya dapati bahawa nilai meta_ diperlakukan sebagai rentetan dan dengan itu susunan urutannya terganggu:

cth. 1, 10, 2, 3css-tricks.comC 7, 8, 9

Untuk mendapatkan WordPress / MySQL menggunakan "Urutan Urutan Semula Jadi", anda hanya perlu mengaplikasikan +0 pada nama bidang dan ia akan dianggap sebagai angka (mis.

Agar tingkah laku yang ada tidak terganggu saya baru sahaja menambahkan jenis baru 'meta_value_num'.

Baris pertanyaan saya kini kelihatan seperti:

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

Yang mengembalikan: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Ini sesuai untuk dimasukkan ke dalam batang WordPress - jadi semoga setelah diterapkan, tidak perlu menyunting fail secara manual.