我遇到了一个问题,试图使用侧栏参数(before\\u widget、after widget、after\\u widget、before\\u widget)作为wp\\u list\\u bookmarks函数的主题风格友好参数,也就是说wp\\u list\\u bookmarks输出看起来就像wp\\u widget\\u链接中的一个。
我几乎一字不差地复制了links小部件的代码,但当尝试重用仅有的一个侧栏参数(通过全局$wp\\u registered\\u侧栏)时,我得到了一些用于小部件容器的css类,这些类不会使用wp\\u小部件\\u链接显示。
例如,边栏args的以下转储:
\'name\' => \'Sidebar 1\'
\'id\' => \'sidebar-1\'
\'before_widget\' => \'<li id="%1$s" class="widget %2$s">\'
\'after_widget\' => \'</li>\'
\'before_title\' => \'<h2 class="widgettitle">\'
\'after_title\' => \'</h2>\'
通过阅读wp代码,我认为可以安全地更改%1$s、%2$s的%id、%class resp,然后一旦wp_列表_书签被执行,我应该以before_小部件结束
<li id="linkcat-" class="widget linkcat">
.但是在与links小部件的输出进行比较之后,小部件css类名丢失了,并且我的代码的输出在页面中看起来有点奇怪。
这是我使用该函数的代码,该函数被称为提要栏\\u小部件的过滤器:
function my_sidebars_widgets($sidebar_widgets) {
global $wpdb, $wp_registered_sidebars;
static $hits;
if(++$hits == 2) {
$sidebar = array_values($wp_registered_sidebars);
$before_title = $sidebar[0][\'before_title\'];
$after_title = $sidebar[0][\'after_title\'];
$before_widget = $sidebar[0][\'before_widget\'];
$after_widget = $sidebar[0][\'after_widget\'];
$before_widget = str_replace(\'%2$s\',\'%class\',$before_widget);
$before_widget = str_replace(\'%1$s\',\'%id\',$before_widget);
wp_list_bookmarks(apply_filters(\'widget_links_args\',array(
\'title_before\' => $before_title, \'title_after\' => $after_title,
\'category_before\' => $before_widget, \'category_after\' => $after_widget,
\'hide_invisible\' => true,\'title_li\' => \'Links\',
\'categorize\' => 0,\'inquiry\' => true
)));
}
return $sidebar_widgets;
}
你知道我在这里遗漏了什么吗?我一直试图弄清楚WP-feed小部件是如何工作的,但到目前为止,在阅读代码时没有解释。
提前感谢您的任何考虑。
最合适的回答,由SO网友:Horacio Nuñez 整理而成
几分钟后var_dumps
我知道这一点:
1) 当wp\\u list\\u bookmarks被称为whithin wp\\u Widget\\u Links->widgethe时\'class\'
参数被忽略,因为\'category_before\'
参数没有%class
通配符。相反\'category_before\'
看起来像是“班级”在哪里\'widget_links\'
.
这就是函数dynamic\\u侧栏在小部件被调用后如何为小部件设置$before\\u小部件参数的方法。
当然,这可以通过以下过滤器进行更改\'widget_links_args\'
或\'dynamic_sidebar_params\'
.
2) 在许多主题上,为了显示默认小部件,会调用wp\\u list\\u书签,但参数为零,然后使用书签模板中定义的默认值。php:
(\'class\' => \'linkcat\',\'category_before\' => \'<li id="%id" class="%class">\')
即使使用以下方法注册侧栏,也会发生这种情况:
(\'before_widget\' => \'<li id="%1$s" class="widget %2$s">\')
因为WP\\U Widget\\u链接
\'category_before\'
参数最初是从侧栏借用的
\'before_widget\'
参数