Prirodzené triedenie pomocou príspevku meta_key - Triky CSS

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

Toto je priama úprava základného súboru: /wp-includes/query.php Všimnite si, že znamienka plus vo vyššie uvedenom kóde označujú nové riadky, ktoré sa majú pridať .

Poznámky autora:

Klient chcel, aby som nastavil vlastné pole s názvom „Guide Rank“, ktoré mu umožnilo priradiť číslo 1 - 20 pre zoznam pruhov, o ktorých zverejňujú príspevky.

Po spustení dotazu na príspevky som zistil, že s meta_value sa zaobchádza ako s reťazcom, a preto bolo zmätené poradie triedenia:

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

Ak chcete, aby WordPress / MySQL používal „prirodzené poradie zoradenia“, stačí použiť +0 na názov poľa a bude sa s ním zaobchádzať ako s číslom (napr. Meta_value + 0).

Aby sa existujúce správanie neprerušilo, práve som pridal nový typ „meta_value_num“.

Môj riadok dopytu teraz vyzerá takto:

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

Čo vracia: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Toto je určené na zahrnutie do kmeňa WordPress - takže dúfajme, že akonáhle bude aplikovaný, nebude už treba súbor manuálne upravovať.