我正在为小部件选项添加一个简单的选项,允许用户设置小部件显示的“上下文”。
这是我到目前为止得到的,我的问题在评论中。。。
1) 将小部件窗体附加到所有小部件。。。
add_filter(\'in_widget_form\', \'wse_widget_context_form\');
function wse_widget_context_form($widget){
//echo \'the widget id is: \'.$widget->id;
//do we need to reference the widget->id to avoid variable overwrites on multiple widgets?
?>
<div class="wse_context">
<ul>
<li>Hide this widget on: </li>
<li id=\'home\'><label><input value="on" type="checkbox" name="noHome" id="noHome"<?php if(isset($noHome)) echo $noHome ?> /> home</label></li>
<li id=\'posts\'><label><input value="on" type="checkbox" name="noPosts" id="noPosts"<?php if(isset($noPosts)) echo $noPosts ?> /> posts</label></li>
<li id=\'pages\'><label><input value="on" type="checkbox" name="noPages" id="noPages"<?php if(isset($noPages)) echo $noPages ?> /> pages</label></li>
<li id=\'cats\'><label><input value="on" type="checkbox" name="noCats" id="noCats"<?php if(isset($noCats)) echo $noCats ?> /> categories</label></li>
</ul>
</div>
2)创建一个回调函数来处理小部件的保存时间。。。(到目前为止,这是我一直坚持的部分)
<?php
add_filter(\'widget_update_callback\', \'wse_widget_context_callback\');
add_filter(\'widget_update_callback\', \'wse_widget_context_callback\');
function wse_widget_context_callback($instance, $new_instance, $old_instance){
echo \'instance: \'.$instance.\'<br/>\'; // returns array
echo \'new_instance: \'.$new_instance.\'<br/>\'; //returns \'\'
echo \'old_instance: \'.$old_instance.\'<br/>\'; //returns \'\'
}
3)根据小部件设置显示/隐藏小部件
add_filter(\'widget_display_callback\', \'wse_widget_display_callback\');
function wse_widget_display_callback()
{
//how do I read the values and unset widgets as appopriate?
}