Wordpress用户面板中的额外字段未显示

时间:2014-09-09 13:01:40

标签: php wordpress wordpress-plugin

使用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   }
       }
    }

此代码剪切已添加到插件文件中。

1 个答案:

答案 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   }
    }
}