选项API-验证回调$INPUT为空

时间:2018-06-21 作者:Rick Hellewell

问题是我的插件的验证回调函数的$输入值为NULL。

我的理解是,验证回调将使用$input参数,该参数包含POST字段。但是,当我测试验证回调时,$输入参数为NULL,即使检查了设置。

请注意,设置页面只有复选框;没有其他输入字段类型。

我的register\\u设置如下:;它绑定到admin\\u init挂钩。

register_setting( 
   \'pluginPage\',    // option group name
    \'Settings Name\',    // option name (used to store into wp-options
    array(\'sanitize_callback\' => \'sanitize_callback\' // sanitize the data function\')
    );
和sanitize\\u数据回调:

 function sanitize_callback($input)
    { $new_input = array();
  // ... some checking here, setting $new_input array values if $input array value exists
  return $new_input;}
因为$input为NULL,我已经用print_r($input);exit;sanitize_callback() 功能时,这些选项不会保存在wp options中。

保存选项的唯一方法是在sanitize\\u回调函数中使用$\\u POST变量。这将正确存储选项。

那么,为什么sanitize_callback 提交表单时,函数是否未接收$\\u POST变量?

请注意,我已经按照设置API中的说明进行了操作;我已经根据这些说明验证了所有代码都是正确的。表单显示此代码,因此nonce在表单中。

<form action=\'options.php\' method=\'post\'>
        <?php
        settings_fields( \'pluginPage\' );    // initializes all of the settings fields
        do_settings_sections( \'pluginPage\' );   // does the settings section
        submit_button();    // creats the submit button
        ?>
    </form>

1 个回复
SO网友:Fencer

我想在此期间你已经明白了。虽然我想分享我的经验,因为我面临着同样的问题,这可能对其他人有用。

在我的例子中,我只是在为输入元素创建HTML代码时错误地引用了选项。

因此,既然Wordpress建议有一个选项可以保存一组值,这些值是插件/主题/任何东西的实际设置,那么您可能会在某个地方有类似的内容:(注:我将使用plugin_config 你在哪里Settings Name, 瑞克。)

add_option(\'plugin_config\', array(
    \'val1\' => 1,
    \'val2\' => 2\'
));
然后,除了注册设置,您还将在其中注册相应的字段以输入节的值,如下所示:

add_settings_field(\'val1_field\', \'Field Label:\', \'creat_html_callback\', \'settings_page_slug_name\');
现在是有趣的部分;定义html代码时,必须以wordpress可以将请求的相应post值与选项的正确数组位置相关联的方式设置字段名称plugin_config (您的Settings Name!). 下面是中引用的回调add_settings_field 之前

public function creat_html_callback() {
    $option = get_option(\'plugin_config\');
    echo \'<input type="text" id="val1Field" name="plugin_config[val1]" size="10" value="\'.$option[\'val1\'].\'"/>\';
}
对我来说最重要的部分是name="plugin_config[val1]". html输入元素的名称必须与注册的(register_setting!) 选项/设置或选项名称以及与输入字段对应的值的数组索引。当然,这看起来很清楚,也很容易看到。Bit我认为那些鼻涕虫的名字和参考文献很容易让你混淆,尤其是当你遵循这样的教程时this.

结束

相关推荐

多个wp_options表以在安装之间共享内容

我的应用程序>10user_roles, 每个都能够执行完全不同的任务,提供了自定义后端,并且没有访问wp-admin. 每个user_role 通过多个插件处理使用。每个user_role 在相同的数据(帖子、分类法等)上进行交互我的想法是对一个或多个应用程序使用单个安装user_roles 连接到单个数据库以共享用户、帖子等,但加载了不同的插件,因此只需单独wp_options 桌子目标是提供独立的登录区域(例如子域,我不希望合作伙伴使用与客户相同的登录),更容易的路由(每个角色的永久链接和重写