更改某些小部件的$BEFORE_WIDGET

时间:2011-12-19 作者:iJamesPine

因此,我正在设计一个Wordpress主题,其中包含许多额外的小部件。我添加的是单独的文件,并在函数中调用。php我在widget本身上有很多css,div类在$before\\u widget和$after\\u widget等函数中。php。我的问题是,对于某些小部件,我不想要相同的CSS,例如没有背景或边框。我似乎不知道该怎么办。如果这有道理的话。提前感谢!

2 个回复
最合适的回答,由SO网友:Jeremy Jared 整理而成

有两种方法允许在每个小部件上使用单独的样式。第一个是向小部件添加单独的类,如下所示:

第一种方法

register_sidebar(array(\'name\'=>\'sidebar1\',
 \'before_widget\' => \'<ul class="black-bg"><li>\',
 \'after_widget\' => "</li></ul>",
 \'before_title\' => \'<h2 class="widgettitle">\',
 \'after_title\' => "</h2>"
  ));
然后可以使用。返回bg类以设置小部件的样式,如下所示:

#sidebar .black-bg {
background:black;
}
没有边界:

register_sidebar(array(\'name\'=>\'sidebar2\',
 \'before_widget\' => \'<ul class="no-border"><li>\',
 \'after_widget\' => "</li></ul>",
 \'before_title\' => \'<h2 class="widgettitle">\',
 \'after_title\' => "</h2>"
  ));
例如,css是:

#sidebar .no-border {
border:none;
}
第二种方法也可以使用主题文件,在其中调用侧栏/小部件。为此,您只需使用相同的前后小部件,但使用类或id在模板文件中包装提要栏,如下所示:

register_sidebar(array(\'name\'=>\'sidebar1\',
 \'before_widget\' => \'<ul><li>\',
 \'after_widget\' => "</li></ul>",
 \'before_title\' => \'<h2 class="widgettitle">\',
 \'after_title\' => "</h2>"
  ));
register_sidebar(array(\'name\'=>\'sidebar2\',
 \'before_widget\' => \'<ul><li>\',
 \'after_widget\' => "</li></ul>",
 \'before_title\' => \'<h2 class="widgettitle">\',
 \'after_title\' => "</h2>"
  ));
然后在任何文件中。php您可以这样做:

  <div class="black-bg">
    <?php if ( function_exists ( dynamic_sidebar(1) ) ) : ?>
    <?php dynamic_sidebar (1); ?>
    <?php endif; ?>
  </div>
样式:

.black-bg {
background:black;
}
还有。。。

  <div class="no-border">
    <?php if ( function_exists ( dynamic_sidebar(2) ) ) : ?>
    <?php dynamic_sidebar (2); ?>
    <?php endif; ?>
  </div>


.no-border {
border:none;
}
回复评论:我以为你指的是侧边栏。大多数人将自定义侧栏称为“小部件”,所以让我再试一次。

我不完全了解您想要什么,但您注册的每个自定义小部件都有自己的类。如果这个小部件被多次使用,那么对我来说,使用它将被放置的“位置”来处理样式(这将是它所在的dynamic\\u侧栏)似乎是有意义的。

如果您正在讨论如何将单独的样式添加到一个在给定侧栏中多次放置的小部件中,那么我只需使用css伪选择器(奇数/偶数)。例如:

/*EVEN*/
#sidebar .black-bg:nth-child(even) {
background:transparent;
border:none;
}

/*ODD*/
#sidebar .black-bg:nth-child(odd) {
background: black;
border:1px dotted silver;
}

SO网友:Brooke.

就是这样$before_widget 都是关于。你会的array(\'before_widget\' => \'<span class="some-class".\',after_widget\' => \'</span>) 然后是样式.some-class 去你想要的任何地方。您可以有多个类,甚至可以根据widgets ID设置样式。如果这不是您要问的问题,请澄清问题。

结束

相关推荐

Wordpress Child Themes

我试图在wordpress子主题中重新声明父主题已经在使用的函数。但是,在尝试执行此操作时,我收到一条“致命错误:无法重新声明”消息。此外,我尝试使用以下方法,但没有成功:if (!function_exists(\'jr_load_scripts\')) { // do fancy things here... } 这是the link 如果您想快速查看。。。EDIT: 以下是完整代码:if (!function_exists(\'jr_load_scripts\')) {