web-dev-qa-db-ja.com

カスタムビルドされたウィジェットのregister_sidebar 'after_widget'が実装されていない、ネストされたウィジェットが発生する

サイドバーを登録する際には、各ウィジェットを<aside>で囲む必要があります。 カレンダー検索のような作り付けのウィジェットを使うとき、これはうまく働きます、しかし、私が自分で作成したウィジェットを追加するとき、終わりに<aside>は出力されていません。したがって、私は次のような構造になっています。

<widgets-area>
    <custom-widget>
        <custom-widget>
        </custom-widget>
    </custom-widget>
</widgets-area>

次のようになっているはずです。

<widgets-area>
    <custom-widget>
    </custom-widget>
    <custom-widget>
    </custom-widget>
</widgets-area>

register_sidebar

register_sidebar( array(
    'name'          => __( 'Sidebar', 'mysite' ),
    'id'            => 'sidebar-1',
    'before_widget' => '<aside id="%1$s" class="widgets__widget widgets__widget--%2$s">',
    'after_widget'  => '</aside>',
    'before_title'  => '<h1 class="widgets__widget__title">',
    'after_title'   => '</h1>',
) );

私のカスタムウィジェットのコードにはecho $args['before_widget']echo $args['after_widget']の両方が含まれています。これらはregister_sidebar()で宣言された 'before_widget'および 'after_widget'コードをエコーアウトするために使用されると思います。

カスタムウィジェットが正しく閉じられませんが、組み込みのウ​​ィジェットが閉じられないのはなぜですか。何が足りないの?構造以外は、カスタムウィジェットは正しく機能しています。

2
tommyf

ウィジェット内のwidget($args)を上書きしたので、before_widgetはエコーされますがafter_widgetはエコーされません。

私はwidget($args)変数とそれへのすべての参照の名前を変更し、それからプラグインは期待通りに機能しました。

2
tommyf