There is no filter that would allow you to strip those $before
and $after
values:
42 function the_title($before="", $after="", $echo = true) { 43 $title = get_the_title(); 44 45 if ( strlen($title) == 0 ) 46 return; 47 48 $title = $before . $title . $after; 49 50 if ( $echo ) 51 echo $title; 52 else 53 return $title; 54 }
https://core.trac.wordpress.org/browser/tags/3.8.1/src/wp-includes/post-template.php#L42
That is the end of the story. To change that you need to hack the theme. What you want, “to do this from within the plugin and without creating a custom page template so it will work with any theme”, isn’t possible.
At best you could write output buffering into the theme, but again, you’d need to hack the theme.
Even if it were possible, you would like cause numerous and sometimes catastrophic failure in the theme, as you would be removing markup that the theme may depend upon. What you want is a bad idea, sorry.