the </p>
is just a browser artefact to compensate for a missing </span>
;
your code is missing . $args['link_after']
in two locations;
the corrected code:
// WP_LINK_PAGES: Add prev and next links to a numbered link list
add_filter('wp_link_pages_args', 'wp_link_pages_args_prevnext_add');
function wp_link_pages_args_prevnext_add($args) {
global $page, $numpages, $more, $pagenow;
$args['before'] = '<div id="link_wrap">';
$args['after'] = '</div>';
$args['link_before'] = '<span class="classlinks">';
$args['link_after'] = '</span>';
if($page-1) // there is a previous page
$args['before'] .= ' '. _wp_link_page($page-1) . $args['link_before'] . $args['previouspagelink'] . $args['link_after'] . '</a>' . ' ' ;
if ($page<$numpages) // there is a next page
$args['after'] = ' '. _wp_link_page($page+1) . $args['link_before'] . $args['nextpagelink'] . $args['link_after'] . '</a></div>' ;
return $args;
}