Próbuję dodać div do zawartości widżetu na moim dynamicznym pasku bocznym.
Oto kod rejestru;
register_sidebar(array(
'name' => "Sidebar1",
'id' => 'home-sidebar-1',
'before_widget' => '<div class="sidebar-box">',
'after_widget' => '</div>',
'before_title' => '<div class="title">',
'after_title' => '</div>',
));
Ale ten kod powoduje tak;
<div class="sidebar-box">
<div class="title">{WIDGET TITLE}</div>
{WIDGET CONTENT}
</div>
Oto, co próbuję zrobić;
<div class="sidebar-box">
<div class="title">{WIDGET TITLE}</div>
<div class="content">
{WIDGET CONTENT}
</div>
</div>
Jak można to zrobić?
theme-development
widgets
MBraiN
źródło
źródło
the_widget()
nie jest używany wdynamic_sidebar()
funkcji, jest to sposób na wywołanie dowolnego widżetu z opcjami określonymi w miejscu. Jest to jednak inne miejsce do filtrowania, więc moje rozwiązanie nie obejmuje takiej ewentualności. PozdrawiamDodaj drugi
div
do parametru tytułu:źródło
Podobał mi się pomysł zarówno na @tosco, jak i @sanchothefat - jednak zmagałem się z tą kombinacją, ponieważ chociaż
empty( $settings[ 'title' ]
rzeczywiście może zwrócić wartość true, sam widget może wyświetlać domyślny tytuł, jeśli nie zostanie ustawiony. Tytuł ten jest następnie owinięte wbefore_title
iafter_title
znaczników i ponownie przerwach stronie. Tak jest w przypadku niektórych domyślnych widżetów.Łatwiej jest trzymać się standardowych parametrów rejestracji widżetów;
a następnie dodaj akcję filtrującą zgodnie z odpowiedzią Marventusa tutaj;
http://wordpress.org/support/topic/add-html-wrapper-around-widget-content
źródło
Oto, co możesz zrobić, aby to osiągnąć:
Jeśli nie ma tytułu, otrzymasz:
Gdy pojawi się tytuł, otrzymasz:
Aby upewnić się, że pierwszy pusty div treści nie wyświetla się w drugim przypadku, dodaj to do swojego css:
źródło
Po zapoznaniu się z poprzednimi odpowiedziami wydaje mi się, że rozwiązałem problem identyfikowany przez Cmoralesa z odpowiedzią sanchothefat. Zdefiniuj widget w następujący sposób:
Ważne jest, aby usunąć wartości domyślne
before_title
iafter_title
. Po kilku próbach i błędach zauważyłem, że pierwszym filtrem, który pokazywał domyślny tytuł, byłwidget_title
. Następnie użyjwidget_title
filtra w następujący sposób:Zasadniczo
<div class="panel-heading"><h3 class="panel-title">
jest mójbefore_title
i</h3></div>
jest mójafter_title
. Na koniec użyj,dynamic_sidebar_params
aby wstawić zamykający div dla naszego zawijania zawartości:To nie jest ładne, ale działa.
źródło
Po prostu nieznacznie zmieniam kod, aby nie trzeba było dotykać register_sidebar . Zarejestruj pasek boczny w zwykły sposób:
Poniżej znajduje się zmodyfikowany kod z rozwiązania Sanchothefat:
źródło
Jak wspomniano w komentarzach, niektóre podstawowe widżety dodają własny tytuł, który następnie jest dwukrotnie pakowany w div treści. Aby je usunąć, możesz po prostu zwrócić pusty ciąg. Jedynym minusem jest to, że musisz ręcznie wprowadzić wszystkie tytuły.
Popraw mnie, jeśli coś mi brakuje, ale myślę, że to dość solidne.
źródło