‘date’,
‘order’ => ‘ASC’,
‘posts_per_page’ => 1,
‘caller_get_posts’=>1
);
$oldestpost = get_posts($args);

$args=array(
‘orderby’ => ‘date’,
‘order’ => ‘DESC’,
‘posts_per_page’ => 1,
‘caller_get_posts’=>1
);
$newestpost = get_posts($args);

if ( !empty($oldestpost) && !empty($newestpost) ) {
$oldest = mysql2date(“Y”, $oldestpost[0]->post_date);
$newest = mysql2date(“Y”, $newestpost[0]->post_date);

for ( $counter = intval($newest); $counter >= intval($oldest); $counter = $counter – 1) {

$args=array(
‘cat’ => ‘4’,
‘year’ => $counter,
‘posts_per_page’ => -1,
‘orderby’ => ‘date’,
‘order’ => ‘DESC’,
‘caller_get_posts’=>1
);

$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
echo ‘

‘ . $counter . ‘

‘;
while ($my_query->have_posts()) : $my_query->the_post(); ?>