Php 短代码出现在内容上方

Php 短代码出现在内容上方,php,wordpress,plugins,shortcode,Php,Wordpress,Plugins,Shortcode,为什么我的EasyMetable短代码总是放在所有内容之前?我怎样才能在我想要的地方显示它?我试图改变回声,打印返回,但我没有太多的编码,所以你能帮我吗 function easytimetable( $atts, $content = null ){ extract(shortcode_atts(array( 'id' => 1 ), $atts)); $id = (int)$id; $nonce = wp_create_nonce('displayPlanning'); $co

为什么我的EasyMetable短代码总是放在所有内容之前?我怎样才能在我想要的地方显示它?我试图改变回声,打印返回,但我没有太多的编码,所以你能帮我吗

function easytimetable( $atts, $content = null ){
extract(shortcode_atts(array(
    'id' => 1
), $atts));
$id = (int)$id;
$nonce = wp_create_nonce('displayPlanning');
$content = do_shortcode($content);
require_once SYET_PATH . 'public/class-easy-timetable-public.php';
$display = Easy_Timetable_Public::syet_displayPlanning($id, $nonce, $content);
//var_dump($content);
return $display;

}
function register_easytimetable_shortcodes(){
   add_shortcode('easytimetable', 'easytimetable');
}
add_action( 'init', 'register_easytimetable_shortcodes');

要绝对确保内容已返回且未打印,请使用输出缓冲区:

function easytimetable( $atts, $content = null ){
    ob_start();
    extract(shortcode_atts(array(
        'id' => 1
    ), $atts));
    $id = (int)$id;
    $nonce = wp_create_nonce('displayPlanning');
    $content = do_shortcode($content);
    require_once SYET_PATH . 'public/class-easy-timetable-public.php';
    $display = Easy_Timetable_Public::syet_displayPlanning($id, $nonce, $content);
    echo $display; // might be unnecessary
    //var_dump($content);
    return ob_get_clean();

}
function register_easytimetable_shortcodes(){
    add_shortcode('easytimetable', 'easytimetable');
}
add_action( 'init', 'register_easytimetable_shortcodes');
将指示PHP缓冲(保存)所有输出,而不是直接将其发送到浏览器。将获取该缓冲区的内容,清理缓冲区并关闭输出缓冲。如果这实际上是负责早期输出的代码,那么这应该会解决它。
回显$display可能(可能)是不需要的,但这实际上取决于
Easy\u timeline\u Public::syet\u displayPlanning($id,$nonce,$content)
只输出内容还是返回一些内容(希望顺序正确)。

我不理解$content=do\u shortcode($content);