WordPress Version: 9.3
/**
* Filters the oEmbed result before any HTTP requests are made.
*
* If the URL belongs to the current site, the result is fetched directly instead of
* going through the oEmbed discovery process.
*
* @since 4.5.3
*
* @param null|string $result The UNSANITIZED (and potentially unsafe) HTML that should be used to embed. Default null.
* @param string $url The URL that should be inspected for discovery `<link>` tags.
* @param array $args oEmbed remote get arguments.
* @return null|string The UNSANITIZED (and potentially unsafe) HTML that should be used to embed.
* Null if the URL does not belong to the current site.
*/
function wp_filter_pre_oembed_result($result, $url, $args)
{
$switched_blog = false;
if (is_multisite()) {
$url_parts = wp_parse_args(wp_parse_url($url), array('host' => '', 'path' => '/'));
$qv = array('domain' => $url_parts['host'], 'path' => '/');
// In case of subdirectory configs, set the path.
if (!is_subdomain_install()) {
$path = explode('/', ltrim($url_parts['path'], '/'));
$path = reset($path);
if ($path) {
$qv['path'] = get_network()->path . $path . '/';
}
}
$sites = get_sites($qv);
$site = reset($sites);
if ($site && (int) $site->blog_id !== get_current_blog_id()) {
switch_to_blog($site->blog_id);
$switched_blog = true;
}
}
$post_id = url_to_postid($url);
/** This filter is documented in wp-includes/class-wp-oembed-controller.php */
$post_id = apply_filters('oembed_request_post_id', $post_id, $url);
if (!$post_id) {
if ($switched_blog) {
restore_current_blog();
}
return $result;
}
$width = isset($args['width']) ? $args['width'] : 0;
$data = get_oembed_response_data($post_id, $width);
$data = _wp_oembed_get_object()->data2html((object) $data, $url);
if ($switched_blog) {
restore_current_blog();
}
if (!$data) {
return $result;
}
return $data;
}