9年后,在一场大流行中,我找到了使用@mrwweb过滤器的方法,并用Wordpress小部件创建了一个运行良好的引导程序(4)崩溃:
因为dynamic_sidebar_params
确实包含唯一的参数(例如ID),您可以使用它向创建的每个小部件添加自定义折叠ID。请参见:https://developer.wordpress.org/reference/hooks/dynamic_sidebar_params/
工作示例:
add_filter(\'dynamic_sidebar_params\', function($params) {
$params[0][\'after_title\'] = sprintf( $params[0][\'after_title\'], $params[0][\'widget_id\'] );
$params[0][\'before_title\'] = sprintf( $params[0][\'before_title\'], $params[0][\'widget_id\'] );
return $params;
}, 10, 1);
现在我添加了
$params[0][\'widget_id\']
像
%1$s
但您可以轻松创建更多。阅读有关如何操作的文档
sprintf
工程:
https://www.php.net/manual/en/function.sprintf.php因此,使用这些设置创建侧栏将使其中的每个小部件都可折叠。
$config = [
\'before_widget\' => \'<section class="widget mb-4 %1$s %2$s">\',
\'after_widget\' => \'</div></section>\',
\'before_title\' => \'<a data-toggle="collapse" href="#%1$s" role="button" aria-expanded="false" aria-controls="%1$s"><h5>\',
\'after_title\' => \'</h5></a><div id="%1$s" class="collapse">\'
];
register_sidebar([
\'name\' => __(\'Footer col 1\', \'textdomain\'),
\'id\' => \'footer-col-1\'
] + $config);
请注意,我将标题
<a>
和
<h5>
另外,我通过在
after_title
然后在
after_widget
. 这样,标题将起到折叠切换的作用。
如果要使用过滤器而不是创建自己的侧栏,可以按如下方式过滤小部件参数(对于此SO问题):
add_filter(\'collapsible-widget-area-args\', function($args) {
$args[\'after_title\'] = \'</h5></a><div id="%1$s" class="collapse">\';
// here the other args for before_title, after_widget eq.
return $args;
}, 10, 1);