Have you considered using a more standard loop, like this? I think it might fix your issue #3.
$query = new WP_Query( $args );
echo '<div class="home-middle widget-area">';
echo '<h4 class="widget-title widgettitle"><span>From the Archives</span></h4>';
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
echo '<article class="post type-post status-publish format-standard has-post-thumbnail entry">';
echo '<a href="' . get_the_permalink() . '" class="alignleft" aria-hidden="true">';
echo the_post_thumbnail( 'home-middle' );
echo '<time class="entry-time" itemprop="datePublished">' . get_the_date() . '</time>';
echo '</a>';
echo '<h4>' . get_the_title() . '</h4>';
echo get_the_excerpt();
echo '</article>';
}
} else {
echo 'No posts in the Archive';
}
echo '</div>';
wp_reset_postdata();