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.
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.
Share Improve this question asked Oct 10, 2012 at 15:41 Nisha_at_BehanceNisha_at_Behance 7032 gold badges7 silver badges14 bronze badges 02 Answers
Reset to default 13I 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');
The problem is that the PHP function include
(roughly speaking) echoes the content and then returns a boolean value.
If you switch the include
for file_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.