Intereting Posts
Использовать get_option с $ emailTo на странице контактов Имя настраиваемого типа сообщения, вызывающее проблему Удаление действия из wp_footer, вызванного в классе, который находится внутри более крупного класса Вставить ссылки на страницы – wp_link_pages () – перед фильтрами на сообщениях Добавление дополнительных полей в форму регистрации переднего конца По умолчанию публикуется только на языке Бронирование Woocommerce Изменение цены Программно Перезаписать textdomain плагинов по умолчанию – Lost Translation Без регистрации пользователя на внутренней странице отключается wordpress Предложить плагин для mp3-плеера для веб-сайта группы? Кнопка TinyMCE для вставки нескольких строк текста? Специальные символы, отображаемые в резервном шрифте Как автоматизировать несколько циклов категорий? Использование www. префикс в структуре подкаталогов wordpress multisite Как добавить код в HTTP-заголовок

Исключение отдельных виджетов из класса боковой панели по умолчанию

У меня есть две боковые панели, использующие функцию register_sidebars которая отображает каждый виджет как элемент списка с классом .box :

 <?php if(function_exists('register_sidebars')){ register_sidebars(2, array( 'name'=>'sidebar%d', 'id' =>'sidebar', 'before_widget'=>'<li class="box">', 'after_widget'=>'</li><!--box--><!--aside-->', 'before_title'=>'<h2>', 'after_title'=>'</h2>', )); } ?> в <?php if(function_exists('register_sidebars')){ register_sidebars(2, array( 'name'=>'sidebar%d', 'id' =>'sidebar', 'before_widget'=>'<li class="box">', 'after_widget'=>'</li><!--box--><!--aside-->', 'before_title'=>'<h2>', 'after_title'=>'</h2>', )); } ?> 

Таким образом, выход выглядит примерно так:

 <div class="side"> <ul> <li class="box"> <div class="textwidget">Lorem ipsum</div> </li><!--box--><!--aside--> <li class="box"> <h2>Blogroll</h2> <ul class="xoxo blogroll"> <li><a href="http://example.com">Example</a></li> </ul> </li><!--box--><!--aside--> </ul> </div> в <div class="side"> <ul> <li class="box"> <div class="textwidget">Lorem ipsum</div> </li><!--box--><!--aside--> <li class="box"> <h2>Blogroll</h2> <ul class="xoxo blogroll"> <li><a href="http://example.com">Example</a></li> </ul> </li><!--box--><!--aside--> </ul> </div> в <div class="side"> <ul> <li class="box"> <div class="textwidget">Lorem ipsum</div> </li><!--box--><!--aside--> <li class="box"> <h2>Blogroll</h2> <ul class="xoxo blogroll"> <li><a href="http://example.com">Example</a></li> </ul> </li><!--box--><!--aside--> </ul> </div> 

Мне нужна условная функция, так что любой виджет Links (или один с классом .xoxo ) в боковых .xoxo не получит класс .box потому что я хочу .box эти и только те, что по-разному, и таким образом, чтобы я может просто изменить определенные стили изнутри .box . Основная проблема заключается в том, что я не знаю, какую функцию или переменные нужно настроить с помощью фильтра. Кодекс не делает хорошую работу по классификации менее используемых глобальных переменных, и я не вижу ничего в ссылке на фильтр, которая выглядит так, как будто это должно помочь.

Я закодировал свой собственный ответ, используя фильтр и dynamic_sidebar_params :

 <?php add_filter('dynamic_sidebar_params','io_blogroll_class'); function io_blogroll_class($params){ $params[0]['before_widget'] = '<li class="'.$params[0]['widget_name'].' box">'; $params[0]['after_widget'] = '</li><!--'.$params[0]['widget_name'].'-->'; if ($params[0]['widget_name'] == "Links"){ $params[0]['before_widget'] = '<li class="'.$params[0]['widget_name'].'">'; $params[0]['after_widget'] = '</li><!--'.$params[0]['widget_name'].'-->'; } return $params; } ?> 

Первые строки фактически переопределяют все, что вы запрограммировали register_sidebar() или register_sidebars() для размещения до и после виджета. Таким образом, вы можете спокойно оставить этот пробел в register_sidebar() если вы используете этот код. Первые строки функции делают имя виджета (следовательно, тип) классом элемента списка и предоставляют класс по умолчанию для .box для всех виджетов. Оператор if основном говорит: «Если у какого-либо из виджетов есть класс .Links (который они будут, если они являются blogroll или linklist), измените теги элемента списка XHTML до и после этих виджетов, чтобы использовать их имя виджетов как своего единственного класса «.

Надеюсь, этот код поможет нескольким людям, которые смотрят на тот же вопрос.

Вы можете попробовать это с помощью jQuery.

 jQuery('.xoxo').parent().removeClass('box');