Kārtot dabiski, izmantojot Post meta_key - CSS-triki

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

Tas ir tiešs pamata faila labojums : /wp-includes/query.php Ņemiet vērā, ka iepriekšējā koda plus zīmes norāda jaunas pievienojamās rindas .

Autora piezīmes:

Klients vēlējās, lai es iestatu pielāgotu lauku ar nosaukumu “Guide Rank”, kas ļāva viņiem piešķirt # 1 - 20 joslu sarakstam, par kuru viņi izlika ziņojumu.

Pēc ziņu vaicājuma izpildīšanas es atklāju, ka meta_value tiek apstrādāta kā virkne un tādējādi šķirošanas kārtība ir sajaukta:

piem. 1, 10, 2, 3css-triki.com C 7, 8, 9

Lai WordPress / MySQL izmantotu “Natural Sort Order”, lauka nosaukumam vienkārši jāpielieto +0, un tas tiks uzskatīts par skaitli (piemēram, meta_value + 0).

Lai pastāvošā darbība netiktu pārtraukta, es tikko pievienoju jauno tipu “meta_value_num”.

Mana vaicājuma rindiņa tagad izskatās šādi:

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

Kas atgriež: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Tas ir paredzēts iekļaušanai WordPress bagāžniekā - tāpēc, cerams, kad tas tiks lietots, nevajadzēs manuāli rediģēt failu.