我在网络中有几个站点。我不希望站点管理员管理网络插件之类的东西,但我希望他们能够编辑所有网络用户的个人资料,而不是使用他们站点上的个人资料。
在/wp-admin/network/users.php
文件如下:
if ( ! current_user_can( \'manage_network_users\' ) ) wp_die( __( \'You do not have permission to access this page.\' ) );如何授予站点管理员权限
manage_network_users
没有把他们提升为超级管理员?代码如下所示:
/** * Retrieve a list of super admins. * * @since 3.0.0 * * @uses $super_admins Super admins global variable, if set. * * @return array List of super admin logins */ function get_super_admins() { global $super_admins; if ( isset($super_admins) ) return $super_admins; else return get_site_option( \'site_admins\', array(\'admin\') ); }
/** * Determine if user is a site admin. * * @since 3.0.0 * * @param int $user_id (Optional) The ID of a user. Defaults to the current user. * @return bool True if the user is a site admin. */ function is_super_admin( $user_id = false ) { if ( $user_id ) $user = new WP_User( $user_id ); else $user = wp_get_current_user(); if ( empty( $user->id ) ) return false; if ( is_multisite() ) { $super_admins = get_super_admins(); if ( is_array( $super_admins ) && in_array( $user->user_login, $super_admins ) ) return true; } else { if ( $user->has_cap(\'delete_users\') ) return true; } return false; }
/** * Whether user has capability or role name. * * This is useful for looking up whether the user has a specific role * assigned to the user. The second optional parameter can also be used to * check for capabilities against a specfic post. * * @since 2.0.0 * @access public * * @param string|int $cap Capability or role name to search. * @param int $post_id Optional. Post ID to check capability against specific post. * @return bool True, if user has capability; false, if user does not have capability. */ function has_cap( $cap ) { # fb($cap); if ( is_numeric( $cap ) ) { _deprecated_argument( __FUNCTION__, \'2.0\', __(\'Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead.\') ); $cap = $this->translate_level_to_cap( $cap ); } $args = array_slice( func_get_args(), 1 ); $args = array_merge( array( $cap, $this->ID ), $args ); $caps = call_user_func_array( \'map_meta_cap\', $args ); // Multisite super admin has all caps by definition, Unless specifically denied. if ( is_multisite() && is_super_admin( $this->ID ) ) { if ( in_array(\'do_not_allow\', $caps) ) return false; return true; } // Must have ALL requested caps $capabilities = apply_filters( \'user_has_cap\', $this->allcaps, $caps, $args ); $capabilities[\'exist\'] = true; // Everyone is allowed to exist foreach ( (array) $caps as $cap ) { //echo "Checking cap $cap来自用户的代码。wp admin中的php显示编辑网络用户的第二个功能检查:
"; if ( empty( $capabilities[$cap] ) || !$capabilities[$cap] ) return false; } return true; }
// Only allow super admins on multisite to edit every user. if ( is_multisite() && ! current_user_can( \'manage_network_users\' ) && $user_id != $current_user->ID && ! apply_filters( \'enable_edit_any_user_configuration\', true ) ) wp_die( __( \'You do not have permission to edit this user.\' ) );