BP_Core_oEmbed_Extension::oembed_xml_request( bool $served, WP_HTTP_ResponseInterface $result, WP_REST_Request $request, WP_REST_Server $server )

If oEmbed request wants XML, return XML instead of JSON.


Description Description

Basically a copy of _oembed_rest_pre_serve_request(). Unfortunate that we have to duplicate this just for a URL check.


Parameters Parameters

$served

(Required) Whether the request has already been served.

$result

(Required) Result to send to the client. Usually a WP_REST_Response.

$request

(Required) Request used to generate the response.

$server

(Required) Server instance.


Top ↑

Return Return

(bool)


Top ↑

Source Source

File: bp-core/classes/class-bp-core-oembed-extension.php

	public function oembed_xml_request( $served, $result, $request, $server ) {
		$params = $request->get_params();

		if ( ! isset( $params['format'] ) || 'xml' !== $params['format'] ) {
			return $served;
		}

		// Validate URL against our oEmbed endpoint. If not valid, bail.
		// This is our mod to _oembed_rest_pre_serve_request().
		$query_params = $request->get_query_params();
		if ( false === $this->validate_url_to_item_id( $query_params['url'] ) ) {
			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;
	}

Top ↑

Changelog Changelog

Changelog
Version Description
2.6.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

You must log in before being able to contribute a note or feedback.