Fügen Sie before_content und after_content zu register_sidebar hinzu

Gibt es eine Möglichkeit, der function before_content zwei neue functionen hinzuzufügen, before_content und after_content ? Diese würden wie before_title und after_title , außer dass es alles after_title , was nach dem Titel kommt.

Ich habe diesen Thread gefunden, der einige nützliche Informationen enthält, aber jeder erwähnte Ansatz hat Fehler.

Wenn Sie beispielsweise den erforderlichen Code in after_title und after_widget kann Code kaputt gehen, wenn kein Titel festgelegt wird. Die Lösung wäre, das öffnende div in before_widget zu duplizieren und es in before_title wieder zu before_title dann in before_title wieder zu before_title , aber das erzeugt ein leeres div, wenn ein Titel gesetzt ist.

Idealerweise würde ich das gerne machen:

 register_sidebar(array( "id" => "sidebar", "name" => "Sidebar", "before_widget" => "
", "before_title" => "
", "after_title" => "
", "before_content" => "
" "after_content" => "
"; "after_widget" => "
", ));

Was würde ausgeben als:

 

Solutions Collecting From Web of "Fügen Sie before_content und after_content zu register_sidebar hinzu"

Die Einschränkung hängt von den vorhandenen Argumenten ab und davon, wie praktisch alle Widgets Inhalte ausgeben:

 echo $args['before_widget']; if ( $title ) { echo $args['before_title'] . $title . $args['after_title']; } // Widget content echo $args['after_widget']; 

Einige Widgets bieten möglicherweise vor / nach Content-Hooks, aber wenn Sie einen “globalen” Fix haben wollen, gibt es keinen sicheren Umweg.

Die einzige Lösung, die ich sehen kann, ist, den Umbruch zweimal hinzuzufügen und CSS zu verwenden :empty , um die Reste zu verstecken:

 register_sidebar( array( 'before_widget' => '
', 'before_title' => '
', // If we have a title, close the wrap above 'after_title' => '
', // Now open another one 'after_widget' => '
', ) );

Also mit Widgets, die Titel haben, wirst du enden mit:

 
Widget Title
Widget content

Gib das oben erwähnte CSS ein:

 .box-bd:empty { display: none; } 

Dies wird den ersten redundanten Umlauf ausblenden. Ein bisschen schmutzig, ich weiß, aber es bedeutet Titel oder kein Titel, du wirst deinen Inhalt immer in .box-bd eingepackt haben.