Estou tentando adicionar uma div ao conteúdo de um widget na minha barra lateral dinâmica.
Aqui está o código de registro;
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>',
));
Mas esse código causa assim;
<div class="sidebar-box">
<div class="title">{WIDGET TITLE}</div>
{WIDGET CONTENT}
</div>
Aqui está o que estou tentando fazer;
<div class="sidebar-box">
<div class="title">{WIDGET TITLE}</div>
<div class="content">
{WIDGET CONTENT}
</div>
</div>
Como pode ser feito?
theme-development
widgets
MBraiN
fonte
fonte
the_widget()
não é usado nadynamic_sidebar()
função, é um meio de chamar qualquer widget com as opções especificadas no local. É outro lugar para filtrar, portanto, minha solução não cobre essa eventualidade. CheersAdicione o segundo
div
ao parâmetro title:fonte
Gostei da ideia das respostas @tosco e @sanchothefat - no entanto, lutei com essa combinação porque, embora
empty( $settings[ 'title' ]
possa realmente retornar verdadeiro, o widget em si pode gerar um título padrão se nenhum estiver definido. Este título é então envolto nosbefore_title
eafter_title
de marcação e, novamente, as quebras de página. Esse é o caso de alguns dos widgets padrão de qualquer maneira.Mais fácil de seguir os parâmetros de registro padrão do widget;
e adicione uma ação de filtro conforme a resposta de Marventus aqui;
http://wordpress.org/support/topic/add-html-wrapper-around-widget-content
fonte
Aqui está o que você faz para conseguir isso:
Quando não houver título, você receberá:
Quando houver um título, você receberá:
Para garantir que o primeiro content-div vazio não seja exibido no último caso, adicione-o ao seu css:
fonte
Depois de analisar as respostas anteriores, acho que resolvi o problema que Cmorales identificou com a resposta de sanchothefat. Defina seu widget da seguinte maneira:
É importante que os padrões
before_title
eafter_title
sejam removidos. Após algumas tentativas e erros, observei que o primeiro filtro que mostrava um título padrão erawidget_title
. Em seguida, use owidget_title
filtro da seguinte maneira:Basicamente,
<div class="panel-heading"><h3 class="panel-title">
é meubefore_title
e</h3></div>
é meuafter_title
. Por fim, usedynamic_sidebar_params
para acrescentar uma div de fechamento ao nosso pacote de conteúdo:Não é bonito, mas funciona.
fonte
Eu apenas altero levemente o código para não precisar tocar em register_sidebar . Registre uma barra lateral de maneira regular:
Abaixo está o código modificado da solução da Sanchothefat:
fonte
Como mencionado nos comentários, alguns widgets principais adicionam seu próprio título, que são agrupados duas vezes com a div de conteúdo. Para removê-los, você pode simplesmente retornar uma string vazia. A única desvantagem é que você deve inserir todos os títulos manualmente.
Corrija-me se estiver faltando alguma coisa aqui, mas acho que é bastante sólido.
fonte