如何在自定义管理页面上保存用户元

时间:2011-12-02 作者:Scott

我已经从WP admin中删除了编辑配置文件页面,因为我不希望用户能够编辑他们的详细信息,因为这是一个封闭的intranet,他们的详细信息来自广告。

然而,我确实希望他们能够发布自己的用户描述(传记)。因此,我开始添加一个新的管理页面,让用户能够做到这一点:

add_action(\'admin_menu\', \'sc_stace_user_bio_page\');
function sc_stace_user_bio_page() {
    $page = add_menu_page( "Your Biography", "Biography", "read", "user-bio", "sc_stace_user_bio_page_content", "", 50 );
}

function sc_stace_user_bio_page_content() {
    global $current_user;
    get_currentuserinfo();
    ?>
    <div class="wrap">
        <h2>Your Biography</h2>
        <form action="options.php" method="post">
            <textarea rows="10" cols="100" name="user_description"><?php echo esc_textarea($current_user->user_description); ?></textarea>
            <?php submit_button( "Save", "primary", "submit", true ); ?>
        </form>
    </div>
    <?php
}
?>
据我所知,我无法在此使用设置API,因为此信息需要保存到登录的用户元中,而不是保存到选项表中。因此,现在我陷入了困境,因为我不知道表单应该保存到哪里,也不知道如何以正确的方式检查表单提交。

那么我应该在哪里提交表格呢?如果有的话,我应该在表格中填写什么?我需要连接什么来检查表单提交,以及是否发送了正确的数据并保存到用户的元数据?

2 个回复
最合适的回答,由SO网友:Johannes Pille 整理而成

update_user_meta($current_user->ID, \'description\', $_POST[\'user_description\']);
在表单处理功能中将保存bio。

我会将表单操作保持在同一个管理页面上。至于数据验证,我不知道首先要验证什么。它只是一个字符串,而不是需要根据特定格式检查的电子邮件、地址等。

SO网友:Chris_O

就像Johannes的回答一样update_user_meta 就数据验证而言,这几乎是您所需要的全部。Justin Tadlock 有一篇关于添加自定义用户元字段的博文。只需在新的管理页面上添加输出表单的函数。

结束

相关推荐

如果自定义管理页面未挂钩到ADD_OPTIONS_PAGE(),则不会显示设置API已更新消息

一直在使用设置API,发现只有通过add\\u options\\u page()将设置页面连接到WordPress菜单时,才会显示消息(用于成功或错误)。其他任何操作都不起作用,例如add\\u dashboard\\u page()。想知道这是不是真的?我尝试使用的示例代码是包含“RegisteredSettingsTest”类的答案Where to hook register_settings for Settings API when also want to update options out