保存每个用户的插件设置

时间:2014-09-08 15:21:18

标签: php mysql wordpress-plugin

我想到了一个沙箱入门插件(下面的已消毒代码)来为用户保存网址。所以在管理部分有一个按钮。当用户单击它时,将打开一个新窗口,将它们带到已配置的URL。我知道很简单。

我有插件表单和后处理功能。我现在遇到的是使用wp_options表的困惑。

具体如何将每个USER设置保存到wp_options表中。

我可以想到三种方式。

  1. 在配置页面上添加包含用户ID的第三个隐藏字段。然后输入wp_options。回想起来,我会在wp_options中找到与userid匹配的条目。我不确定这里是否wp_options罐头功能会覆盖....换句话说,如果用户A保存www.google.com然后10分钟后用户B保存www.bing.com罐头wp_options罐头功能覆盖用户一个?我还可以指定召回的细节吗?

  2. 第二种是将用户设置中的设置保存....作为一种用户设置......但要做到这一点,我是不是踩着约定而进一步冒险升级/兼容性?

  3. 自定义表在我看来是方便的......但是你们知道得比我多得多,所以我想得到你的意见。

  4. 这是代码......再次消毒,所以有些事情可能没有意义,因为我已经为操场目的改变了它们。

        function register_setting() 
        {
            register_setting( 'Options-group', 'OptionsA_options', 'options_callback');
            register_setting( 'Options-group', 'url' );
    
        }
    
    
        function options_callback()
        { 
            alert('Options Callback'); 
        }
        add_action( 'admin_init', 'register_setting' );
    
    
    
        function my_plugin_menu() 
        {
            add_options_page( 'Test Options', 'Button Click', 'activate_plugins', 'UNIque Name', 'some_options' );
        }
        add_action( 'admin_menu', 'my_plugin_menu' );
    
    
        function clicky_options() 
        {
            if ( !current_user_can( 'manage_options' ) )  {
                wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
            }
            ?>
    
                <div class="wrap">
                    <h2>Config</h2>
    
                    <form method="post" action="somepage_options.php">
    
                        <?php settings_fields( 'Options-group' );?>
    
                        <?php do_settings_sections( 'Options-group' );?>
    
    
                        <table class="form-table">
                            <tr valign="top">
                                <th scope="row">Site Url (including http:// OR https:// )</th>
                                <td><input type="text" name="url" value="<?php echo esc_attr( get_option('url') ); ?>" /></td>                     
                            </tr>
                        </table>
    
    
                        <?php submit_button('Sign On');?>
    
                    </form>
                </div>
    
            <?php
        }
    

    表格邮寄处理:

    $url = $_POST['url'];
    
    $FullUrl = $url."/"
    
    header("Location: $FullUrl", true, 301);
    exit();
    

1 个答案:

答案 0 :(得分:2)

所以基本上,你试图将用户输入保存在&#39; wp_options&#39;使用&#39; register_settings&#39;表。而不是你可以简单地保存表单并将输入添加到usermeta来处理每个用户的设置 -

$ user_id = get_current_user_id();

update_user_meta($ user_id,&#39; input_url&#39;,$ _POST [&#39; url&#39;]);

您可以使用&#39; update_user_option&#39;如果处理多站点。