My plugins are ending up above the header?

Shortcodes should return their content, never echo it.

From the add_shortcode() docs:

Note that the function called by the shortcode should never produce an output of any kind. Shortcode functions should return the text that is to be used to replace the shortcode. Producing the output directly will lead to unexpected results.

But the functions you appear to be using—the_title() and the_date()—both echo their output by default. Consider using get_the_title() and get_the_date() instead. You’ll need to refactor some of the rest of your code too, but this should be a good starting point.