我在默认小部件表单中添加了一些复选框选项。但我一直在研究如何访问这些选项状态,并在小部件保存事件期间传递它们(widget_update_callback
) 以便WP将其保存到DB中。
如何将自定义表单值传递给WP以另存为每个小部件的小部件选项?
在第一个函数中,我将复选框选项附加到所有小部件控制面板。。。
add_filter(\'in_widget_form\', \'wse_widget_context_form\');
function wse_widget_context_form(){
$checked = \' checked="checked"\';
?>
<div class="wse_context">
<ul>
<li>Don\'t show this widget on: </li>
<li><label><input value="on" type="checkbox" name="noHome" id="noHome"<?php if(isset($instance[\'noHome\'])) echo $checked ?> />Home Page</label></li>
<li><label><input value="on" type="checkbox" name="noPosts" id="noPosts"<?php if(isset($instance[\'noPosts\'])) echo $checked ?> /> Posts</label></li>
<li><label><input value="on" type="checkbox" name="noPages" id="noPages"<?php if(isset($instance[\'noPages\'])) echo $checked ?> /> Pages</label></li>
<li><label><input value="on" type="checkbox" name="noCats" id="noCats"<?php if(isset($instance[\'noCats\'])) echo $checked ?> /> Categories</label></li>
</ul>
</div>
回调函数如下所示。
$instance
不包含自定义表单值,仅包含默认小部件值(文本和内容)。如何将自定义选项附加到
$instance
?
<?php
add_filter(\'widget_update_callback\', \'wse_widget_context_callback\');
function wse_widget_context_callback($instance){
echo \'instance: \'.$instance.\'<br/>\'; // returns array but no custom form values
}
SO网友:Hosh Sadiq
不确定您是否仍在努力解决此问题,但对于任何人来说,以下是解决方案:
将以下参数添加到wse_widget_context_form()
: $widget
, $return
和$instance
然后使用以下命令获取字段ID和字段名称:<?php echo $widget->get_field_id(\'field_name\'); ?>
和<?php echo $widget->get_field_name(\'field_name\'); ?>
分别地e、 g。
<li><label><input value="on" type="checkbox" name="<?php echo $widget->get_field_name(\'noHome\'); ?>" id="<?php echo $widget->get_field_id(\'noHome\'); ?>"<?php if(isset($instance[\'noHome\'])) echo $checked ?> />Home Page</label></li>
希望有帮助!