web-dev-qa-db-fra.com

Ordre postes par ID dans l'ordre donné

Dans le back-office de mon thème, les utilisateurs peuvent choisir les publications à afficher sur la page d'accueil, mais ils peuvent également choisir dans quel ordre les publications sélectionnées doivent-elles apparaître .

J'ai essayé comme ça:

$aPostsIDs = array(1,3,2); // Note the 3 should appear before the 2
query_posts(array('post_type' => 'page', 
                  'post__in' => $aPostsIDs,
                  'order_by' => 'FIELD(ID, '.implode(',',$aPostsIDs).')'));

Mais comme prévu, cela ne fonctionne pas. La bonne façon de le faire selon le codex est:

add_filter('posts_orderby', 'edit_posts_orderby');
function edit_posts_orderby($orderby_statement) {
    global $aPostsIDs;
    $orderby_statement = 'FIELD(ID, '.implode(',',$aPostsIDs).')';
    return $orderby_statement;
}

Mais ça ne marche toujours pas! Les articles sont classés par ID (1, 2, 3) au lieu de l’ordre donné (1, 3, 2).

Où devrais-je regarder? Merci

4
Rovb

À partir de WordPress 3.5, le paramètre orderby permettra à la valeur post__in de trier selon l'ordre du paramètre post__in, comme dans votre exemple.

Ce n’est peut-être pas l’idéal d’attendre ou d’avoir besoin de 3,5+, mais ce sera certainement le moyen le plus simple et le plus simple de faire ce que vous cherchez.

Voici le ticket de correspondance pertinent } _ si vous voulez les détails.

4
mrwweb