选项1:使用已经提供的CSS类:
每个小部件都已经提供了唯一的
id
和
class
在CSS规则中使用。因此,对于大多数样式需求,最好使用这些来生成只适用于该小部件的特定CSS规则(例如搜索)。例如,默认的搜索小部件将具有CSS类
widget_search
. 您可以使用它来设置搜索小部件与其他小部件不同的样式。例如:
.widget {
background-color: wheat;
}
.widget.widget_search {
background-color: gold;
}
选项2:使用
dynamic_sidebar_params
过滤器:因为您正在将小部件注册到
register_sidebar()
函数,很可能您已将其用于
dynamic_sidebar()
模板中的函数。在这种情况下,您可以使用
dynamic_sidebar_params
过滤钩子以仅向特定小部件插入额外的CSS类。
在主题中使用以下代码functions.php
文件(代码中有其他说明):
add_filter( \'dynamic_sidebar_params\', \'wpse258279_filter_widget\' );
function wpse258279_filter_widget( $params ) {
// avoiding admin panel
if( ! is_admin() ) {
if ( is_array( $params ) && is_array( $params[0] ) && $params[0][\'widget_name\'] === \'Search\' ) {
// Insert your custom CSS class (one or more) in the following array
$classes = array( \'custom-css-class-for-search\' );
// The following three lines will add $classes
// (along with the existing CSS classes) using regular expression
// don\'t touch it if you don\'t know RegEx
$pattern = \'/class\\s*=\\s*(["\\\'])(?:\\s*((?!\\1).*?)\\s*)?\\1/i\';
$replace = \'class=$1$2 \' . implode( \' \', $classes ) . \'$1\';
$params[0][\'before_widget\'] = preg_replace( $pattern, $replace, $params[0][\'before_widget\'], 1 );
}
}
return $params;
}
使用上述代码,您可以在此行中添加一个或多个CSS类:
$classes = array( \'custom-css-class-for-search\' );
. 因此,如果要为搜索小部件添加两个CSS类,它将如下所示:
$classes = array( \'custom-css-class-for-search\', \'another-class\' );
选项3:自定义小部件:如果您需要比上述方法所能处理的更多的控制,那么您可以实现用于搜索的自定义小部件
like shown in this answer.
但是,如果您希望多个小部件具有相同的行为,则可能很难维护自定义小部件。因为这样你也必须实现这个小部件(只针对额外的CSS类)!如果这不是您的问题,那么您可以遵循该路径,就像使用自定义小部件一样,您可以更好地控制标记和功能。