web-dev-qa-db-fra.com

meta_value_num sort tri glitch

j'ai une requête personnalisée, et j'ai une clé méta qui contient un numéro de séquence: 1.1, 1.2, 2.1, 2.2 ... 11.1, etc.

le problème se produit lorsque la séquence numérique obtient des chiffres à deux chiffres, c.-à-d. 5.11, 5.12, 5.21

ceux-ci apparaissent comme tels

5.1, 5.11, 5.12, 5.2, 5.21 etc au lieu de 5.1, 5.2, 5.3 ... 5.11, 5.12 etc.

comment puis-je les faire trier correctement!?

$loop = new WP_Query(array(
    'factsheet_category' => $term->slug,
    'orderby' => 'meta_value_num', 
    'meta_key' => 'factsheet_id', 
    'order' => 'ASC'
));
2
Elle Billias

Vous voulez le tri naturel ,

Exemple;

$val = array(5.1, 5.11, 5.12, 5.2, 5.21);
natsort($val);
foreach ($val as $key => $val) {
    echo $val."<br>";
}

Produces:

5.1
5.2
5.11
5.12
5.21

Tandis que;

$val = array(5.1, 5.11, 5.12, 5.2, 5.21);
asort($val);
foreach ($val as $key => $val) {
    echo $val."<br>";
}

Produces:

5.1
5.11
5.12
5.2
5.21

Solution

$loop = new WP_Query(array(
    'factsheet_category' => $term->slug,
    'orderby' => 'meta_value meta_value_num', //addition of meta_value before meta_value_num
    'meta_key' => 'factsheet_id', 
    'order' => 'ASC'
));
1
userabuser