Prirodno sortiranje pomoću posta meta_key - CSS-trikovi

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

Ovo je izravno uređivanje osnovne datoteke: /wp-includes/query.php Imajte na umu da znakovi plus u gornjem kodu označavaju nove retke za dodavanje .

Bilješke autora:

Klijent je želio da postavim prilagođeno polje pod nazivom "Vodič za rang" koje im je omogućilo da dodijele # 1 - 20 popisu traka o kojima su postavljali.

Nakon pokretanja upita za postove otkrio sam da se meta_value tretira kao niz i kao takav je promiješan redoslijed sortiranja:

npr. 1, 10, 2, 3css-trikovi.comC 7, 8, 9

Da biste WordPress / MySQL koristili "Prirodni redoslijed sortiranja", samo trebate primijeniti +0 na naziv polja i ono će se tretirati kao broj (npr. Meta_value + 0).

Kako se postojeće ponašanje ne bi prekidalo, upravo sam dodao novi tip 'meta_value_num'.

Moj redak upita sada izgleda ovako:

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

Koji vraća: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Ovo je za uključivanje u WordPress trunk - pa nadam se da nakon što se primijeni ne bi trebalo biti potrebe za ručnim uređivanjem datoteke.