函数文档

wp_check_browser_version()

💡 云策文档标注

概述

wp_check_browser_version() 函数用于检查用户是否需要更新浏览器,通过 HTTP_USER_AGENT 发送请求到 WordPress API 获取浏览器信息。成功时返回包含浏览器数据的数组,失败时返回 false。

关键要点

  • 函数检查用户代理字符串,若为空则直接返回 false。
  • 使用站点瞬态缓存 API 响应以提高性能,缓存键基于用户代理的 MD5 哈希。
  • 通过 wp_remote_post() 向 https://api.wordpress.org/core/browse-happy/1.1/ 发送 POST 请求获取浏览器数据。
  • 响应包含平台、浏览器名称、版本、是否需要升级、是否不安全等字段。
  • 函数在 WordPress 3.2.0 版本中引入,主要用于仪表盘浏览器更新提示。

代码示例

function wp_check_browser_version() {
    if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) {
        return false;
    }

    $key = md5( $_SERVER['HTTP_USER_AGENT'] );
    $response = get_site_transient( 'browser_' . $key );

    if ( false === $response ) {
        $url     = 'https://api.wordpress.org/core/browse-happy/1.1/';
        $options = array(
            'body'       => array( 'useragent' => $_SERVER['HTTP_USER_AGENT'] ),
            'user-agent' => 'WordPress/' . wp_get_wp_version() . '; ' . home_url( '/' ),
        );

        if ( wp_http_supports( array( 'ssl' ) ) ) {
            $url = set_url_scheme( $url, 'https' );
        }

        $response = wp_remote_post( $url, $options );

        if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) {
            return false;
        }

        $response = json_decode( wp_remote_retrieve_body( $response ), true );

        if ( ! is_array( $response ) ) {
            return false;
        }

        set_site_transient( 'browser_' . $key, $response, WEEK_IN_SECONDS );
    }

    return $response;
}

注意事项

  • 函数依赖于外部 API,网络问题或 API 变更可能导致失败。
  • 缓存时间为 WEEK_IN_SECONDS(一周),确保数据及时更新。
  • 主要用于后台仪表盘功能,如 wp_dashboard_browser_nag()。

📄 原文内容

Checks if the user needs a browser update.

Return

array|false Array of browser data on success, false on failure.

Source

function wp_check_browser_version() {
	if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) {
		return false;
	}

	$key = md5( $_SERVER['HTTP_USER_AGENT'] );

	$response = get_site_transient( 'browser_' . $key );

	if ( false === $response ) {
		$url     = 'https://api.wordpress.org/core/browse-happy/1.1/';
		$options = array(
			'body'       => array( 'useragent' => $_SERVER['HTTP_USER_AGENT'] ),
			'user-agent' => 'WordPress/' . wp_get_wp_version() . '; ' . home_url( '/' ),
		);

		if ( wp_http_supports( array( 'ssl' ) ) ) {
			$url = set_url_scheme( $url, 'https' );
		}

		$response = wp_remote_post( $url, $options );

		if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) {
			return false;
		}

		/**
		 * Response should be an array with:
		 *  'platform' - string - A user-friendly platform name, if it can be determined
		 *  'name' - string - A user-friendly browser name
		 *  'version' - string - The version of the browser the user is using
		 *  'current_version' - string - The most recent version of the browser
		 *  'upgrade' - boolean - Whether the browser needs an upgrade
		 *  'insecure' - boolean - Whether the browser is deemed insecure
		 *  'update_url' - string - The url to visit to upgrade
		 *  'img_src' - string - An image representing the browser
		 *  'img_src_ssl' - string - An image (over SSL) representing the browser
		 */
		$response = json_decode( wp_remote_retrieve_body( $response ), true );

		if ( ! is_array( $response ) ) {
			return false;
		}

		set_site_transient( 'browser_' . $key, $response, WEEK_IN_SECONDS );
	}

	return $response;
}

Changelog

Version Description
3.2.0 Introduced.