I have another database which stores post’s IDs and I want do display them using WP_query to use the WP default pagination. I’m using orderby => none to preserve the original order, but the result reorders them by IDs.
$ids = array (60, 23, 78, 46, 105, 130)
$args = array (
'posts_per_page' => -1,
'post__in' => $ids,
'orderby' => 'none'
);
$query = new WP_Query ( $args );
while ( have_posts() ) : the_post();
echo '<li>';
the_title();
echo '</li>';
endwhile;
Could anyone help me?
Thanks,
Romulo De Lazzari
You can order them manually after the query is complete:
And like Mamaduka posted, if it’s a custom loop use the $query methods instead of the global functions…
Try following snippet:
orderby none simply uses the order MySQL returns without explicitly ordering by a field, which is typically going to be in order of ID, since that’s how MySQL uniquely identifies each post and how it is able to most efficiently retrieve them from the database.
If you want your custom order, you’ll have to loop through your array of IDs and match them against the returned posts.
A better way to use post__in for an order which is you have entered same order list managed in a post.
More info