我创建了多个用户字段
这些字段仅由管理员管理,以添加有关用户的其他信息,现在规则已更改。用户必须从前端访问其字段,但不允许编辑所有字段。
因此,我只想显示允许用户更改的字段。我创建了这个,但在保存时遇到了问题。
如果表单已保存,则会清除表单中未包含的所有字段。我想更新表单中的用户字段,而非表单中的用户字段必须保持不变!
这就是我所做的我创建了一个模板文件并添加了:
<?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