web-dev-qa-db-ja.com

ショートコードは常に最初に表示されます。もう一度

OK、前回のショートコーデックでエコーに問題がありましたが、今はすべてうまくいきます。

しかし、私はもう一つ持っています:

function myWidget_shortcode( $atts ) {
        extract( shortcode_atts( array(
        'title' => 'My Widget',
        'value' => '5',
        ), $atts ) );

        return the_widget(myWidget,'title='.$title.'&value='.$value);
}

add_shortcode('myWidget', 'myWidget_shortcode'); 

このショートコードが常にページの先頭に表示されるのですか。エコーなどはありません、すべてのデータが返されています...

[答えが見つかりました - 編集]

これで問題は解決します。

ob_start();    
the_widget(popularPosts,'title='.$title.'&number='.$number);
return ob_get_clean();

とにかく私はなぜそれがこの場合常に最初にあるのか理解できません。 the_widgetはそれ自体が関数であり、何かをエコーするので? :>

1
Wordpressor

はい、あなたのMyWidgetクラスのwidget()メソッドを見てください。それは反響しますか?たぶんそれはそうです、それはウィジェットが通常書かれている方法です。実際、widget()メソッドに出力が反映されていないウィジェットを見て驚きました。

そしてthe_widget()を呼び出すと、あなたが要求したウィジェットのインスタンスを取得し、$widget_obj->widget($args, $instance);を呼び出します。それで、それはエコーし、そして何も返しません。

3
Dougal Campbell