函数文档

wp_is_rest_endpoint()

💡 云策文档标注

概述

wp_is_rest_endpoint() 函数用于检查当前是否正在处理 REST API 端点请求,包括独立请求或常规页面加载中的内部请求。

关键要点

  • 返回布尔值:true 表示正在处理 REST 端点请求,false 表示否。
  • 支持过滤器 wp_is_rest_endpoint,允许开发者自定义判断逻辑。
  • 内部通过 wp_is_serving_rest_request() 和 WP_REST_Server::is_dispatching() 实现检查。

代码示例

function wp_is_rest_endpoint() {
	/* @var WP_REST_Server $wp_rest_server */
	global $wp_rest_server;

	// Check whether this is a standalone REST request.
	$is_rest_endpoint = wp_is_serving_rest_request();
	if ( ! $is_rest_endpoint ) {
		// Otherwise, check whether an internal REST request is currently being handled.
		$is_rest_endpoint = isset( $wp_rest_server )
			&& $wp_rest_server->is_dispatching();
	}

	/**
	 * Filters whether a REST endpoint request is currently being handled.
	 *
	 * This may be a standalone REST API request, or an internal request dispatched from within a regular page load.
	 *
	 * @since 6.5.0
	 *
	 * @param bool $is_request_endpoint Whether a REST endpoint request is currently being handled.
	 */
	return (bool) apply_filters( 'wp_is_rest_endpoint', $is_rest_endpoint );
}

注意事项

  • 该函数在 WordPress 6.5.0 版本中引入。
  • 相关函数包括 wp_is_serving_rest_request() 和 WP_REST_Server::is_dispatching()。
  • 常用于条件加载资源,如块样式或字体处理。

📄 原文内容

Checks whether a REST API endpoint request is currently being handled.

Description

This may be a standalone REST API request, or an internal request dispatched from within a regular page load.

Return

bool True if a REST endpoint request is currently being handled, false otherwise.

Source

function wp_is_rest_endpoint() {
	/* @var WP_REST_Server $wp_rest_server */
	global $wp_rest_server;

	// Check whether this is a standalone REST request.
	$is_rest_endpoint = wp_is_serving_rest_request();
	if ( ! $is_rest_endpoint ) {
		// Otherwise, check whether an internal REST request is currently being handled.
		$is_rest_endpoint = isset( $wp_rest_server )
			&& $wp_rest_server->is_dispatching();
	}

	/**
	 * Filters whether a REST endpoint request is currently being handled.
	 *
	 * This may be a standalone REST API request, or an internal request dispatched from within a regular page load.
	 *
	 * @since 6.5.0
	 *
	 * @param bool $is_request_endpoint Whether a REST endpoint request is currently being handled.
	 */
	return (bool) apply_filters( 'wp_is_rest_endpoint', $is_rest_endpoint );
}

Hooks

apply_filters( ‘wp_is_rest_endpoint’, bool $is_request_endpoint )

Filters whether a REST endpoint request is currently being handled.

Changelog

Version Description
6.5.0 Introduced.