admin管理员组文章数量:1434239
I am trying to add a custom field called Company
to all site admins on my network. And disable this field for every role which hasn't got the capability to create_users
.
This is what I have come up with, but I cannot make it work:
function modify_contact_methods($profile_fields) {
$user = $_GET['user_id'];
if (!user_can($user, 'create_users')) {
return;
}
$profile_fields['company'] = 'Company';
return $profile_fields;
}
add_filter('user_contactmethods', 'modify_contact_methods');
So what I ultimately want is for it to be hidden from user-edit.php
and profile.php
, on user-edit.php
it should be possible to get the user id from the URL, but on profile.php
I don't know. I cannot make the above code work however.
I am trying to add a custom field called Company
to all site admins on my network. And disable this field for every role which hasn't got the capability to create_users
.
This is what I have come up with, but I cannot make it work:
function modify_contact_methods($profile_fields) {
$user = $_GET['user_id'];
if (!user_can($user, 'create_users')) {
return;
}
$profile_fields['company'] = 'Company';
return $profile_fields;
}
add_filter('user_contactmethods', 'modify_contact_methods');
So what I ultimately want is for it to be hidden from user-edit.php
and profile.php
, on user-edit.php
it should be possible to get the user id from the URL, but on profile.php
I don't know. I cannot make the above code work however.
1 Answer
Reset to default 0user_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;
}
本文标签: customizationAdd custom profile field only for site admins
版权声明:本文标题:customization - Add custom profile field only for site admins? 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745614496a2666316.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
return $profile_fields
in the no-permissions case (or just only add it if the user has permissions). But I don't think that's going to be enough. I'd guess you'd need to add the extra field generally and decide at display time whether to render it or not, but I can't think how to do that off the top of my head. – Rup Commented Mar 5, 2019 at 14:59