Я пытаюсь добавить div к содержимому виджета в моей динамической боковой панели.
Вот код регистрации;
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>',
));
Но этот код вызывает вот так;
<div class="sidebar-box">
<div class="title">{WIDGET TITLE}</div>
{WIDGET CONTENT}
</div>
Вот что я пытаюсь сделать;
<div class="sidebar-box">
<div class="title">{WIDGET TITLE}</div>
<div class="content">
{WIDGET CONTENT}
</div>
</div>
Как это можно сделать?
theme-development
widgets
MBraiN
источник
источник
the_widget()
не используется вdynamic_sidebar()
функции, это средство вызова любого виджета с опциями, которые вы указали на месте. Это еще одно место для фильтрации, поэтому мое решение не охватывает эту возможность. ПриветствияДобавьте второй
div
к параметру title:источник
Мне понравилась идея ответов @tosco и @sanchothefat - однако я боролся с этой комбинацией, потому что, хотя
empty( $settings[ 'title' ]
действительно мог бы возвращать true, сам виджет мог бы выводить заголовок по умолчанию, если ни один не установлен. Это название затем завернутые вbefore_title
иafter_title
разметке и снова разрывах страниц. Так или иначе, с некоторыми виджетами по умолчанию.Проще просто придерживаться стандартных параметров регистрации виджетов;
и затем добавьте действие фильтра согласно ответу Marventus здесь;
http://wordpress.org/support/topic/add-html-wrapper-around-widget-content
источник
Вот что вы делаете для достижения этой цели:
Когда нет названия, вы получите:
Когда есть название, вы получите:
Чтобы убедиться, что первый пустой content-div не отображается в последнем случае, вы добавляете это в свой css:
источник
Посмотрев на предыдущие ответы, я думаю, что решил проблему, с которой Cmorales идентифицировал ответ sanchothefat. Определите ваш виджет следующим образом:
Важно, чтобы
before_title
иafter_title
значения по умолчанию были удалены. После некоторых проб и ошибок я заметил, что первый фильтр, который показывал заголовок по умолчанию, былwidget_title
. Затем используйтеwidget_title
фильтр так:В основном,
<div class="panel-heading"><h3 class="panel-title">
это мойbefore_title
и</h3></div>
мойafter_title
. И наконец, используйте,dynamic_sidebar_params
чтобы добавить закрывающий div для нашего переноса контента:Это не красиво, но это работает.
источник
Я просто немного изменил код, чтобы не трогать register_sidebar . Зарегистрировать боковую панель обычным способом:
И ниже приведен модифицированный код из решения Sanchothefat:
источник
Как упоминалось в комментариях, некоторые основные виджеты добавляют свой собственный заголовок, который затем дважды оборачивается содержимым div. Чтобы удалить их, вы можете просто вернуть пустую строку. Единственным недостатком является то, что вы должны ввести все названия вручную.
Поправьте меня, если я что-то здесь упускаю, но я думаю, что это довольно солидно.
источник