Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/wp-inclu...
File: capabilities.php
*
[500] Fix | Delete
* @param bool $allowed Whether the user can add the object meta. Default false.
[501] Fix | Delete
* @param string $meta_key The meta key.
[502] Fix | Delete
* @param int $object_id Object ID.
[503] Fix | Delete
* @param int $user_id User ID.
[504] Fix | Delete
* @param string $cap Capability name.
[505] Fix | Delete
* @param string[] $caps Array of the user's capabilities.
[506] Fix | Delete
*/
[507] Fix | Delete
$allowed = apply_filters( "auth_{$object_type}_meta_{$meta_key}", $allowed, $meta_key, $object_id, $user_id, $cap, $caps );
[508] Fix | Delete
}
[509] Fix | Delete
[510] Fix | Delete
if ( ! empty( $object_subtype ) ) {
[511] Fix | Delete
[512] Fix | Delete
/**
[513] Fix | Delete
* Filters whether the user is allowed to edit meta for specific object types/subtypes.
[514] Fix | Delete
*
[515] Fix | Delete
* Return true to have the mapped meta caps from `edit_{$object_type}` apply.
[516] Fix | Delete
*
[517] Fix | Delete
* The dynamic portion of the hook name, `$object_type` refers to the object type being filtered.
[518] Fix | Delete
* The dynamic portion of the hook name, `$object_subtype` refers to the object subtype being filtered.
[519] Fix | Delete
* The dynamic portion of the hook name, `$meta_key`, refers to the meta key passed to map_meta_cap().
[520] Fix | Delete
*
[521] Fix | Delete
* @since 4.6.0 As `auth_post_{$post_type}_meta_{$meta_key}`.
[522] Fix | Delete
* @since 4.7.0 Renamed from `auth_post_{$post_type}_meta_{$meta_key}` to
[523] Fix | Delete
* `auth_{$object_type}_{$object_subtype}_meta_{$meta_key}`.
[524] Fix | Delete
* @deprecated 4.9.8 Use {@see 'auth_{$object_type}_meta_{$meta_key}_for_{$object_subtype}'} instead.
[525] Fix | Delete
*
[526] Fix | Delete
* @param bool $allowed Whether the user can add the object meta. Default false.
[527] Fix | Delete
* @param string $meta_key The meta key.
[528] Fix | Delete
* @param int $object_id Object ID.
[529] Fix | Delete
* @param int $user_id User ID.
[530] Fix | Delete
* @param string $cap Capability name.
[531] Fix | Delete
* @param string[] $caps Array of the user's capabilities.
[532] Fix | Delete
*/
[533] Fix | Delete
$allowed = apply_filters_deprecated(
[534] Fix | Delete
"auth_{$object_type}_{$object_subtype}_meta_{$meta_key}",
[535] Fix | Delete
array( $allowed, $meta_key, $object_id, $user_id, $cap, $caps ),
[536] Fix | Delete
'4.9.8',
[537] Fix | Delete
"auth_{$object_type}_meta_{$meta_key}_for_{$object_subtype}"
[538] Fix | Delete
);
[539] Fix | Delete
}
[540] Fix | Delete
[541] Fix | Delete
if ( ! $allowed ) {
[542] Fix | Delete
$caps[] = $cap;
[543] Fix | Delete
}
[544] Fix | Delete
}
[545] Fix | Delete
break;
[546] Fix | Delete
case 'edit_comment':
[547] Fix | Delete
if ( ! isset( $args[0] ) ) {
[548] Fix | Delete
/* translators: %s: Capability name. */
[549] Fix | Delete
$message = __( 'When checking for the %s capability, you must always check it against a specific comment.' );
[550] Fix | Delete
[551] Fix | Delete
_doing_it_wrong(
[552] Fix | Delete
__FUNCTION__,
[553] Fix | Delete
sprintf( $message, '<code>' . $cap . '</code>' ),
[554] Fix | Delete
'6.1.0'
[555] Fix | Delete
);
[556] Fix | Delete
[557] Fix | Delete
$caps[] = 'do_not_allow';
[558] Fix | Delete
break;
[559] Fix | Delete
}
[560] Fix | Delete
[561] Fix | Delete
$comment = get_comment( $args[0] );
[562] Fix | Delete
if ( ! $comment ) {
[563] Fix | Delete
$caps[] = 'do_not_allow';
[564] Fix | Delete
break;
[565] Fix | Delete
}
[566] Fix | Delete
[567] Fix | Delete
$post = get_post( $comment->comment_post_ID );
[568] Fix | Delete
[569] Fix | Delete
/*
[570] Fix | Delete
* If the post doesn't exist, we have an orphaned comment.
[571] Fix | Delete
* Fall back to the edit_posts capability, instead.
[572] Fix | Delete
*/
[573] Fix | Delete
if ( $post ) {
[574] Fix | Delete
$caps = map_meta_cap( 'edit_post', $user_id, $post->ID );
[575] Fix | Delete
} else {
[576] Fix | Delete
$caps = map_meta_cap( 'edit_posts', $user_id );
[577] Fix | Delete
}
[578] Fix | Delete
break;
[579] Fix | Delete
case 'unfiltered_upload':
[580] Fix | Delete
if ( defined( 'ALLOW_UNFILTERED_UPLOADS' ) && ALLOW_UNFILTERED_UPLOADS && ( ! is_multisite() || is_super_admin( $user_id ) ) ) {
[581] Fix | Delete
$caps[] = $cap;
[582] Fix | Delete
} else {
[583] Fix | Delete
$caps[] = 'do_not_allow';
[584] Fix | Delete
}
[585] Fix | Delete
break;
[586] Fix | Delete
case 'edit_css':
[587] Fix | Delete
case 'unfiltered_html':
[588] Fix | Delete
// Disallow unfiltered_html for all users, even admins and super admins.
[589] Fix | Delete
if ( defined( 'DISALLOW_UNFILTERED_HTML' ) && DISALLOW_UNFILTERED_HTML ) {
[590] Fix | Delete
$caps[] = 'do_not_allow';
[591] Fix | Delete
} elseif ( is_multisite() && ! is_super_admin( $user_id ) ) {
[592] Fix | Delete
$caps[] = 'do_not_allow';
[593] Fix | Delete
} else {
[594] Fix | Delete
$caps[] = 'unfiltered_html';
[595] Fix | Delete
}
[596] Fix | Delete
break;
[597] Fix | Delete
case 'edit_files':
[598] Fix | Delete
case 'edit_plugins':
[599] Fix | Delete
case 'edit_themes':
[600] Fix | Delete
// Disallow the file editors.
[601] Fix | Delete
if ( defined( 'DISALLOW_FILE_EDIT' ) && DISALLOW_FILE_EDIT ) {
[602] Fix | Delete
$caps[] = 'do_not_allow';
[603] Fix | Delete
} elseif ( ! wp_is_file_mod_allowed( 'capability_edit_themes' ) ) {
[604] Fix | Delete
$caps[] = 'do_not_allow';
[605] Fix | Delete
} elseif ( is_multisite() && ! is_super_admin( $user_id ) ) {
[606] Fix | Delete
$caps[] = 'do_not_allow';
[607] Fix | Delete
} else {
[608] Fix | Delete
$caps[] = $cap;
[609] Fix | Delete
}
[610] Fix | Delete
break;
[611] Fix | Delete
case 'update_plugins':
[612] Fix | Delete
case 'delete_plugins':
[613] Fix | Delete
case 'install_plugins':
[614] Fix | Delete
case 'upload_plugins':
[615] Fix | Delete
case 'update_themes':
[616] Fix | Delete
case 'delete_themes':
[617] Fix | Delete
case 'install_themes':
[618] Fix | Delete
case 'upload_themes':
[619] Fix | Delete
case 'update_core':
[620] Fix | Delete
/*
[621] Fix | Delete
* Disallow anything that creates, deletes, or updates core, plugin, or theme files.
[622] Fix | Delete
* Files in uploads are excepted.
[623] Fix | Delete
*/
[624] Fix | Delete
if ( ! wp_is_file_mod_allowed( 'capability_update_core' ) ) {
[625] Fix | Delete
$caps[] = 'do_not_allow';
[626] Fix | Delete
} elseif ( is_multisite() && ! is_super_admin( $user_id ) ) {
[627] Fix | Delete
$caps[] = 'do_not_allow';
[628] Fix | Delete
} elseif ( 'upload_themes' === $cap ) {
[629] Fix | Delete
$caps[] = 'install_themes';
[630] Fix | Delete
} elseif ( 'upload_plugins' === $cap ) {
[631] Fix | Delete
$caps[] = 'install_plugins';
[632] Fix | Delete
} else {
[633] Fix | Delete
$caps[] = $cap;
[634] Fix | Delete
}
[635] Fix | Delete
break;
[636] Fix | Delete
case 'install_languages':
[637] Fix | Delete
case 'update_languages':
[638] Fix | Delete
if ( ! wp_is_file_mod_allowed( 'can_install_language_pack' ) ) {
[639] Fix | Delete
$caps[] = 'do_not_allow';
[640] Fix | Delete
} elseif ( is_multisite() && ! is_super_admin( $user_id ) ) {
[641] Fix | Delete
$caps[] = 'do_not_allow';
[642] Fix | Delete
} else {
[643] Fix | Delete
$caps[] = 'install_languages';
[644] Fix | Delete
}
[645] Fix | Delete
break;
[646] Fix | Delete
case 'activate_plugins':
[647] Fix | Delete
case 'deactivate_plugins':
[648] Fix | Delete
case 'activate_plugin':
[649] Fix | Delete
case 'deactivate_plugin':
[650] Fix | Delete
$caps[] = 'activate_plugins';
[651] Fix | Delete
if ( is_multisite() ) {
[652] Fix | Delete
// update_, install_, and delete_ are handled above with is_super_admin().
[653] Fix | Delete
$menu_perms = get_site_option( 'menu_items', array() );
[654] Fix | Delete
if ( empty( $menu_perms['plugins'] ) ) {
[655] Fix | Delete
$caps[] = 'manage_network_plugins';
[656] Fix | Delete
}
[657] Fix | Delete
}
[658] Fix | Delete
break;
[659] Fix | Delete
case 'resume_plugin':
[660] Fix | Delete
$caps[] = 'resume_plugins';
[661] Fix | Delete
break;
[662] Fix | Delete
case 'resume_theme':
[663] Fix | Delete
$caps[] = 'resume_themes';
[664] Fix | Delete
break;
[665] Fix | Delete
case 'delete_user':
[666] Fix | Delete
case 'delete_users':
[667] Fix | Delete
// If multisite only super admins can delete users.
[668] Fix | Delete
if ( is_multisite() && ! is_super_admin( $user_id ) ) {
[669] Fix | Delete
$caps[] = 'do_not_allow';
[670] Fix | Delete
} else {
[671] Fix | Delete
$caps[] = 'delete_users'; // delete_user maps to delete_users.
[672] Fix | Delete
}
[673] Fix | Delete
break;
[674] Fix | Delete
case 'create_users':
[675] Fix | Delete
if ( ! is_multisite() ) {
[676] Fix | Delete
$caps[] = $cap;
[677] Fix | Delete
} elseif ( is_super_admin( $user_id ) || get_site_option( 'add_new_users' ) ) {
[678] Fix | Delete
$caps[] = $cap;
[679] Fix | Delete
} else {
[680] Fix | Delete
$caps[] = 'do_not_allow';
[681] Fix | Delete
}
[682] Fix | Delete
break;
[683] Fix | Delete
case 'manage_links':
[684] Fix | Delete
if ( get_option( 'link_manager_enabled' ) ) {
[685] Fix | Delete
$caps[] = $cap;
[686] Fix | Delete
} else {
[687] Fix | Delete
$caps[] = 'do_not_allow';
[688] Fix | Delete
}
[689] Fix | Delete
break;
[690] Fix | Delete
case 'customize':
[691] Fix | Delete
$caps[] = 'edit_theme_options';
[692] Fix | Delete
break;
[693] Fix | Delete
case 'delete_site':
[694] Fix | Delete
if ( is_multisite() ) {
[695] Fix | Delete
$caps[] = 'manage_options';
[696] Fix | Delete
} else {
[697] Fix | Delete
$caps[] = 'do_not_allow';
[698] Fix | Delete
}
[699] Fix | Delete
break;
[700] Fix | Delete
case 'edit_term':
[701] Fix | Delete
case 'delete_term':
[702] Fix | Delete
case 'assign_term':
[703] Fix | Delete
if ( ! isset( $args[0] ) ) {
[704] Fix | Delete
/* translators: %s: Capability name. */
[705] Fix | Delete
$message = __( 'When checking for the %s capability, you must always check it against a specific term.' );
[706] Fix | Delete
[707] Fix | Delete
_doing_it_wrong(
[708] Fix | Delete
__FUNCTION__,
[709] Fix | Delete
sprintf( $message, '<code>' . $cap . '</code>' ),
[710] Fix | Delete
'6.1.0'
[711] Fix | Delete
);
[712] Fix | Delete
[713] Fix | Delete
$caps[] = 'do_not_allow';
[714] Fix | Delete
break;
[715] Fix | Delete
}
[716] Fix | Delete
[717] Fix | Delete
$term_id = (int) $args[0];
[718] Fix | Delete
$term = get_term( $term_id );
[719] Fix | Delete
if ( ! $term || is_wp_error( $term ) ) {
[720] Fix | Delete
$caps[] = 'do_not_allow';
[721] Fix | Delete
break;
[722] Fix | Delete
}
[723] Fix | Delete
[724] Fix | Delete
$tax = get_taxonomy( $term->taxonomy );
[725] Fix | Delete
if ( ! $tax ) {
[726] Fix | Delete
$caps[] = 'do_not_allow';
[727] Fix | Delete
break;
[728] Fix | Delete
}
[729] Fix | Delete
[730] Fix | Delete
if ( 'delete_term' === $cap
[731] Fix | Delete
&& ( get_option( 'default_' . $term->taxonomy ) == $term->term_id
[732] Fix | Delete
|| get_option( 'default_term_' . $term->taxonomy ) == $term->term_id )
[733] Fix | Delete
) {
[734] Fix | Delete
$caps[] = 'do_not_allow';
[735] Fix | Delete
break;
[736] Fix | Delete
}
[737] Fix | Delete
[738] Fix | Delete
$taxo_cap = $cap . 's';
[739] Fix | Delete
[740] Fix | Delete
$caps = map_meta_cap( $tax->cap->$taxo_cap, $user_id, $term_id );
[741] Fix | Delete
[742] Fix | Delete
break;
[743] Fix | Delete
case 'manage_post_tags':
[744] Fix | Delete
case 'edit_categories':
[745] Fix | Delete
case 'edit_post_tags':
[746] Fix | Delete
case 'delete_categories':
[747] Fix | Delete
case 'delete_post_tags':
[748] Fix | Delete
$caps[] = 'manage_categories';
[749] Fix | Delete
break;
[750] Fix | Delete
case 'assign_categories':
[751] Fix | Delete
case 'assign_post_tags':
[752] Fix | Delete
$caps[] = 'edit_posts';
[753] Fix | Delete
break;
[754] Fix | Delete
case 'create_sites':
[755] Fix | Delete
case 'delete_sites':
[756] Fix | Delete
case 'manage_network':
[757] Fix | Delete
case 'manage_sites':
[758] Fix | Delete
case 'manage_network_users':
[759] Fix | Delete
case 'manage_network_plugins':
[760] Fix | Delete
case 'manage_network_themes':
[761] Fix | Delete
case 'manage_network_options':
[762] Fix | Delete
case 'upgrade_network':
[763] Fix | Delete
$caps[] = $cap;
[764] Fix | Delete
break;
[765] Fix | Delete
case 'setup_network':
[766] Fix | Delete
if ( is_multisite() ) {
[767] Fix | Delete
$caps[] = 'manage_network_options';
[768] Fix | Delete
} else {
[769] Fix | Delete
$caps[] = 'manage_options';
[770] Fix | Delete
}
[771] Fix | Delete
break;
[772] Fix | Delete
case 'update_php':
[773] Fix | Delete
if ( is_multisite() && ! is_super_admin( $user_id ) ) {
[774] Fix | Delete
$caps[] = 'do_not_allow';
[775] Fix | Delete
} else {
[776] Fix | Delete
$caps[] = 'update_core';
[777] Fix | Delete
}
[778] Fix | Delete
break;
[779] Fix | Delete
case 'update_https':
[780] Fix | Delete
if ( is_multisite() && ! is_super_admin( $user_id ) ) {
[781] Fix | Delete
$caps[] = 'do_not_allow';
[782] Fix | Delete
} else {
[783] Fix | Delete
$caps[] = 'manage_options';
[784] Fix | Delete
$caps[] = 'update_core';
[785] Fix | Delete
}
[786] Fix | Delete
break;
[787] Fix | Delete
case 'export_others_personal_data':
[788] Fix | Delete
case 'erase_others_personal_data':
[789] Fix | Delete
case 'manage_privacy_options':
[790] Fix | Delete
$caps[] = is_multisite() ? 'manage_network' : 'manage_options';
[791] Fix | Delete
break;
[792] Fix | Delete
case 'create_app_password':
[793] Fix | Delete
case 'list_app_passwords':
[794] Fix | Delete
case 'read_app_password':
[795] Fix | Delete
case 'edit_app_password':
[796] Fix | Delete
case 'delete_app_passwords':
[797] Fix | Delete
case 'delete_app_password':
[798] Fix | Delete
$caps = map_meta_cap( 'edit_user', $user_id, $args[0] );
[799] Fix | Delete
break;
[800] Fix | Delete
default:
[801] Fix | Delete
// Handle meta capabilities for custom post types.
[802] Fix | Delete
global $post_type_meta_caps;
[803] Fix | Delete
if ( isset( $post_type_meta_caps[ $cap ] ) ) {
[804] Fix | Delete
return map_meta_cap( $post_type_meta_caps[ $cap ], $user_id, ...$args );
[805] Fix | Delete
}
[806] Fix | Delete
[807] Fix | Delete
// Block capabilities map to their post equivalent.
[808] Fix | Delete
$block_caps = array(
[809] Fix | Delete
'edit_blocks',
[810] Fix | Delete
'edit_others_blocks',
[811] Fix | Delete
'publish_blocks',
[812] Fix | Delete
'read_private_blocks',
[813] Fix | Delete
'delete_blocks',
[814] Fix | Delete
'delete_private_blocks',
[815] Fix | Delete
'delete_published_blocks',
[816] Fix | Delete
'delete_others_blocks',
[817] Fix | Delete
'edit_private_blocks',
[818] Fix | Delete
'edit_published_blocks',
[819] Fix | Delete
);
[820] Fix | Delete
if ( in_array( $cap, $block_caps, true ) ) {
[821] Fix | Delete
$cap = str_replace( '_blocks', '_posts', $cap );
[822] Fix | Delete
}
[823] Fix | Delete
[824] Fix | Delete
// If no meta caps match, return the original cap.
[825] Fix | Delete
$caps[] = $cap;
[826] Fix | Delete
}
[827] Fix | Delete
[828] Fix | Delete
/**
[829] Fix | Delete
* Filters the primitive capabilities required of the given user to satisfy the
[830] Fix | Delete
* capability being checked.
[831] Fix | Delete
*
[832] Fix | Delete
* @since 2.8.0
[833] Fix | Delete
*
[834] Fix | Delete
* @param string[] $caps Primitive capabilities required of the user.
[835] Fix | Delete
* @param string $cap Capability being checked.
[836] Fix | Delete
* @param int $user_id The user ID.
[837] Fix | Delete
* @param array $args Adds context to the capability check, typically
[838] Fix | Delete
* starting with an object ID.
[839] Fix | Delete
*/
[840] Fix | Delete
return apply_filters( 'map_meta_cap', $caps, $cap, $user_id, $args );
[841] Fix | Delete
}
[842] Fix | Delete
[843] Fix | Delete
/**
[844] Fix | Delete
* Returns whether the current user has the specified capability.
[845] Fix | Delete
*
[846] Fix | Delete
* This function also accepts an ID of an object to check against if the capability is a meta capability. Meta
[847] Fix | Delete
* capabilities such as `edit_post` and `edit_user` are capabilities used by the `map_meta_cap()` function to
[848] Fix | Delete
* map to primitive capabilities that a user or role has, such as `edit_posts` and `edit_others_posts`.
[849] Fix | Delete
*
[850] Fix | Delete
* Example usage:
[851] Fix | Delete
*
[852] Fix | Delete
* current_user_can( 'edit_posts' );
[853] Fix | Delete
* current_user_can( 'edit_post', $post->ID );
[854] Fix | Delete
* current_user_can( 'edit_post_meta', $post->ID, $meta_key );
[855] Fix | Delete
*
[856] Fix | Delete
* While checking against particular roles in place of a capability is supported
[857] Fix | Delete
* in part, this practice is discouraged as it may produce unreliable results.
[858] Fix | Delete
*
[859] Fix | Delete
* Note: Will always return true if the current user is a super admin, unless specifically denied.
[860] Fix | Delete
*
[861] Fix | Delete
* @since 2.0.0
[862] Fix | Delete
* @since 5.3.0 Formalized the existing and already documented `...$args` parameter
[863] Fix | Delete
* by adding it to the function signature.
[864] Fix | Delete
* @since 5.8.0 Converted to wrapper for the user_can() function.
[865] Fix | Delete
*
[866] Fix | Delete
* @see WP_User::has_cap()
[867] Fix | Delete
* @see map_meta_cap()
[868] Fix | Delete
*
[869] Fix | Delete
* @param string $capability Capability name.
[870] Fix | Delete
* @param mixed ...$args Optional further parameters, typically starting with an object ID.
[871] Fix | Delete
* @return bool Whether the current user has the given capability. If `$capability` is a meta cap and `$object_id` is
[872] Fix | Delete
* passed, whether the current user has the given meta capability for the given object.
[873] Fix | Delete
*/
[874] Fix | Delete
function current_user_can( $capability, ...$args ) {
[875] Fix | Delete
return user_can( wp_get_current_user(), $capability, ...$args );
[876] Fix | Delete
}
[877] Fix | Delete
[878] Fix | Delete
/**
[879] Fix | Delete
* Returns whether the current user has the specified capability for a given site.
[880] Fix | Delete
*
[881] Fix | Delete
* This function also accepts an ID of an object to check against if the capability is a meta capability. Meta
[882] Fix | Delete
* capabilities such as `edit_post` and `edit_user` are capabilities used by the `map_meta_cap()` function to
[883] Fix | Delete
* map to primitive capabilities that a user or role has, such as `edit_posts` and `edit_others_posts`.
[884] Fix | Delete
*
[885] Fix | Delete
* Example usage:
[886] Fix | Delete
*
[887] Fix | Delete
* current_user_can_for_blog( $blog_id, 'edit_posts' );
[888] Fix | Delete
* current_user_can_for_blog( $blog_id, 'edit_post', $post->ID );
[889] Fix | Delete
* current_user_can_for_blog( $blog_id, 'edit_post_meta', $post->ID, $meta_key );
[890] Fix | Delete
*
[891] Fix | Delete
* @since 3.0.0
[892] Fix | Delete
* @since 5.3.0 Formalized the existing and already documented `...$args` parameter
[893] Fix | Delete
* by adding it to the function signature.
[894] Fix | Delete
* @since 5.8.0 Wraps current_user_can() after switching to blog.
[895] Fix | Delete
*
[896] Fix | Delete
* @param int $blog_id Site ID.
[897] Fix | Delete
* @param string $capability Capability name.
[898] Fix | Delete
* @param mixed ...$args Optional further parameters, typically starting with an object ID.
[899] Fix | Delete
* @return bool Whether the user has the given capability.
[900] Fix | Delete
*/
[901] Fix | Delete
function current_user_can_for_blog( $blog_id, $capability, ...$args ) {
[902] Fix | Delete
$switched = is_multisite() ? switch_to_blog( $blog_id ) : false;
[903] Fix | Delete
[904] Fix | Delete
$can = current_user_can( $capability, ...$args );
[905] Fix | Delete
[906] Fix | Delete
if ( $switched ) {
[907] Fix | Delete
restore_current_blog();
[908] Fix | Delete
}
[909] Fix | Delete
[910] Fix | Delete
return $can;
[911] Fix | Delete
}
[912] Fix | Delete
[913] Fix | Delete
/**
[914] Fix | Delete
* Returns whether the author of the supplied post has the specified capability.
[915] Fix | Delete
*
[916] Fix | Delete
* This function also accepts an ID of an object to check against if the capability is a meta capability. Meta
[917] Fix | Delete
* capabilities such as `edit_post` and `edit_user` are capabilities used by the `map_meta_cap()` function to
[918] Fix | Delete
* map to primitive capabilities that a user or role has, such as `edit_posts` and `edit_others_posts`.
[919] Fix | Delete
*
[920] Fix | Delete
* Example usage:
[921] Fix | Delete
*
[922] Fix | Delete
* author_can( $post, 'edit_posts' );
[923] Fix | Delete
* author_can( $post, 'edit_post', $post->ID );
[924] Fix | Delete
* author_can( $post, 'edit_post_meta', $post->ID, $meta_key );
[925] Fix | Delete
*
[926] Fix | Delete
* @since 2.9.0
[927] Fix | Delete
* @since 5.3.0 Formalized the existing and already documented `...$args` parameter
[928] Fix | Delete
* by adding it to the function signature.
[929] Fix | Delete
*
[930] Fix | Delete
* @param int|WP_Post $post Post ID or post object.
[931] Fix | Delete
* @param string $capability Capability name.
[932] Fix | Delete
* @param mixed ...$args Optional further parameters, typically starting with an object ID.
[933] Fix | Delete
* @return bool Whether the post author has the given capability.
[934] Fix | Delete
*/
[935] Fix | Delete
function author_can( $post, $capability, ...$args ) {
[936] Fix | Delete
$post = get_post( $post );
[937] Fix | Delete
if ( ! $post ) {
[938] Fix | Delete
return false;
[939] Fix | Delete
}
[940] Fix | Delete
[941] Fix | Delete
$author = get_userdata( $post->post_author );
[942] Fix | Delete
[943] Fix | Delete
if ( ! $author ) {
[944] Fix | Delete
return false;
[945] Fix | Delete
}
[946] Fix | Delete
[947] Fix | Delete
return $author->has_cap( $capability, ...$args );
[948] Fix | Delete
}
[949] Fix | Delete
[950] Fix | Delete
/**
[951] Fix | Delete
* Returns whether a particular user has the specified capability.
[952] Fix | Delete
*
[953] Fix | Delete
* This function also accepts an ID of an object to check against if the capability is a meta capability. Meta
[954] Fix | Delete
* capabilities such as `edit_post` and `edit_user` are capabilities used by the `map_meta_cap()` function to
[955] Fix | Delete
* map to primitive capabilities that a user or role has, such as `edit_posts` and `edit_others_posts`.
[956] Fix | Delete
*
[957] Fix | Delete
* Example usage:
[958] Fix | Delete
*
[959] Fix | Delete
* user_can( $user->ID, 'edit_posts' );
[960] Fix | Delete
* user_can( $user->ID, 'edit_post', $post->ID );
[961] Fix | Delete
* user_can( $user->ID, 'edit_post_meta', $post->ID, $meta_key );
[962] Fix | Delete
*
[963] Fix | Delete
* @since 3.1.0
[964] Fix | Delete
* @since 5.3.0 Formalized the existing and already documented `...$args` parameter
[965] Fix | Delete
* by adding it to the function signature.
[966] Fix | Delete
*
[967] Fix | Delete
* @param int|WP_User $user User ID or object.
[968] Fix | Delete
* @param string $capability Capability name.
[969] Fix | Delete
* @param mixed ...$args Optional further parameters, typically starting with an object ID.
[970] Fix | Delete
* @return bool Whether the user has the given capability.
[971] Fix | Delete
*/
[972] Fix | Delete
function user_can( $user, $capability, ...$args ) {
[973] Fix | Delete
if ( ! is_object( $user ) ) {
[974] Fix | Delete
$user = get_userdata( $user );
[975] Fix | Delete
}
[976] Fix | Delete
[977] Fix | Delete
if ( empty( $user ) ) {
[978] Fix | Delete
// User is logged out, create anonymous user object.
[979] Fix | Delete
$user = new WP_User( 0 );
[980] Fix | Delete
$user->init( new stdClass() );
[981] Fix | Delete
}
[982] Fix | Delete
[983] Fix | Delete
return $user->has_cap( $capability, ...$args );
[984] Fix | Delete
}
[985] Fix | Delete
[986] Fix | Delete
/**
[987] Fix | Delete
* Retrieves the global WP_Roles instance and instantiates it if necessary.
[988] Fix | Delete
*
[989] Fix | Delete
* @since 4.3.0
[990] Fix | Delete
*
[991] Fix | Delete
* @global WP_Roles $wp_roles WordPress role management object.
[992] Fix | Delete
*
[993] Fix | Delete
* @return WP_Roles WP_Roles global instance if not already instantiated.
[994] Fix | Delete
*/
[995] Fix | Delete
function wp_roles() {
[996] Fix | Delete
global $wp_roles;
[997] Fix | Delete
[998] Fix | Delete
if ( ! isset( $wp_roles ) ) {
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function