user_contactmethods
filter hook passes two parameters to the registered functions. The second parameter is the WP_User
object, with the help of which you can check roles and caps of the edited user.
add_filter( 'user_contactmethods', 'se330743_user_contact_methods', 20, 2 );
function se330743_user_contact_methods( $user_contact, $user )
{
// --- fields for admins ---
if ( !in_array('administrator', (array)$user->roles) )
return $user_contact;
// --- fields for users with cap 'create_users' ---
// if ( !user_can($user, 'create_users') )
// --- fields for admin---
// if ( !in_array('administrator', (array)$user->roles) || !user_can($user, 'create_users') )
$user_contact['company'] = 'Company';
return $user_contact;
}