BP_Embed::parse_oembed( int $id, string $url, array $attr, array $rawattr )
Base function so BP components/plugins can parse links to be embedded.
Description
View an example to add support in bp_activity_embed().
on success.
oEmbed failure.
Parameters
- $id
-
(Required) ID to do the caching for.
- $url
-
(Required) The URL attempting to be embedded.
- $attr
-
(Required) Shortcode attributes from WP_Embed::shortcode().
- $rawattr
-
(Required) Untouched shortcode attributes from WP_Embed::shortcode().
Return
(string) The embed HTML on success, otherwise the original URL.
Source
File: bp-core/classes/class-bp-embed.php
public function parse_oembed( $id, $url, $attr, $rawattr ) {
$id = intval( $id );
if ( $id ) {
// Setup the cachekey.
$cachekey = '_oembed_' . md5( $url . serialize( $attr ) );
// Let components / plugins grab their cache.
$cache = '';
/**
* Filters the cache value to be used in the oEmbed, if exists.
*
* @since BuddyPress 1.5.0
*
* @param string $cache Empty initial cache value.
* @param int $id ID that the caching is for.
* @param string $cachekey Key to use for the caching in the database.
* @param string $url The URL attempting to be embedded.
* @param array $attr Parsed shortcode attributes.
* @param array $rawattr Unparsed shortcode attributes.
*/
$cache = apply_filters( 'bp_embed_get_cache', $cache, $id, $cachekey, $url, $attr, $rawattr );
// Grab cache and return it if available.
if ( !empty( $cache ) ) {
/**
* Filters the found cache for the provided URL.
*
* @since BuddyPress 1.5.0
*
* @param string $cache Cached HTML markup for embed.
* @param string $url The URL being embedded.
* @param array $attr Parsed shortcode attributes.
* @param array $rawattr Unparased shortcode attributes.
*/
return apply_filters( 'bp_embed_oembed_html', $cache, $url, $attr, $rawattr );
// If no cache, ping the oEmbed provider and cache the result.
} else {
$html = wp_oembed_get( $url, $attr );
$cache = ( $html ) ? $html : $url;
/**
* Fires if there is no existing cache and triggers cache setting.
*
* Lets components / plugins save their cache.
*
* @since BuddyPress 1.5.0
*
* @param string $cache Newly cached HTML markup for embed.
* @param string $cachekey Key to use for the caching in the database.
* @param int $id ID to do the caching for.
*/
do_action( 'bp_embed_update_cache', $cache, $cachekey, $id );
// If there was a result, return it.
if ( $html ) {
/** This filter is documented in bp-core/classes/class-bp-embed.php */
return apply_filters( 'bp_embed_oembed_html', $html, $url, $attr, $rawattr );
}
}
}
// Still unknown.
return $this->maybe_make_link( $url );
}
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.