使用wordpress的插件并遇到问题:
必须在用户信息面板(Wordpress Profile)上显示一个额外字段。 我认为以下代码切换存在逻辑错误。我是php编程和WordPress的新手。
add_action( 'show_user_profile', 'show_internal_id' );
add_action( 'edit_user_profile', 'show_internal_id' );
function show_internal_id($user_id){
$profileuser = get_user_to_edit($user_id);
$global_uid = $profileuser->ID;
$user_current = get_userdata($global_uid);
$user_roles = $user_current->roles;
foreach((array)$user_roles as $cur_role){
if($cur_role=='internal_customer'){
?>
<table class="form-table">
<tr>
<th><label for="internal_id">Internal-ID</label></th>
<td><input type="text" name="internal_id" id="internal_id" value="<?php echo esc_attr(get_user_meta( $user_id, 'internal_customer_id', true )); ?>" disabled="disabled" class="regular-text" /> </td>
</tr>
</table>
<?php }
}
}
此代码剪切已添加到插件文件中。
答案 0 :(得分:0)
函数show_internal_id($user_id)
没有任何id作为参数。它取而代之的是用户对象。
这是我的问题解决方案:
function show_internal_id($user){
$user_roles = $user->roles;
foreach((array)$user_roles as $cur_role){
if($cur_role=='internal_customer'){
?>
<table class="form-table">
<tr>
<th><label for="internal_id">Internal-ID</label></th>
<td><input type="text" name="internal_id" id="internal_id" value="<?php echo esc_attr(get_user_meta( $user->id , 'internal_customer_id', true )); ?>" disabled="disabled" class="regular-text" /> </td>
</tr>
</table>
<?php }
}
}