Naravna razvrstitev z uporabo 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; )

To je neposredno urejanje jedrne datoteke: /wp-includes/query.php Upoštevajte, da znaki plus v zgornji kodi označujejo nove vrstice za dodajanje .

Opombe avtorja:

Stranka je želela, da sem nastavil polje po meri, imenovano "Rank Rank", ki jim je omogočilo, da dodelijo št. 1 - 20 za seznam vrstic, o katerih so objavljali.

Po zagonu poizvedbe o objavah sem ugotovil, da je bila meta_value obravnavana kot niz in je bil tako razvrščen vrstni red razvrščanja:

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

Če želite, da WordPress / MySQL uporablja "Naravni vrstni red", morate samo uporabiti +0 za ime polja in bo obravnavano kot številka (npr. Meta_value + 0).

Da obstoječe vedenje ni prekinjeno, sem pravkar dodal novo vrsto 'meta_value_num'.

Moja poizvedbena vrstica je zdaj videti tako:

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

Kar vrne: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

To je za vključitev v trup WordPress - tako da, upajmo, ko bo uporabljen, ne bo treba ročno urejati datoteke.