Ich versuche, dem Inhalt eines Widgets in meiner dynamischen Seitenleiste ein Div hinzuzufügen.
Hier ist der Registercode;
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>',
));
Aber dieser Code verursacht so;
<div class="sidebar-box">
<div class="title">{WIDGET TITLE}</div>
{WIDGET CONTENT}
</div>
Folgendes versuche ich zu tun;
<div class="sidebar-box">
<div class="title">{WIDGET TITLE}</div>
<div class="content">
{WIDGET CONTENT}
</div>
</div>
Wie geht das?
theme-development
widgets
MBraiN
quelle
quelle
the_widget()
wird in derdynamic_sidebar()
Funktion nicht verwendet , sondern dient zum Aufrufen eines Widgets mit den von Ihnen angegebenen Optionen. Es ist jedoch ein weiterer Ort zum Filtern, sodass meine Lösung diese Eventualität nicht abdeckt. ProstFügen Sie die zweite
div
zum Titelparameter hinzu:quelle
Ich mochte die Idee, sowohl @tosco- als auch @sanchothefat-Antworten zu finden - ich habe jedoch mit dieser Kombination zu kämpfen, da
empty( $settings[ 'title' ]
das Widget selbst möglicherweise einen Standardtitel ausgibt, wenn keiner festgelegt ist. Dieser Titel wird dann in der eingewickeltbefore_title
undafter_title
Markup und wieder die Seitenumbrüche. Dies ist ohnehin bei einigen Standard-Widgets der Fall.Es ist einfacher, sich nur an die Standardregistrierungsparameter für Widgets zu halten.
und fügen Sie dann eine Filteraktion gemäß der Antwort von Marventus hier hinzu.
http://wordpress.org/support/topic/add-html-wrapper-around-widget-content
quelle
Folgendes tun Sie, um dies zu erreichen:
Wenn es keinen Titel gibt, erhalten Sie:
Wenn es einen Titel gibt, erhalten Sie:
Um sicherzustellen, dass das erste leere Inhalts-Div im letzteren Fall nicht angezeigt wird, fügen Sie dies Ihrem CSS hinzu:
quelle
Nachdem ich mir die vorherigen Antworten angesehen habe, glaube ich, dass ich das Problem behoben habe, das Cmorales mit der Antwort von sanchothefat identifiziert hat. Definieren Sie Ihr Widget wie folgt:
Es ist wichtig, dass die Standardeinstellungen
before_title
undafter_title
entfernt werden. Nach einigem Ausprobieren stellte ich fest, dass der erste Filter, der einen Standardtitel zeigte, warwidget_title
. Verwenden Sie dann denwidget_title
Filter wie folgt:Grundsätzlich
<div class="panel-heading"><h3 class="panel-title">
ist meinbefore_title
und</h3></div>
ist meinafter_title
. Verwenden Siedynamic_sidebar_params
zum Schluss ein abschließendes Div für unseren Inhaltsumbruch:Es ist nicht schön, aber es funktioniert.
quelle
Ich ändere den Code nur leicht, damit ich register_sidebar nicht berühren muss . Registrieren Sie regelmäßig eine Seitenleiste:
Und unten ist modifizierter Code aus Sanchothefats Lösung:
quelle
Wie in den Kommentaren erwähnt, fügen einige Kern-Widgets ihren eigenen Titel hinzu, der dann zweimal mit dem Inhalts-Div umbrochen wird. Um sie zu entfernen, können Sie einfach eine leere Zeichenfolge zurückgeben. Der einzige Nachteil ist, dass Sie alle Titel manuell eingeben müssen.
Korrigieren Sie mich, wenn ich hier etwas vermisse, aber ich denke, das ist ziemlich solide.
quelle