my shortcode output won’t appear where I put it, but rather at the top of the content (top of the post/page content).
And here is my code
function service_shortcode_index() {
global $content;
$output = include ( TEMPLATEPATH . '/service.php' );
return $output;
}
add_shortcode('service_mid', 'service_shortcode_index');
there are some regular HTML lists with widget in “service.php”
The content displays correctly, just in the wrong position.
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.The problem is that the PHP function
include
(roughly speaking) echoes the content and then returns a boolean value.If you switch the
include
forfile_get_contents
then your$output
will be a string of the file content rather than the boolean value indicating the success of the inclusion.Works for me with WordPress5.2 & PHP7.