self::CAPABILITY ); } } /** * @return list */ public function allowedRoles(): array { $roles = get_option(self::OPTION, self::DEFAULT_ROLES); if (! is_array($roles)) { $roles = self::DEFAULT_ROLES; } $roles = apply_filters('lit_mcp_allowed_roles', $roles); if (! is_array($roles)) { $roles = self::DEFAULT_ROLES; } return array_values(array_filter($roles, 'is_string')); } /** * @param array $allcaps * @param list $caps * @param array $args * @return array */ public function grantCapability( array $allcaps, array $caps, array $args, WP_User $user ): array { if (! in_array(self::CAPABILITY, $caps, true)) { return $allcaps; } if (array_intersect($user->roles, $this->allowedRoles()) !== []) { $allcaps[self::CAPABILITY] = true; } return $allcaps; } public static function currentUserMayUse(): bool { return current_user_can(self::CAPABILITY); } }