get_error_message() ) ); } wp_safe_redirect( $this->get_safe_merchant_redirect_url() ); exit; } /** * Get a safe redirect URL pointing to a Merchant admin page. * * Validates the HTTP referer is a Merchant page. Falls back * to the main Merchant dashboard if the referer is invalid * or points to a non-Merchant page. * * @since 1.9.3 * * @return string Safe redirect URL. */ private function get_safe_merchant_redirect_url() { $fallback_url = admin_url( 'admin.php?page=merchant' ); $referer = wp_get_referer(); $redirect_to = wp_validate_redirect( $referer, $fallback_url ); if ( $redirect_to === $fallback_url ) { return $fallback_url; } $parsed_url = wp_parse_url( $redirect_to ); $query_params = array(); parse_str( $parsed_url['query'] ?? '', $query_params ); if ( empty( $query_params['page'] ) || strpos( $query_params['page'], 'merchant' ) !== 0 ) { return $fallback_url; } return $redirect_to; } } Merchant_Admin_Options::instance(); }