Wordpress Как добавить класс в виджет боковой панели
вот как я регистрирую боковую панель:
register_sidebar(array(
'name' => 'First_sidebar',
'id' => 'sidebar-1',
'before_widget' => '<div class="well">',
'after_widget' => '</div>',
'before_title' => '<h4>',
'after_title' => '</h4>'
));
и это вывод HTML WordPress:
<div class="well">
<h4>title</h4>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
Я хочу добавить до <ul>
тег.
Вот так:
<div class="well">
<h4>title</h4>
<ul class="nav nav-list">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
как добавить до <ul>
?
9 ответов
простой, но не очень приятный и более Хак, использует Javascript/jQuery.
jQuery( document ).ready(function() {
jQuery('.widget > ul').addClass('nav nav-list');
});
Мне очень не нравится использовать javascript, но в этом случае он выполняет свою работу.
мне удалось сделать это так:
боковая панель.на PHP:
<!-- sidebar -->
<aside class="sidebar" role="complementary">
<div class="sidebar-widget">
<?php if(function_exists('dynamic_sidebar')) {
ob_start();
dynamic_sidebar('widget-area-1');
$sidebar = ob_get_contents();
ob_end_clean();
$sidebar_corrected_ul = str_replace("<ul>", '<ul class="menu vertical">', $sidebar);
echo $sidebar_corrected_ul;
}
?>
</div>
</aside>
<!-- /sidebar -->
я использовал буферизацию вывода для сохранения виджетов боковой панели в переменную, а затем использовал строку replace, чтобы найти все <ul>
теги и заменить их <ul>
тег с классом.
Я играл с ним, и это работает для меня.
function create_widget( $name, $id, $class, $description ) {
register_sidebar(array(
'name' => __( $name ),
'id' => $id,
'class' => $class,
'description' => __( $description ),
'before_widget' => '<div ' . 'class ='. $class . '>',
'after_widget' => '</div>',
'before_title' => '<h2>',
'after_title' => '</h2>'
));
create_widget( 'widget name', 'myID', 'myClass', 'my description' );
параметр, который вы ищете является 'class' => ''
для вас:
register_sidebar(array(
'name' => 'First_sidebar',
'id' => 'sidebar-1',
'class' => 'nav-list',
'before_widget' => '<div class="well">',
'after_widget' => '</div>',
'before_title' => '<h4>',
'after_title' => '</h4>'
));
это должно сработать.
существует собственное решение для добавления отдельных имен виджетов в качестве className с помощью sprintf к их контейнеру:
%1$s
- это идентификатор и %2$s
виджеты className
нет необходимости добавлять имя класса непосредственно в <ul>
из-за этого возможного селектора (jQuery / CSS):
.widget_nav-list > ul (.widget_nav_menu > ul)
также обратите внимание, что ответный код jQuery предназначен для всех виджетов на всех боковых панелях, даже если они не являются nav-list (что может быть хорошо, если ваш единственный используемый виджет-это nav).
before_widget-HTML для размещения перед каждым виджетом(по умолчанию:
<li id="%1$s" class="widget %2$s">
) Примечание: использует sprintf для подстановки переменных
функции.на PHP:
register_sidebar(array(
'name' => 'First_sidebar',
'id' => 'sidebar-1',
'before_widget' => '<div id="%1$s" class="well %2$s">',
'after_widget' => '</div>',
'before_title' => '<h4>',
'after_title' => '</h4>'
));
вывод для виджета навигации по умолчанию:
<div id="nav_menu-1" class="well widget_nav_menu">
<h4>title</h4>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
я публикую в этом старом потоке, потому что это был лучший результат поиска для поискового термина " register_sidebar widgetname" - поэтому я подумал, что полный ответ здесь хорош.
используйте пользовательский виджет WordPress: (нет необходимости в jQuery или любом плагине!!)
мои шаги будут проходить с виджетом категорий, и вы можете сделать то же самое для любого виджета.
- виджет регистрация (в функциях.в PHP)
add_action('widgets_init', 'register_widgets'); function register_widgets($id) { register_sidebar(array( 'name' => 'Sidebar', 'id' => 'sidebar' )); }
- зарегистрировать пользовательский виджет (в функции.в PHP)
add_action('widgets_init', 'register_custom_widget'); function register_custom_widget() { register_widget('WP_Widget_Categories_Custom'); }
копировать класс файла-wp-виджет-категории.php из /wp-includes / widgets / и поместите его рядом с файлами тем / wp-content / themes / - ваша тема - / виджеты/
-
включить этот файл в функции.в PHP
require_once('widgets/class-wp-widget-categories.php');
-
переименовать имя класса из "WP_Widget_Categories" в "WP_Widget_Categories_Custom" в " виджеты/класс-wp-виджет-категории.PHP-файл.
class WP_Widget_Categories_Custom extends WP_Widget {
-
Поиск о ul тег в " виджеты / класс-wp-виджет-категории.php " файл и редактировать его как
<ul class="nav nav-list">
вот и все ;)
Я боролся с этой проблемой, и я обнаружил, что вы можете использовать этот плагин:http://wordpress.org/plugins/wp-bootstrap-navmenu
вы можете использовать плагин, который называется widget-css-class каталог WordPress
после этого вы сможете добавить пользовательский класс css к любым виджетам, которые вам нужны.