Wordpress - Shortcode output always showing at top of page

I think your problem is with the $output = include .... statement. include() returns true or false based whether it was successful - not the content of the file being included. Use output buffering to get the content.

function service_shortcode_index() {
    global $content;
    ob_start();
    include ( TEMPLATEPATH . '/service.php' );
    $output = ob_get_clean();
    return $output;
}

add_shortcode('service_mid', 'service_shortcode_index');

Tags:

Shortcode