it-swarm.com.de

register_sidebar 'after_widget' auf benutzerdefinierten Widgets, die nicht implementiert wurden, verursachten verschachtelte Widgets

Bei der Registrierung meiner Seitenleiste möchte ich, dass jedes Widget in <aside> eingeschlossen wird. Dies funktioniert gut, wenn Sie die eingebauten Widgets wie Kalender oder Suche verwenden. Wenn ich jedoch selbst erstellte Widgets hinzufüge, wird das geschlossen <aside> wird nicht ausgegeben. Daher erhalte ich eine Struktur ähnlich der folgenden:

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

Wann sollte es aussehen:

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

Der Code für meine benutzerdefinierten Widgets enthält sowohl echo $args['before_widget'] als auch echo $args['after_widget']. Ich gehe davon aus, dass er verwendet wird, um den in register_sidebar() deklarierten 'before_widget'- und' after_widget'-Code auszugeben.

Warum werden meine benutzerdefinierten Widgets nicht ordnungsgemäß geschlossen, die integrierten jedoch? Was vermisse ich? Abgesehen von der Struktur funktionieren die benutzerdefinierten Widgets ordnungsgemäß.

2
tommyf

Es stellte sich heraus, dass ich die widget($args) innerhalb des Widgets überschrieben hatte, daher wurde der before_widget wiedergegeben, aber nicht der after_widget.

Ich habe die Variable widget($args) und alle Verweise darauf umbenannt, und dann haben die Plugins wie erwartet funktioniert.

2
tommyf