2017-11-10 2 views
1

내 짧은 코드가 항상 모든 내용보다 먼저 나오는 이유는 무엇입니까? 내가 원하는 곳에 그것을 어떻게 표시 할 수 있습니까? 나는 메아리에서 인쇄하려고 돌아 왔지만 인쇄를 많이하지 못해서 나를 도와 줄 수 있니?짧은 코드가 내용 위에 나타납니다.

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

이해할 수 없음 $ content = do_shortcode ($ content); – Stender

답변

2

는 내용이 인쇄 반환되지 않는다는 것을 절대적으로 확인 출력 버퍼를 사용하려면 브라우저에 보내는 대신

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

ob_start이 (저장) 버퍼 PHP를 지시 모든 출력을 직접. ob_get_clean()은 해당 버퍼의 내용을 가져오고 버퍼를 지우고 출력 버퍼링을 해제합니다. 이것이 실제로 초기 출력을 담당하는 코드 인 경우,이를 처리해야합니다. $ display를 echo하는 것은 아마도 필요하지 않을 수도 있지만 실제로는 Easy_Timetable_Public::syet_displayPlanning($id, $nonce, $content)이 내용을 출력하는지 또는 올바른 순서로 바라는 것을 반환하는지에 따라 달라집니다.

+0

감사합니다! 그것은 도왔다! – Rokas

관련 문제