挂钩到REST API输出以打印XML而不是JSON。

原型

_oembed_rest_pre_serve_request( bool $served, WP_HTTP_ResponseInterface $result, WP_REST_Request $request, WP_REST_Server $server )

描述

这仅适用于支持两种格式的oEmbed API端点。

参数

$served (bool) (Required) 请求是否已提供。

$result (WP_HTTP_ResponseInterface) (Required) 结果发送给客户端。通常是WP_REST_Response。

$request (WP_REST_Request) (Required) 用于生成响应的请求。

$server (WP_REST_Server) (Required) 服务器实例。

返回值

(true)  

源文件

路径:wp-includes/embed.php

<?php
...
function _oembed_rest_pre_serve_request( $served, $result, $request, $server ) {
	$params = $request->get_params();
	if ( '/oembed/1.0/embed' !== $request->get_route() || 'GET' !== $request->get_method() ) {
		return $served;
	}
	if ( ! isset( $params['format'] ) || 'xml' !== $params['format'] ) {
		return $served;
	}
	// Embed links inside the request.
	$data = $server->response_to_data( $result, false );
	if ( ! class_exists( 'SimpleXMLElement' ) ) {
		status_header( 501 );
		die( get_status_header_desc( 501 ) );
	}
	$result = _oembed_create_xml( $data );
	// Bail if there's no XML.
	if ( ! $result ) {
		status_header( 501 );
		return get_status_header_desc( 501 );
	}
	if ( ! headers_sent() ) {
		$server->send_header( 'Content-Type', 'text/xml; charset=' . get_option( 'blog_charset' ) );
	}
	echo $result;
	return true;
}
...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/_oembed_rest_pre_serve_request/