Working on a new client site that has a lot of YouTube video embeds, I was alarmed this morning to find a stray close paren )
character in all of the posts right after the videos.
Knowing I had recently been tampering with the embed_handler_html
and embed_oembed_html
filters in the site theme, I figured it was something I had created. So I set about debugging my code but couldn’t get anywhere.
I decided to see if it was in fact a new problem in WordPress itself, by setting up a test post on this site with a YouTube video embed (this, of course). Sure enough, even on my unadulterated theme, the stray close paren appears.
I mean, just look at it!!!
Anyway, I hope/assume this will get fixed in the WordPress core soon, but in the meantime if you are running into this problem and want a quick fix, and you’re not afraid of editing the functions.php
file in your theme, have a go at this little addition that will strip out the offending punctuation:
function embed_fix_stray_parens($content) {
return str_replace('</iframe>)','</iframe>',$content);
}
add_filter('the_content','embed_fix_stray_parens');
Update #1: I went to submit a bug report to the WordPress development team and found my report was a duplicate of this one. If I understand correctly, the close paren is actually being delivered by YouTube itself, not WordPress, via the oEmbed request. Isn’t the Internet fun?
Update #2: This really is YouTube’s problem… it even shows up in the embed code you get on their own site:
This issue is also showing up on StackOverflow now, including a more efficient temporary workaround for WordPress sites than my own hasty solution.