Change News Story Layout Based on Date Range

Conceptually, that isn’t hard to do.

if (have_posts()) {
  while (have_posts()) { 
    the_post();

    if ( $post->post_date >= date("Y-m-d H:i:s",strtotime('7/15/03 1:03 PM'))
         && $post->post_date <= date("Y-m-d H:i:s",strtotime('9/19/07 11:34 AM'))) ) {
      // (layout coding)
    } elseif ( /* another condition */ ) { 
      // (layout coding)
    } elseif ( /* another condition */ ) {
      // (layout coding)
    } else {
      // (layout coding)
    }

  }
}

You can skip the strtotime if you just use MySQL format dates– YYYY-MM-DD HH:MM:SS (24 hour time)– to start with.

That will become pretty cumbersome over time. It may already be quite a long ifelse sequence, especially with the layout markup interspersed like that. Unfortunately, unless there is a pattern to your format changes that may be unavoidable. You can make that more manageable by using get_template_part.

} elseif ( /* another condition */ ) {
  get_template_part('layouts/','layout2');
}

Your layout markup would be in wp-content/themename/layouts/layout2.php. That should make things more readable and maintainable.

Also, you don’t need all those opening and closing PHP tags. You only need those when you switch from PHP to HTML. They are not markers for line starts and stops.