PHP, Wordpress

Removing “Related YouTube Videos” From WordPress oEmbeds

At work the other day, I needed to remove the related section that appears at the end of a YouTube video. (See photo below) YT lets you do this by appending &rel=0 to the video URL, but unfortunately, WordPress strips this with its auto-embedder.

Never Gonna Give You Up Related Videos

I researched WP’s embed hooks and stumbled upon two: embed_oembed_html and oembed_result. These hooks are similar in that they both affect the output of embedded HTML. The difference is that oembed_result only gets called once and embed_oembed_html gets called every time the link is embedded. (WordPress caches the generated HTML.)

I recommend oembed_result but in my case, W3 Total Cache was affecting the output of the embed so I had to use embed_oembed_html.


Link Shorteners and a Call to Action

Some of you may know that I have a domain I use for link shortening: If you hit up the domain root, it redirects you to my blog. But if you go to a shortened URL, such as, it will redirect you to the proper page. I set this up using YOURLS because it seemed like the easiest way to get the domain up and running.

What you probably don’t know is that I have another domain that’s run off the same database. In any normal scenario, you’d probably want to split your databases on a per-service basis, i.e. separate personal from work, which is what this other project is. The reason I serve the same content is because I don’t shorten enough links to require two separate databases. And nobody can see the database anyway, so it doesn’t matter.

To achieve this, I symbolically link the work domain to Coincidentally, /www is also a symbolic link.

My vhost paths are strange, but they get the job done. The actual path for this domain is /var/www/ but that’s a different blog post.

/www/ looks like this:

And then nginx handles rewrites for any “directory.” If the path isn’t a directory (!-d) and it isn’t a file (!-f), then it rewrites to the YOURLS script. Note: this can be handled with one step using !-e.

YOURLS isn’t bad. In fact, it’s actually pretty cool. It records how many clicks links get, has a stats page with graphs for hits and traffic location, and there’s even a nifty plugin to make it produce links similar in format to other services, such as “pe4es” instead of “23,” the default format.

…What’s the problem?

While YOURLS is a pretty decent link shortener, there’s something about it not being mine that I don’t really know how to explain. Essentially, I think there are some improvements that could be made (both programmatically and aesthetically), so I might as well just write my own.

YOURLS follows what I would call a “Web 2.0” approach, a term which I think should have been shot before it was even incepted. Clients always say, “This design isn’t ‘Web 2.0’ enough.” or “Yeah, this is good, but can you make it more… ‘Web 2.0’?” These clients don’t even understand what “Web 2.0” is, they’re just trying to sound savvy and keep up with the latest “trends.” If crappy gradients / color schemes, extremely rounded corners, and ill-fitting typography is what it takes to fit in, then I want to be as far away from conformity as possible.

I digress. The YOURLS code is messy in my opinion. Understandably so, as I don’t think the project was originally intended to be as big as it is. But still another reason that it will be easier for me to start from scratch. I prefer an object-oriented approach. Plus, this way, I’ll be able to easily integrate the new system with my new CMS I’m working on… but that’s another blog post.

The “Call to Action”?

The world doesn’t have enough URL shorteners. So I’m going to create another. Most likely a PHP / Redis approach, because I’m looking for my first project using Redis. But it could easily end up a PHP / SQL project as well. It really depends on how my experiments with Redis go. (I’m not extremely fond of the idea of everything being in memory; I’m really just looking for a NoSQL approach.) It will have to have an import feature, though, so I can copy all of my YOURLS links into the new system. And some sort of API for plugin creation. I’d also like some sort of module-esque system (plugins) to enable features like public URL submits, a user system, etc.

Closing Irony

Some of you reading this clicked the short link, which is currently produced with YOURLS.