{"id":675,"date":"2026-03-26T03:12:58","date_gmt":"2026-03-26T03:12:58","guid":{"rendered":"https:\/\/xn--mnchen-3ya.xyz\/index.php\/2026\/03\/26\/gary-embed-all-the-things\/"},"modified":"2026-03-26T03:12:58","modified_gmt":"2026-03-26T03:12:58","slug":"gary-embed-all-the-things","status":"publish","type":"post","link":"https:\/\/xn--mnchen-3ya.xyz\/index.php\/2026\/03\/26\/gary-embed-all-the-things\/","title":{"rendered":"Gary: Embed All The Things!"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Over 10 years ago, we <a href=\"https:\/\/make.wordpress.org\/core\/2015\/09\/30\/feature-plugin-merge-proposal-oembed\/\">introduced the oEmbed API to WordPress<\/a>, expanding how WordPress handled embedding to cover all WordPress sites. It was an intentional decision to focus on oEmbed at the time: we wanted to focus on the embedding mechanism that would give site owners maximum control over what their embeds looked like. The code we wrote back then still runs on tens of millions of WordPress sites every day.<\/p>\n<p class=\"wp-block-paragraph\">There was something extra that continued to bug me, however. What about all the other sites? oEmbed provides rich embed experiences, but not every site needs that. Sometimes, you just need a card with an image and a description, which is where OpenGraph has similarly stood the test of time. It provides a straightforward method for both site owners to create simple, rich embeds, and for service providers like Slack, Discord, or even Apple Messages to safely create a rich card to place alongside links.<\/p>\n<p class=\"wp-block-paragraph\">WordPress has grown since then, too. The big change is Gutenberg, of course, which really brought forward the idea that the editor should be a rich content experience, that shouldn\u2019t just be reserved for the front end. <\/p>\n<p class=\"wp-block-paragraph\">With that in mind, I build a plugin to handle embedding all the other sites.<\/p>\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-plugin-directory wp-block-embed-plugin-directory has-custom-css wp-custom-css-6d0daac5\">\n<div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\"><p><a href=\"https:\/\/wordpress.org\/plugins\/opengraph-fallback-embed\/\">OpenGraph Fallback Embed<\/a><\/p><\/blockquote>\n<\/div>\n<\/figure>\n<p class=\"wp-block-paragraph\">This is a block plugin that tries to avoid you using the block it provides if at all possible! Instead, it hooks into the end of the Embed block rendering process \u2013 if the URL you pasted couldn\u2019t be embedded all the normal ways, this plugin will try a few more fall back options: OpenGraph, Twitter Card tags, or even just a plain description in the meta tags. It\u2019s the kind of plugin that you can install, and never have to think about again.<\/p>\n<div class=\"wp-block-jetpack-tiled-gallery aligncenter is-style-rectangular\">\n<div class=\"\">\n<div class=\"tiled-gallery__gallery\">\n<div class=\"tiled-gallery__row\">\n<div class=\"tiled-gallery__col\">\n<figure class=\"tiled-gallery__item\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/i0.wp.com\/pento.net\/wp-content\/uploads\/2026\/03\/screenshot-3-1008x1024.png?ssl=1\" \/><\/figure>\n<\/div>\n<div class=\"tiled-gallery__col\">\n<figure class=\"tiled-gallery__item\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/i0.wp.com\/pento.net\/wp-content\/uploads\/2026\/03\/screenshot-1-1008x1024.png?ssl=1\" \/><\/figure>\n<figure class=\"tiled-gallery__item\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/i0.wp.com\/pento.net\/wp-content\/uploads\/2026\/03\/screenshot-2-1008x1024.png?ssl=1\" \/><\/figure>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p class=\"wp-block-paragraph\">One of the nicest things about WordPress is how pluggable it is. Even as a long time WordPress Core developer, I don\u2019t think everything needs to land in Core, sometimes a feature can live as handy little plugin. If you like everything just magically embedding, give this plugin a try!<\/p>","protected":false},"excerpt":{"rendered":"<p>Over 10 years ago, we introduced the oEmbed API to WordPress, expanding how WordPress handled embedding to cover all WordPress sites. It was an intentional decision to focus on oEmbed at the time: we wanted to focus on the embedding mechanism that would give site owners maximum control over what their embeds looked like. The [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":676,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-675","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/xn--mnchen-3ya.xyz\/index.php\/wp-json\/wp\/v2\/posts\/675","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/xn--mnchen-3ya.xyz\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/xn--mnchen-3ya.xyz\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/xn--mnchen-3ya.xyz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/xn--mnchen-3ya.xyz\/index.php\/wp-json\/wp\/v2\/comments?post=675"}],"version-history":[{"count":0,"href":"https:\/\/xn--mnchen-3ya.xyz\/index.php\/wp-json\/wp\/v2\/posts\/675\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/xn--mnchen-3ya.xyz\/index.php\/wp-json\/wp\/v2\/media\/676"}],"wp:attachment":[{"href":"https:\/\/xn--mnchen-3ya.xyz\/index.php\/wp-json\/wp\/v2\/media?parent=675"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/xn--mnchen-3ya.xyz\/index.php\/wp-json\/wp\/v2\/categories?post=675"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/xn--mnchen-3ya.xyz\/index.php\/wp-json\/wp\/v2\/tags?post=675"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}