get_allowed_pages(); if ( $this->is_setting_enabled() ) { /** * Before front end redirection * * Run before the front end redirection * * @since 1.0.0 */ do_action( 'admon_before_front_redirection' ); if ( ! in_array( $GLOBALS['pagenow'], $allowed_pages, true ) && ! defined( 'REST_REQUEST' ) ) { if ( ! is_user_logged_in() || ! current_user_can( 'manage_options' ) ) { wp_redirect( get_option( 'admon_front_end_link' ) ); exit; } } } } /** * Check if the front end protection is enabled * * @since 1.0.0 * * @return bool */ private function is_setting_enabled(): bool { $setting = get_option( 'admon_front_end' ); if ( 'true' === $setting ) { return true; } return false; } /** * Return an array of the slugs of the allowed pages * * @since 1.0.0 * * @return string[] */ private function get_allowed_pages(): array { $allowed_pages = array( 'wp-login.php', 'wp-admin', ); $setting = get_option( 'admon_excluded_pages' ); if ( ! empty( $setting ) ) { $pages = json_decode( $setting ); foreach ( $pages as $page ) { $permalink = get_permalink( $page ); if ( $permalink ) { $allowed_pages[] = $permalink; } } } return $allowed_pages; } } new Front(); }