48

Question

  1. What does the wp-embed.min.js file do? I noticed it is added to the end of my blog page footer.
  2. How can I get rid of it?

Effort

After some googling and I found Embeds on the Codex. Why does WordPress think I want to add videos, etc. to my page by default?

Environment

WordPress 4.4

  • 1
    This is probabli related to wp as oEmbed server and not a client – Mark Kaplun Dec 14 '15 at 5:25
  • I tried to add the answer to the first part of the question – prosti Nov 28 '16 at 19:06
  • 11
    Pretty sure it's just there to slow down your page. – Josh Habdas Apr 17 '17 at 19:36
  • @MarkKaplun is correct. wp-embed.min.js allows you to embed posts from remote WordPress sites into your own WordPress site, via oEmbed. – Jonathan Nicol Nov 15 '17 at 2:47
58

I could finally get rid of that using this:

function my_deregister_scripts(){
  wp_deregister_script( 'wp-embed' );
}
add_action( 'wp_footer', 'my_deregister_scripts' );
  • 4
    Adding it on action "wp_enqueue_scripts", also seems to work. – andershagbard Jan 13 '16 at 16:09
  • 7
    Yes, I'd use the wp_enqueue_scripts hook and wp_dequeue_script() instead of wp_deregister_script() – swissspidy Jan 17 '16 at 20:06
  • @swissspidy wp_dequeue_script( 'wp-embed' ); will not work - can you please run a test? The hood recommendation is valid. – Aziz May 5 '16 at 22:38
  • Under WordPress 4.6 @Trix script works fine. Thank you! – Sebastian Sep 6 '16 at 9:07
  • 1
    Using this wont pass themecheck. – lowtechsun Jun 12 '17 at 10:28
16

I arrived at this thread with the same question: What does the wp-embed.min.js file do? None of the current answers accurately address this question.

Firstly, I am fairly certain that embed.min.js does not relate to embedding oEmbed content from other providers: Vimeo, YouTube etc. You can remove embed.min.js and those embeds will continue to function.

It relates specifically to embeding WordPress posts from other people's blogs/websites. Embedding WordPress posts inside WordPress posts: so meta! This feature was introduced in WordPress 4.4.

Disabling embed.min.js will stop that feature from working on your site.

You can test this easily: Paste the URL of someone else's WordPress post into one of your own posts. WP should convert that URL into an embedded widget. When you view your post on the front-end you will notice that your markup contains a blockquote and an iframe. The blockquote is a text-only link to the blog post you embedded, while the source of the iFrame is the blog post's URL with /embed/ appended: its oEmbed endpoint.

embed.min.js hides the blockquote and reveals the iframe. It also does some other shenanigans to make the iframe play nice.

Now, try removing the embed.min.js script from your page using one of the methods described in the other answers. Reload your page and you'll notice that the blockquote is visible but the iframe is hidden.

In short: if you want to embed other people's WordPress posts into your own WordPress posts, leave embed.min.js alone. If you don't care about this feature then you can safely remove it.

  • 3
    Note that removing embed.js is not enough to properly disable embeds and might even lead to weird behavior if not done right. To completely disable these embeds, use the officially recommended Disable Embeds plugin. – swissspidy Jan 22 '18 at 14:09
  • Working as expected and explained in word-press 5.x as well. – inrsaurabh Mar 9 at 12:30
7

Trix's answer didn't work out for me on WordPress 4.4.1, but I found a solution in the code of Disable Embeds WordPress plugin. Add this code (modified) in your theme's functions.php file to remove the wp-embed.min.js file from the frontend completely:

add_action( 'init', function() {

    // Remove the REST API endpoint.
    remove_action('rest_api_init', 'wp_oembed_register_route');

    // Turn off oEmbed auto discovery.
    // Don't filter oEmbed results.
    remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10);

    // Remove oEmbed discovery links.
    remove_action('wp_head', 'wp_oembed_add_discovery_links');

    // Remove oEmbed-specific JavaScript from the front-end and back-end.
    remove_action('wp_head', 'wp_oembed_add_host_js');
}, PHP_INT_MAX - 1 );
  • 3
    Using disable_embeds_init() as the function name is a really bad idea. If you're going to install the Disable Embeds plugin one day, sky will fall down. I recommend you to just install the plugin, there's no benefit in adding this to your theme's functions.php file. If you insist on doing so, you should really use another function name. – swissspidy Jan 17 '16 at 20:08
  • Thanks for the suggestion @swissspidy, I have updated the function's name – Nadeem Khan Jan 18 '16 at 11:59
  • 2
    Note that this won't just remove the JS from the frontend/backend, it will also completely disable the ability to embed your posts on another site, WP Oembed will not work – Tom J Nowell Nov 4 '16 at 19:37
4

I think this part is still missing.

What does the wp-embed.min.js file do? I noticed it is added to the end of my blog page footer.

The answer to this question is in the track. https://core.trac.wordpress.org/changeset/35708

Embeds: Remove & characters from the inline embed JS.

Older versions of WordPress will convert those & characters to &, which makes for some non-functional JS. If folks are running an older release, let's not make their lives more difficult than it already is.

It will also try to sniff the user agent.

  • 2
    The text you have quoted ("Remove & characters from the inline embed JS" etc.). is a single commit message for the file, but does not describe the overall purpose of the script. I have provided my own answer which hopefully sheds more light. – Jonathan Nicol Nov 15 '17 at 2:23

protected by Community Feb 14 '16 at 15:32

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

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