如何将自定义选项从Widget表单传递到Widget更新回调?

时间:2011-07-05 作者:N2Mystic

我在默认小部件表单中添加了一些复选框选项。但我一直在研究如何访问这些选项状态,并在小部件保存事件期间传递它们(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

}

2 个回复
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>
希望有帮助!

SO网友:Gerald

我认为您正在处理相同的功能http://wordpress.org/extend/plugins/widget-context/

您可以查看它的代码结构

我希望这能给你一些想法和帮助

结束

相关推荐

Why use widgets?

我对使用WordPress很陌生,我想知道使用小部件的好处是什么?看here 这听起来像是为那些不是程序员的人准备的,他们想在他们的网站上添加插件。对吗?或者小部件是否在某种程度上使站点更加健壮?