SO网友:J.D.
您需要使用wp_get_sidebars_widgets(), 然后检查当前小部件是否位于\'footer\'
侧栏:
$sidebars = wp_get_sidebars_widgets();
if ( in_array( $widget->id, $sidebars[\'footer\'] ) ) {
/* Display form fields here */
}
更新:对此有一个警告,您已经发现了。在将新小部件分配给侧栏之前,将输出小部件表单,并且在保存小部件设置之前不会重新加载小部件表单。如果希望所有设置立即可用,则必须使用CSS或JavaScript解决此问题。我认为CSS将是最好的方式,如果你的页脚侧边栏总是有相同的数字ID(如果侧边栏的数量不是动态的,这应该是真的-虽然人们可以添加额外的自定义侧边栏,我想)。
基本上,如果小部件没有连接到任何侧栏,则输出表单输入,并使用CSS将其隐藏,除非将其移动到正确的侧栏。
您可以这样执行检查:
if ( \'__i__\' == $widget->number ) {
/* This widget isn\'t hooked to a sidebar yet. */
}
因此,您的完整支票如下所示:
$sidebars = wp_get_sidebars_widgets();
if ( \'__i__\' == $widget->number || in_array( $widget->id, $sidebars[\'footer\'] ) ) {
/* Display form fields here */
}
CSS示例,假设页脚侧边栏始终为数字3:
<style type="text/css">
.show-if-sidebar-3 {
display: none;
}
#sidebar-3 .show-if-sidebar-3 {
display: block;
}
</style>
例如,您可以将这些样式添加到管理样式表中,然后添加
show-if-sidebar-3
类设置为段落标记,将额外字段封装在该标记中,如下所示:
<p class="show-if-sidebar-3">
我真的想不出其他替代方法,除非您想尝试使用JavaScript来检测何时将这种特定类型的小部件添加到特定的侧栏中,并立即重新加载表单。但这要复杂得多。