web-dev-qa-db-ja.com

正しい場所にショートコードとして追加されたカスタムウィジェットを表示する

カスタムウィジェットを作成したので、それをショートコードとしてページコンテンツに追加したいと思います。

function show_custom_widget() {
    the_widget( 'WP_Custom_Plugin');
}
add_shortcode('custom-widget', 'show_custom_widget');

私は以下のように投稿内容に私のショートコードを使用しています

[custom-widget]

結果として私は自分のWidgetを取得しますが、それは私がショートコードを使用した場所ではなく常に投稿コンテンツの一番上に表示されます。ウィジェットを正しい場所に表示する方法

1
gniewleone

ショートコードからの出力は返されるべきで、エコーされません。ショートコードで出力をエコーすると、あなたが見ているように予期しない出力をするでしょう。 the_widget()は問題を引き起こしているその出力をエコーし​​ます。残念ながら、wdgetの出力を返すための同様の機能はありません。

幸い、この問題を解決するために出力バッファを利用することができます。あなたはこのようなことを試すことができます:(警告:テストされていません

function show_custom_widget() {
    ob_start(); 
    the_widget( 'YOUR CUSTOM WIDGET' ); 
    $contents = ob_get_clean(); 
    return $contents;
}
add_shortcode( 'custom-widget', 'show_custom_widget' );
1
Pieter Goosen