diff --git a/owc-activity-log.php b/owc-activity-log.php index 81b1df4..2d4e8c1 100644 --- a/owc-activity-log.php +++ b/owc-activity-log.php @@ -42,6 +42,7 @@ const OWC_ACTIVITY_LOG_SETTINGS_KEY = 'owc_activity_log_settings'; const OWC_ACTIVITY_LOG_CRON_HOOK = 'owc_activity_log_cleanup'; const OWC_ACTIVITY_LOG_DEFAULT_RETENTION_DAYS = 30; +const OWC_ACTIVITY_LOG_SETTINGS_PAGE_CAP = 'manage_options'; require_once __DIR__ . '/src/helpers.php'; require_once __DIR__ . '/src/autoload.php'; diff --git a/src/Controllers/AdminPageController.php b/src/Controllers/AdminPageController.php index c2762dd..ae2c103 100644 --- a/src/Controllers/AdminPageController.php +++ b/src/Controllers/AdminPageController.php @@ -34,7 +34,7 @@ class AdminPageController */ public function render_log(): void { - if ( ! current_user_can( 'manage_options' ) ) { + if ( ! current_user_can( settings_page_cap() ) ) { wp_die( esc_html__( 'You do not have permission to view this page.', 'owc-activity-log' ) ); } @@ -60,7 +60,7 @@ public function render_log(): void */ public function render_settings(): void { - if ( ! current_user_can( 'manage_options' ) ) { + if ( ! current_user_can( settings_page_cap() ) ) { wp_die( esc_html__( 'You do not have permission to view this page.', 'owc-activity-log' ) ); } diff --git a/src/Providers/AdminServiceProvider.php b/src/Providers/AdminServiceProvider.php index 66d3373..f24c01a 100644 --- a/src/Providers/AdminServiceProvider.php +++ b/src/Providers/AdminServiceProvider.php @@ -46,7 +46,7 @@ public function register_menu(): void add_menu_page( __( 'Activity Tracker', 'owc-activity-log' ), __( 'Activity Log', 'owc-activity-log' ), - 'manage_options', + settings_page_cap(), OWC_ACTIVITY_LOG_SLUG, $controller->render_log( ... ), 'dashicons-visibility', @@ -59,7 +59,7 @@ public function register_menu(): void OWC_ACTIVITY_LOG_SLUG, __( 'Activity Log', 'owc-activity-log' ), __( 'Activity Log', 'owc-activity-log' ), - 'manage_options', + settings_page_cap(), OWC_ACTIVITY_LOG_SLUG, '' ); @@ -68,7 +68,7 @@ public function register_menu(): void OWC_ACTIVITY_LOG_SLUG, __( 'Settings', 'owc-activity-log' ), __( 'Settings', 'owc-activity-log' ), - 'manage_options', + settings_page_cap(), OWC_ACTIVITY_LOG_SLUG . '-settings', $controller->render_settings( ... ) ); diff --git a/src/helpers.php b/src/helpers.php index 09c5562..b81ed78 100644 --- a/src/helpers.php +++ b/src/helpers.php @@ -80,3 +80,13 @@ function owc_activity_log_group_enabled( string $group ): bool return in_array( $group, $settings['enabled_groups'], true ); } + +/** + * @since NEXT + */ +function settings_page_cap(): string +{ + $cap = apply_filters( 'owc_activity_log_settings_page_cap', OWC_ACTIVITY_LOG_SETTINGS_PAGE_CAP ); + + return is_string( $cap ) && '' !== trim( $cap ) ? $cap : OWC_ACTIVITY_LOG_SETTINGS_PAGE_CAP; +}