仅更新某些自定义用户字段

时间:2015-10-20 作者:Interactive

我创建了多个用户字段
这些字段仅由管理员管理,以添加有关用户的其他信息,现在规则已更改。用户必须从前端访问其字段,但不允许编辑所有字段。

因此,我只想显示允许用户更改的字段。我创建了这个,但在保存时遇到了问题。

如果表单已保存,则会清除表单中未包含的所有字段。我想更新表单中的用户字段,而非表单中的用户字段必须保持不变!

这就是我所做的我创建了一个模板文件并添加了:

<?php 
global $current_user, $wp_roles;
get_currentuserinfo();
$error = array();    
if ( \'POST\' == $_SERVER[\'REQUEST_METHOD\'] && !empty( $_POST[\'action\'] ) && $_POST[\'action\'] == \'update-user\' ) {
if ( !empty( $_POST[\'first_name\'] ) )
    update_user_meta( $current_user->ID, \'first_name\', esc_attr( $_POST[\'first_name\'] ) );

if ( count($error) == 0 ) {
    do_action(\'edit_user_profile_update\', $current_user->ID);
    wp_redirect( get_bloginfo(\'url\').\'/my-page/\');
    exit;
}
}?>
<?php if ( count($error) > 0 ) echo \'<p class="error">\' . implode("<br />", $error) . \'</p>\'; ?>
    <form method="POST" id="adduser" action="<?php the_permalink(); ?>" enctype="multipart/form-data">
        <table>
            <tr>
                <td>Name:</td>
                <td><input class="profile_formfield" name="first_name" type="text" id="first_name" value="<?php the_author_meta( \'first_name\', $current_user->ID ); ?>" /></td>
            </tr>
            <tr>
                <td>
                    <p class="profile_form_submit">
                        <input name="updateuser" type="submit" id="updateuser" class="submit button" value="<?php _e(\'Opslaan\', \'profile\'); ?>" />
                        <?php wp_nonce_field( \'update-user\' ) ?>
                        <input name="action" type="hidden" id="action" value="update-user" />
                    </p>                        
                </td>
            </tr>
         </table>
一个丑陋的解决方案可能是将所有字段添加为隐藏字段。但我宁愿不要!

看到我做错什么了吗?

M

1 个回复
SO网友:Interactive

我找到了解决办法

do_action(\'edit_user_profile_update\', $current_user->ID); 是问题所在。在我把它注释掉之后,更新进展顺利。

do_action 是一个插件挂钩,期望比发件人提供的更多:
explanation

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请