2017-11-10 1 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をエコーするのはおそらく必要ではないかもしれませんが、実際にはEasy_Timetable_Public::syet_displayPlanning($id, $nonce, $content)がコンテンツを出力するだけであるか、いくつかのものが返ってくるかどうかによります。

+0

ありがとうございました!それは助けになった! – Rokas

関連する問題