J'essaie d'ajouter une div au contenu d'un widget dans ma barre latérale dynamique.
Voici le code d'enregistrement;
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>',
));
Mais ce code provoque comme ça;
<div class="sidebar-box">
<div class="title">{WIDGET TITLE}</div>
{WIDGET CONTENT}
</div>
Voici ce que j'essaie de faire;
<div class="sidebar-box">
<div class="title">{WIDGET TITLE}</div>
<div class="content">
{WIDGET CONTENT}
</div>
</div>
Comment cela peut-il être fait?
theme-development
widgets
MBraiN
la source
la source
the_widget()
n'est pas utilisé dans ladynamic_sidebar()
fonction, c'est un moyen d'appeler n'importe quel widget avec les options que vous spécifiez en place. C'est un autre endroit pour filtrer, donc ma solution ne couvre pas cette éventualité. AcclamationsAjoutez le second
div
au paramètre title:la source
J'ai aimé l'idée des réponses @tosco et @sanchothefat - mais j'ai eu du mal avec cette combinaison parce que
empty( $settings[ 'title' ]
bien qu'il puisse en effet retourner vrai, le widget lui-même pourrait afficher un titre par défaut si aucun n'est défini. Ce titre est ensuite enveloppé dans lesbefore_title
etafter_title
balisage et encore les sauts de page. C'est de toute façon le cas avec certains des widgets par défaut.Plus facile de simplement s'en tenir aux paramètres d'enregistrement de widget standard;
puis ajoutez une action de filtrage selon la réponse de Marventus ici;
http://wordpress.org/support/topic/add-html-wrapper-around-widget-content
la source
Voici ce que vous faites pour y parvenir:
Quand il n'y a pas de titre, vous obtiendrez:
Quand il y a un titre, vous obtiendrez:
Pour vous assurer que le premier contenu-div vide ne s'affiche pas dans ce dernier cas, ajoutez-le à votre CSS:
la source
Après avoir regardé les réponses précédentes, je pense avoir corrigé le problème identifié par Cmorales avec la réponse de sanchothefat. Définissez votre widget comme suit:
Il est important que les paramètres par défaut
before_title
etafter_title
soient supprimés. Après quelques essais et erreurs, j'ai remarqué que le premier filtre qui montrait un titre par défaut étaitwidget_title
. Ensuite, utilisez lewidget_title
filtre comme suit:Fondamentalement,
<div class="panel-heading"><h3 class="panel-title">
c'est monbefore_title
et</h3></div>
c'est monafter_title
. Enfin, utilisezdynamic_sidebar_params
pour ajouter un div de fermeture pour notre habillage de contenu:Ce n'est pas joli, mais ça marche.
la source
Je change juste légèrement le code pour ne pas avoir besoin de toucher register_sidebar . Enregistrez une barre latérale de manière régulière:
Et ci-dessous est le code modifié de la solution de Sanchothefat:
la source
Comme mentionné dans les commentaires, certains widgets principaux ajoutent leur propre titre qui est ensuite enveloppé deux fois avec la div de contenu. Pour les supprimer, vous pouvez simplement retourner une chaîne vide. Le seul inconvénient est que vous devez saisir tous les titres manuellement.
Corrigez-moi si je manque quelque chose ici, mais je pense que c'est assez solide.
la source