_oembed_rest_pre_serve_request()
Hooks into the REST API output to print XML instead of JSON.
This is only done for the oEmbed API endpoint, which supports both formats.
Internal function — this function is designed to be used by the kernel itself. It is not recommended to use this function in your code.
No Hooks.
Returns
bool. True if the request was served, false otherwise.
Usage
_oembed_rest_pre_serve_request( $served, $result, $request, $server );
- $served(true|false) (required)
- Whether the request has already been served.
- $result(WP_HTTP_Response) (required)
- Result to send to the client. Usually a
WP_REST_Response. - $request(WP_REST_Request) (required)
- Request used to generate the response.
- $server(WP_REST_Server) (required)
- Server instance.
Changelog
| Since 4.4.0 | Introduced. |
_oembed_rest_pre_serve_request() oembed rest pre serve request code WP 7.1.2
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 );
die( get_status_header_desc( 501 ) );
}
if ( ! headers_sent() ) {
$server->send_header( 'Content-Type', 'text/xml; charset=' . get_option( 'blog_charset' ) );
}
echo $result;
return true;
}