我正在将额外的配置文件字段保存到我的用户配置文件中-不是通过用户管理,而是通过另一种方法(一个插件,但这并不重要-所有用户数据都正确存在)。
现在,我还想在管理后端显示有关用户配置文件的额外信息,并使其在那里也可编辑。我跟踪了Justin Tadlock代码http://justintadlock.com/archives/2009/09/10/adding-and-using-custom-user-profile-fields - 这意味着我在函数中添加了一些操作和两个函数。php,以支持在后端显示和更新这些字段。
问题是,名称中包含下划线的字段不能正确返回结果。
即,虽然我可以正确返回“company”的值,“company\\u url”的值也会像返回“company”一样返回(例如,“Microsoft”而不是“company”)http://www.microsoft.com“”。
我的两个功能如下。我还没有更新save函数,因为这只会用“company”值的副本损坏用户数据。我有许多包含“\\u1”的字段名,因此这很重要。
/*
* Extra profile fields: Show on user admin backend
* http://justintadlock.com/archives/2009/09/10/adding-and-using-custom-user-profile-fields
*/
add_action( \'show_user_profile\', \'mysite_show_user_meta\' );
add_action( \'edit_user_profile\', \'mysite_show_extra_profile_fields\' );
function mysite_show_extra_profile_fields( $user ) { ?>
<h3>Extra profile information</h3>
<table class="form-table">
<tr>
<th><label for="twitter">Twitter</label></th>
<td>
<input type="text" name="twitter" id="twitter" value="<?php echo esc_attr( get_the_author_meta( \'twitter\', $user->ID ) ); ?>" class="regular-text" /><br />
<span class="description">Please enter your Twitter username.</span>
</td>
</tr>
<tr>
<th><label for="company">Company</label></th>
<td>
<input type="text" name="company" id="company" value="<?php echo esc_attr( get_the_author_meta( \'company\', $user->ID ) ); ?>" class="regular-text" /><br />
<span class="description">Please enter your company.</span>
</td>
</tr>
<tr>
<th><label for="company_url">Company website</label></th>
<td>
<input type="text" name="company_url" id="company_url" value="<?php echo esc_attr( get_the_author_meta( \'company_url\', $user->ID ) ); ?>" class="regular-text" /><br />
<span class="description">Please enter your company website URL.</span>
</td>
</tr>
<tr>
<th><label for="photo_url">Photo URL</label></th>
<td>
<input type="text" name="photo_url" id="photo_url" value="<?php echo esc_attr( get_the_author_meta( \'photo_url\', $user->ID ) ); ?>" class="regular-text" /><br />
<span class="description">Please enter your photo URL. </span>
</td>
</tr>
</table>
<?php }
/*
* Extra profile fields: Save
* http://justintadlock.com/archives/2009/09/10/adding-and-using-custom-user-profile-fields
*/
add_action( \'personal_options_update\', \'mysite_user_meta\' );
add_action( \'edit_user_profile_update\', \'mysite_user_meta\' );
function mysite_user_meta( $user_id ) {
if ( !current_user_can( \'edit_user\', $user_id ) )
return false;
/* Copy and paste this line for additional fields. Make sure to change \'twitter\' to the field ID. */
update_usermeta( $user_id, \'twitter\', $_POST[\'twitter\'] );
}