好吧,多亏了@toscho 谁为我提供了此链接:Add class to before_widget for all widgets with a dropdown and a counter
我挺过来的。
我想做的就是将一个类“col-sm-4”从引导添加到搜索小部件中。
is_admin() || add_filter( \'dynamic_sidebar_params\', \'wpse172754_add_widget_classes\' );
/**
* Add classes for widgets.
*
* @param array $params
* @return array
*/
function wpse172754_add_widget_classes( $params ) {
if ($params[0][\'widget_name\'] == \'Search\') {
$params[0] = array_replace($params[0], array(\'before_widget\' => str_replace("widget_search", "widget_search col-sm-4", $params[0][\'before_widget\'])));
}
return $params;
}
请允许我解释一下它的作用。
首先,为了更好地理解代码,我做了一个print_r($params)
查看其中的内容,这是输出:
Array
(
[0] => Array
(
[name] => Primary
[id] => sidebar-primary
[description] =>
[class] =>
[before_widget] => <section class="widget search-2 widget_search">
[after_widget] => </section>
[before_title] => <h3>
[after_title] => </h3>
[widget_id] => search-2
[widget_name] => Search
)
[1] => Array
(
[number] => 2
)
)
Array
(
[0] => Array
(
[name] => Primary
[id] => sidebar-primary
[description] =>
[class] =>
[before_widget] => <section class="widget custom-social-media-widget-2 widget_custom-social-media-widget col-xs-offset-2 col-xs-6 col-sm-offset-4 col-sm-3 col-lg-offset-5 col-lg-2">
[after_widget] => </section>
[before_title] => <h3>
[after_title] => </h3>
[widget_id] => custom-social-media-widget-2
[widget_name] => Custom Social Media Widget
)
[1] => Array
(
[number] => 2
)
为了更好地理解输出,我还访问了
WordPress Code Reference 页面中的钩子,并查看数组实际包含的内容。接下来,我所要做的就是使用对我有利的数字和键。
首先,我知道大多数值都会存储在第一个数组中$params[0]
, 因为第二个只包含实例号,所以我应该使用该数组为了确保代码不会总是不必要地运行,我加入了一个简单的if语句来检查它是否是我想要的小部件接下来,我必须替换数组中的值,所以我使用array_replace()
.最后,我知道before_widget
值,我使用了str_replace
更改值并添加所需的类名如果有更好的方法,请让我知道,或者在将来向我更新。希望这有帮助。