WP_User::has_cap( string $cap )
Whether the user has a specific capability.
Description
While checking against a role in place of a capability is supported in part, this practice is discouraged as it may produce unreliable results.
See also
Parameters
- $cap
-
(string) (Required) Capability name.
- $object_id,...
-
(int) (Optional) ID of a specific object to check against if
$cap
is a "meta" capability. Meta capabilities such asedit_post
andedit_user
are capabilities used by by themap_meta_cap()
function to map to primitive capabilities that a user or role has, such asedit_posts
andedit_others_posts
.
Return
(bool) Whether the user has the given capability, or, if $object_id
is passed, whether the user has the given capability for that object.
Source
File: wp-includes/class-wp-user.php
public function has_cap( $cap ) {
if ( is_numeric( $cap ) ) {
_deprecated_argument( __FUNCTION__, 'WP-2.0.0', __( 'Usage of user levels is deprecated. Use 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;
}
/**
* Dynamically filter a user's capabilities.
*
* @since WP-2.0.0
* @since WP-3.7.0 Added the user object.
*
* @param array $allcaps An array of all the user's capabilities.
* @param array $caps Actual capabilities for meta capability.
* @param array $args Optional parameters passed to has_cap(), typically object ID.
* @param WP_User $user The user object.
*/
$capabilities = apply_filters( 'user_has_cap', $this->allcaps, $caps, $args, $this );
// Everyone is allowed to exist.
$capabilities['exist'] = true;
// Nobody is allowed to do things they are not allowed to do.
unset( $capabilities['do_not_allow'] );
// Must have ALL requested caps.
foreach ( (array) $caps as $cap ) {
if ( empty( $capabilities[ $cap ] ) )
return false;
}
return true;
}
Changelog
Version | Description |
---|---|
WP-2.0.0 | Introduced. |