rest_preload_api_request
函数
rest_preload_api_request ( $memo, $path )
- 参数
-
-
(array)
$memo
Reduce accumulator.- Required: 是
-
(string)
$path
REST API path to preload.- Required: 是
-
(array)
- 返回值
-
- (array) Modified reduce accumulator.
- 定义位置
-
-
wp-includes/rest-api.php
, line 2847
-
wp-includes/rest-api.php
- 引入
- 5.0.0
- 弃用
- –
将内部请求的结果附加到REST API上,以便预先加载数据,附加到页面上。
预计将在`array_reduce`的背景下调用。
function rest_preload_api_request( $memo, $path ) {
// array_reduce() doesn't support passing an array in PHP 5.2,
// so we need to make sure we start with one.
if ( ! is_array( $memo ) ) {
$memo = array();
}
if ( empty( $path ) ) {
return $memo;
}
$method = 'GET';
if ( is_array( $path ) && 2 === count( $path ) ) {
$method = end( $path );
$path = reset( $path );
if ( ! in_array( $method, array( 'GET', 'OPTIONS' ), true ) ) {
$method = 'GET';
}
}
$path = untrailingslashit( $path );
if ( empty( $path ) ) {
$path = '/';
}
$path_parts = parse_url( $path );
if ( false === $path_parts ) {
return $memo;
}
$request = new WP_REST_Request( $method, $path_parts['path'] );
if ( ! empty( $path_parts['query'] ) ) {
parse_str( $path_parts['query'], $query_params );
$request->set_query_params( $query_params );
}
$response = rest_do_request( $request );
if ( 200 === $response->status ) {
$server = rest_get_server();
/** This filter is documented in wp-includes/rest-api/class-wp-rest-server.php */
$response = apply_filters( 'rest_post_dispatch', rest_ensure_response( $response ), $server, $request );
$embed = $request->has_param( '_embed' ) ? rest_parse_embed_param( $request['_embed'] ) : false;
$data = (array) $server->response_to_data( $response, $embed );
if ( 'OPTIONS' === $method ) {
$memo[ $method ][ $path ] = array(
'body' => $data,
'headers' => $response->headers,
);
} else {
$memo[ $path ] = array(
'body' => $data,
'headers' => $response->headers,
);
}
}
return $memo;
}
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。


