I use a custom query retrieving the two categories of the post type, each column show only 6 posts of the category, if was more use pagination.
Than I like to do is to show each post on each column on the same line or row, this just for design purposes, I thought than the query must count for the first two post, put on two divs (for example) and then put the next two, and the next later, until complete the sixth row to paginate if there are more.
Really appreciate any comment or idea to solve this, didn’t really know how to do.
Here is the custom query I use:
<?php
// for a given post type, return all
$post_type = 'evento';
$tax = 'categorias-eventos';
$tax_terms = get_terms($tax);
$post_counter = 0; // reset so we can generate columns
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
if ($tax_terms) { ?>
<ul class="column_wrap" style="width:45%; float:left;">
<?php foreach ($tax_terms as $tax_term) {
$args = array(
'post_type' => $post_type,
"$tax" => $tax_term->slug,
'post_status' => 'publish',
'posts_per_page' => 6,
//'posts_per_page' => -1,
//'paged' => $paged,
'orderby' => 'title',
'order' => 'ASC',
'caller_get_posts' => 1
); // END $args
$my_query = null; // clear the query variable
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) { ?>
<li class="column_row" style="float:left;">
<h4><?php echo $tax_term->name; ?></h4>
</li>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
<li class="column_row" style="float:left;">
<div class="retailer_wrap retailer_id-<?php the_ID(); ?>">
<p><strong><?php the_title(); ?></strong></p>
<p><?php echo get_post_meta($post->ID, 'eventdate', true);?></p>
<p><?php echo get_post_meta($post->ID, 'eventplace', true);?></p>
</div>
</li>
<?php $post_counter++; ?>
<?php if ( 0 == $post_counter % 6 ) { ?>
</ul>
<ul class="column_wrap noneed" style="width:45%; float:left;">
<?php } // END if $post_counter ?>
<?php
endwhile;
//wp_pagenavi( array( 'query' => $my_query ) );
} // END if have_posts loop
wp_reset_query();
} // END foreach $tax_terms ?>
</ul>
<?php } // END if $tax_terms
?>
One way to output the same query yet style it differently is to use
current_post
or in combination withrewind_posts
, or usingrewind_posts
alone.So for example:
Your initial query
Another more simple option is to just use multiple separate loops (and DB query’s)
I hope this logic makes sense and helps , I don’t have the time to actually write your query and test it.