@@ -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; )
See on põhifaili otsene muutmine: /wp-includes/query.php Pange tähele, et ülaltoodud koodi plussmärgid tähistavad uusi ridu, mida lisada .
Autori märkused:
Klient soovis, et ma seadistaksin kohandatud välja nimega „Juhtide auaste“, mis võimaldaks neil määrata nende postitatavate ribade loendi nr 1–20.
Pärast postituste päringu käivitamist leidsin, et meta_value käsitletakse stringina ja sellisena segati sortimisjärjestust:
nt. 1, 10, 2, 3css-tricks.com C 7, 8, 9
Kui soovite, et WordPress / MySQL kasutaks loomulikku sortimisjärjestust, peate selle välja nimele rakendama lihtsalt +0 ja seda käsitletakse arvuna (nt. Meta_value + 0).
Et olemasolev käitumine ei katkeks, lisasin just uue tüübi 'meta_value_num'.
Minu päringurida näeb välja järgmine:
$guide_posts = new WP_Query("cat=12&meta_key=guide_rank&orderby=meta_value_num&order=ASC&showposts=10");
Mis tagastab: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
See on ette nähtud WordPressi pagasiruumi lisamiseks - nii et loodetavasti pärast selle rakendamist ei tohiks faili käsitsi muuta vaja.