admin管理员组

文章数量:1429735

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 0
Add a comment  | 

2 Answers 2

Reset to default 13

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');

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.

本文标签: Shortcode output always showing at top of page