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
À 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.