是否仅为站点管理员添加自定义配置文件字段?

时间:2019-03-05 作者:joq3

我正在尝试添加一个名为Company 发送给网络上的所有站点管理员。并为每个无法执行以下操作的角色禁用此字段create_users.

这是我想到的,但我无法让它发挥作用:

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\');
所以我最终想要的是把它隐藏起来user-edit.phpprofile.php, 在…上user-edit.php 应该可以从URL获取用户id,但在profile.php 我不知道。然而,我无法使上述代码正常工作。

1 个回复
SO网友:nmr

user_contactmethods 过滤器挂钩将两个参数传递给注册的函数。第二个参数是WP_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;
}

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register