it-swarm.com.de

Ordnen Sie Beiträge nach ID in der angegebenen Reihenfolge

Im Backoffice meines Themas können die Benutzer auswählen, welche Beiträge auf der Startseite angezeigt werden sollen, und sie können auch in welcher Reihenfolge die ausgewählten Beiträge angezeigt werden sollen auswählen.

Ich habe es so versucht:

$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).')'));

Aber wie erwartet funktioniert es nicht. Der richtige Weg, dies zu tun gemäß dem Kodex ist:

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

Aber das geht immer noch nicht! Die Posts werden nach ID (1, 2, 3) anstelle der angegebenen Reihenfolge (1, 3, 2) sortiert.

Wo soll ich schauen Vielen Dank

4
Rovb

Ab WordPress 3.5 ermöglicht der Parameter orderby, dass der Wert post__in in der Reihenfolge des Parameters post__in sortiert wird, wie in Ihrem Beispiel.

Es ist möglicherweise nicht ideal, zu warten oder mindestens 3.5 zu benötigen, aber dies ist mit ziemlicher Sicherheit die beste und einfachste Möglichkeit, das zu tun, wonach Sie suchen.

Hier ist das relevante Trac-Ticket wenn Sie die Details möchten.

4
mrwweb