Природно сортирање помоћу поста мета_кеи - ЦСС-трикови

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

Ово је директно уређивање основне датотеке: /вп-инцлудес/куери.пхп Имајте на уму да знакови плус у горњем коду означавају нове редове за додавање .

Напомене аутора:

Клијент је желео да подесим прилагођено поље под називом „Водич за ранг“ које им је омогућило да доделе број 1 - 20 за листу трака о којима су постављали.

Након покретања упита за постове открио сам да се мета_валуе третира као низ и као такав је помешан редослед сортирања:

на пример. 1, 10, 2, 3цсс-трикови.цомЦ 7, 8, 9

Да бисте ВордПресс / МиСКЛ користили „Природни редослед сортирања“ потребно је само да примените +0 на име поља и оно ће бити третирано као број (нпр. Мета_валуе + 0).

Да се ​​постојеће понашање не прекида, управо сам додао нови тип 'мета_валуе_нум'.

Моја линија упита сада изгледа овако:

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

Који враћа: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Ово је за укључивање у ВордПресс трунк - тако да се надам да једном када се примени не би требало бити потребе за ручним уређивањем датотеке.