Luonnollinen lajittelu Postin avulla meta_key - CSS-temppuja

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

Tämä on suora muokkaus ydintiedostoon: /wp-includes/query.php Huomaa, että yllä olevan koodin plusmerkit osoittavat uusia lisättäviä rivejä .

Kirjoittajan huomautukset:

Asiakas halusi minun asettavan mukautetun kentän nimeltä "Guide Rank", jonka avulla he voivat määrittää # 1 - 20 luettelolle baareista, joista he lähettivät tietoja.

Suoritettuani viestikyselyn huomasin, että meta-arvoa kohdeltiin merkkijonona ja lajittelujärjestystä sekaisin:

esimerkiksi. 1, 10, 2, 3css-tricks.com C 7, 8, 9

Jos haluat saada WordPress / MySQL: n käyttämään “Luonnollinen lajittelujärjestys”, sinun on vain sovellettava +0 kentän nimeen ja sitä käsitellään numerona (esim. Meta-arvo + 0).

Joten nykyinen käyttäytyminen ei keskeydy, olen juuri lisännyt uuden tyypin 'meta_value_num'.

Kyselyrivini näyttää nyt tältä:

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

Joka palauttaa: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Tämä on tarkoitettu sisällytettäväksi WordPress-runkoon - joten toivottavasti, kun se otetaan käyttöön, tiedostoa ei tarvitse muokata manuaalisesti.