4

I want to order my posts by tags with only one WP_Query()

In my WP_Query I would like to display 2 posts with tags portrait

2 posts with tags paysage

2 posts with tags portrait

2 posts with tags paysage

2 posts with tags portrait

2 posts with tags paysage

Etc...

And I need to order these posts by recents.

What is the query to do that ?

Thanks

PS : Sorry I cannot use code because I'm with my iPhone.

2 Answers 2

2

Like Eugene mentioned in his answer you need to run a query for each tag. I would create a foreach loop that went through each tag then queried the latest 2 posts from each.

$tags = get_tags();
foreach ( $tags as $tag ) {

    echo '<h3>' .$tag->name. '</h3>';
    $tag_query = new WP_Query( array( 
                              'tag_id' => $tag->term_id,
                              'posts_per_page' => 2,
                              'no_found_rows' => true,
                               ) );
        while ( $tag_query->have_posts() ) : $tag_query->the_post();
        // Do stuff
        endwhile; wp_reset_postdata();
    }
1
  • Ok, you suggest to create two queries. One for tag portrait and tag paysage. But what about the pagination. The only reason why I want to use only one query is the pagination. With two queries i'll get two paginations on my page.
    – Steffi
    Jun 16, 2012 at 8:54
0

It's impossible to do with one query, even from database point of view (without unions).

I would recommend you to use separate queries for each term. Don't invent a wheal, don't over complicate your code.

This site is temporarily in read-only mode and not accepting new answers.

Not the answer you're looking for? Browse other questions tagged .