Természetes rendezés a Post használatával meta_key - CSS-trükkök

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

Ez egy alapfájl közvetlen szerkesztése: /wp-includes/query.php Vegye figyelembe, hogy a fenti kód pluszjelei új sorokat adnak hozzá .

Szerzői megjegyzések:

Egy ügyfél azt akarta, hogy állítsak be egy „Guide Rank” nevű egyéni mezőt, amely lehetővé tette számukra az # 1 - 20 hozzárendelését a sávok listájához, amelyekről közzétettek.

A hozzászólások lekérdezése futtatása után azt tapasztaltam, hogy a meta_value karakterláncként van kezelve, és így a rendezési sorrendet összetévesztették:

például. 1, 10, 2, 3css-tricks.com C 7, 8, 9

Ahhoz, hogy a WordPress / MySQL a „Természetes rendezési sorrendet” használja, csak +0-t kell alkalmaznia a mező nevére, és ez számként fog kezelni (pl. Meta_value + 0).

Annak érdekében, hogy a meglévő viselkedés ne szakadjon meg, most hozzáadtam az új típust: 'meta_value_num'.

A lekérdezési sorom így néz ki:

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

Ami visszatér: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Ezt fel kell venni a WordPress csomagtartójába - így remélhetőleg, ha alkalmazzák, akkor nincs szükség a fájl manuális szerkesztésére.