1

I have a function that gets the first oembed in the post. I got the code from this related post.

add_filter('embed_oembed_html', 'my_function',10,4);
function my_function( $cache, $url, $attr, $post_ID ) {
  global $my_previous_post_id;
  if ($my_previous_post_id != $post_ID) {
    // post ID changed, so this is the first oembed for the post
    // do something with $url
    $my_previous_post_id = $post_ID;
  }
  return $cache; // it's important that you return the $cache value as-is
}

How can I get the first oembed from a post and make it a global variable? If that is not possible can we make the oembed url as post meta in order to access the first oembed anywhere?

I need to be able to access the first oembed in a loop within my shortcode.

You can get the first image in in a post (featured image) through a function:

the_post_thumbnail();

You can get the first oembed in a post by:

???

@Otto wrote how to get the first oembed but how can we access it?

  • What is the global used for? – s_ha_dum Jun 3 '15 at 13:35
  • <?php function my_shortcode() { ob_start(); ?> <!-- Anything found here will be returned when called in a shortcode [my-shortcode] --> <?php return ob_get_clean(); } add_shortcode('my-shortcode', 'my_shortcode'); – Samuel Elh Jun 3 '15 at 13:37
  • I am using ob_start() and ob_get_clean(); with my my custom shortcode to prevent it from hoisting to the top in the wp editor; I know about that already. – jkcoding Jun 3 '15 at 13:39
  • @s-ha-dum I am trying to access the first oembed from a post to use in a for each loop in my shortcode. – jkcoding Jun 3 '15 at 13:44
  • I am still not clear about the global. It isn't that WordPress "doesn't like them" exactly. It is that they are messy and very rarely actually necessary. But nonetheless, you set global $embedCode but you don't use it anywhere. I think you are going about this wrong but I am trying to get at the complete sequence of events, the complete logic. Can you sketch the logic from start to finish in words? – s_ha_dum Jun 3 '15 at 14:22
3

Since WordPress 3.6+

There is a function to print out all the media in the content.

get_media_embedded_in_content();

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.