*/ public static function term_caps(): array { return [ 'manage_terms' => self::MODERATE, 'edit_terms' => self::MODERATE, 'delete_terms' => self::MODERATE, 'assign_terms' => 'edit_' . RequestPostType::CAPABILITY_TYPE, ]; } /** * Gives administrators every plugin capability and editors everything except settings. */ public static function grant(): void { $grants = [ 'administrator' => array_merge( self::REQUEST_CAPS, [ self::MANAGE_SETTINGS ] ), 'editor' => self::REQUEST_CAPS, ]; foreach ( $grants as $role_name => $caps ) { $role = get_role( $role_name ); if ( ! $role ) { continue; } foreach ( $caps as $cap ) { if ( ! $role->has_cap( $cap ) ) { $role->add_cap( $cap ); } } } } /** * Removes every plugin capability from every role. */ public static function revoke(): void { $caps = array_merge( self::REQUEST_CAPS, [ self::MANAGE_SETTINGS ] ); foreach ( wp_roles()->role_objects as $role ) { foreach ( $caps as $cap ) { if ( $role->has_cap( $cap ) ) { $role->remove_cap( $cap ); } } } } }