0

Need group posts from custom post type by post date.

Example:
Jan (all posts posted in januar for all years 2010,2011 ... 2015)
1 (all posts posted in 1 januar for all years 2010,2011 ... 2015)
POST1
POST2
...
2 (all posts posted in 1 januar for all years 2010,2011 ... 2015)
POST1
POST2
...
Feb (all posts posted in januar for all years 2010,2011 ... 2015)
1 (all posts posted in 1 januar for all years 2010,2011 ... 2015)
POST1
POST2
...

Now I use this code:

<table class="table table-striped">
<?php
$current_month = '';
$args = array(
'post_type' => 'dayinhistory',
'date_query' => array(
'month' => '1',
),
'order' => 'ASC'
);

query_posts( $args );

if ( have_posts() ) : while( have_posts() ): the_post();

$this_month = get_the_time( 'F' );

if( $this_month != $current_month ){
$current_month = $this_month;
echo '<tr><td colspan="4">'; 
echo $current_month; 
echo '</td></tr>';
}
?>
<tr>
<td style="vertical-align:inherit;"><?php the_date('d.m.Y', '<span class="label label-info">', '</span>'); ?></td>
<td style="vertical-align:inherit;"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></td>
<td style="vertical-align:inherit;"><span class="label label-default"><?php the_time('d M Y'); ?></span></td>
</tr>
<?php endwhile;?>
<?php endif;?>
<?php wp_reset_query();?>
</table>

Or this:

<?php
$the_query = new WP_Query( 'post_type=dayinhistory&monthnum=3' );
echo '<table class="table table-striped">';
while ( $the_query->have_posts() ) {
$the_query->the_post(); 

$this_month = get_the_time( 'F' );

if( $this_month != $current_month ){
$current_month = $this_month;
echo '<tr><td colspan="4">'; echo $current_month; echo '</td></tr>';
}
?>
<tr>
<td style="vertical-align:inherit;"><?php the_date('d.m.Y', '<span class="label label-info">', '</span>'); ?></td>
<td style="vertical-align:inherit;"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></td>
<td style="vertical-align:inherit;"><span class="label label-default"><?php the_time('d M Y'); ?></span></td>
</tr>                
<?php }
echo '</table>';
wp_reset_postdata();
?>

Result enter image description here

But posts sorts by year, not by day.

  • 1
    What have you tried so far and what did not work. Please file an edit with your efforts in order for someone to help you :-) – Pieter Goosen Mar 3 '15 at 13:01
0

You can use the month parameter of WP_Query to get posts by month. For example, to get all posts published on March, ignoring year:

<?php
$the_query = new WP_Query( 'monthnum=3' );
echo '<ul>';
while ( $the_query->have_posts() ) {
    $the_query->the_post();
    echo '<li>' . get_the_title() . '</li>';
}
echo '</ul>';
wp_reset_postdata();
?>
  • Thanx, but this example get post by one month and posts sorts by year not by day. – KingStakh Mar 3 '15 at 19:28
  • You didn't talk about any order, how could I know that you want the posts in a specific order? Anyway, I don't think you can sort the query by "day", you can sort it by "date", you will need to work with results objects after the query to sort the results at your own. – cybmeta Mar 4 '15 at 9:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.