{"id":5613,"date":"2026-02-12T20:44:55","date_gmt":"2026-02-13T01:44:55","guid":{"rendered":"https:\/\/chubes.net\/?documentation=embed-functions"},"modified":"2026-03-13T03:28:22","modified_gmt":"2026-03-13T07:28:22","slug":"embed-functions","status":"publish","type":"documentation","link":"https:\/\/chubes.net\/docs\/wordpress-core\/embeds\/embed-functions\/","title":{"rendered":"Embed Functions"},"content":{"rendered":"<p>Core functions for embedding content and managing oEmbed providers.<\/p><p><strong>Source:<\/strong> <code>wp-includes\/embed.php<\/code><\/p><h2 class=\"wp-block-heading\">Handler Registration<\/h2><h3 class=\"wp-block-heading\">wp_embed_register_handler()<\/h3><p>Registers a custom embed handler for URLs that don&#8217;t support oEmbed.<\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">wp_embed_register_handler( \n    string $id, \n    string $regex, \n    callable $callback, \n    int $priority = 10 \n): void<\/code><\/pre><\/div><p><strong>Parameters:<\/strong><\/p><ul class=\"wp-block-list\"><li><code>$id<\/code> &#8211; Unique handler identifier<\/li><li><code>$regex<\/code> &#8211; Pattern to match URLs<\/li><li><code>$callback<\/code> &#8211; Function receiving <code>( $matches, $attr, $url, $rawattr )<\/code><\/li><li><code>$priority<\/code> &#8211; Lower runs first (default 10)<\/li><\/ul><p><strong>Example:<\/strong><\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">wp_embed_register_handler(\n    &#039;custom_video&#039;,\n    &#039;#https?:\/\/customvideo.com\/v\/([a-z0-9]+)#i&#039;,\n    function( $matches, $attr, $url, $rawattr ) {\n        return &#039;&lt;iframe src=&quot;https:\/\/customvideo.com\/embed\/&#039; . \n               esc_attr( $matches[1] ) . &#039;&quot;&gt;&lt;\/iframe&gt;&#039;;\n    }\n);<\/code><\/pre><\/div><hr class=\"wp-block-separator\"\/><h3 class=\"wp-block-heading\">wp_embed_unregister_handler()<\/h3><p>Removes a previously registered embed handler.<\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">wp_embed_unregister_handler( string $id, int $priority = 10 ): void<\/code><\/pre><\/div><hr class=\"wp-block-separator\"\/><h2 class=\"wp-block-heading\">Provider Management<\/h2><h3 class=\"wp-block-heading\">wp_oembed_add_provider()<\/h3><p>Adds an oEmbed provider URL pattern.<\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">wp_oembed_add_provider( \n    string $format, \n    string $provider, \n    bool $regex = false \n): void<\/code><\/pre><\/div><p><strong>Parameters:<\/strong><\/p><ul class=\"wp-block-list\"><li><code>$format<\/code> &#8211; URL pattern (wildcards <code>*<\/code> or regex if <code>$regex<\/code> is true)<\/li><li><code>$provider<\/code> &#8211; oEmbed endpoint URL<\/li><li><code>$regex<\/code> &#8211; Whether <code>$format<\/code> is a regex pattern<\/li><\/ul><p><strong>Examples:<\/strong><\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">\/\/ Wildcard format\nwp_oembed_add_provider(\n    &#039;https:\/\/example.com\/video\/*&#039;,\n    &#039;https:\/\/example.com\/oembed&#039;\n);\n\n\/\/ Regex format\nwp_oembed_add_provider(\n    &#039;#https?:\/\/example.com\/(video|audio)\/d+#i&#039;,\n    &#039;https:\/\/example.com\/oembed&#039;,\n    true\n);<\/code><\/pre><\/div><hr class=\"wp-block-separator\"\/><h3 class=\"wp-block-heading\">wp_oembed_remove_provider()<\/h3><p>Removes an oEmbed provider.<\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">wp_oembed_remove_provider( string $format ): bool<\/code><\/pre><\/div><p><strong>Returns:<\/strong> <code>true<\/code> if removed, <code>false<\/code> otherwise.<\/p><hr class=\"wp-block-separator\"\/><h2 class=\"wp-block-heading\">Fetching Embeds<\/h2><h3 class=\"wp-block-heading\">wp_oembed_get()<\/h3><p>Fetches embed HTML for a URL using oEmbed.<\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">wp_oembed_get( string $url, array|string $args = &#039;&#039; ): string|false<\/code><\/pre><\/div><p><strong>Parameters:<\/strong><\/p><ul class=\"wp-block-list\"><li><code>$url<\/code> &#8211; URL to embed<\/li><li><code>$args<\/code> &#8211; Optional arguments:<ul class=\"wp-block-list\"><li><code>width<\/code> &#8211; Maximum width<\/li><li><code>height<\/code> &#8211; Maximum height<\/li><li><code>discover<\/code> &#8211; Whether to attempt discovery (default true)<\/li><\/ul><\/li><\/ul><p><strong>Returns:<\/strong> HTML string or <code>false<\/code> on failure.<\/p><p><strong>Example:<\/strong><\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">$html = wp_oembed_get( \n    &#039;https:\/\/www.youtube.com\/watch?v=dQw4w9WgXcQ&#039;,\n    [ &#039;width&#039; =&gt; 600 ]\n);<\/code><\/pre><\/div><hr class=\"wp-block-separator\"\/><h3 class=\"wp-block-heading\">wp_embed_defaults()<\/h3><p>Gets default embed dimensions based on theme content width.<\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">wp_embed_defaults( string $url = &#039;&#039; ): array<\/code><\/pre><\/div><p><strong>Returns:<\/strong> <code>[ 'width' =&gt; int, 'height' =&gt; int ]<\/code><\/p><p><strong>Logic:<\/strong><\/p><ul class=\"wp-block-list\"><li><code>width<\/code> &#8211; Maximum width<\/li><li><code>height<\/code> &#8211; Maximum height<\/li><li><code>discover<\/code> &#8211; Whether to attempt discovery (default true)<\/li><\/ul><p>Filterable via <code>embed_defaults<\/code>.<\/p><hr class=\"wp-block-separator\"\/><h3 class=\"wp-block-heading\">_wp_oembed_get_object()<\/h3><p>Returns the singleton WP_oEmbed instance.<\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">_wp_oembed_get_object(): WP_oEmbed<\/code><\/pre><\/div><p><strong>Note:<\/strong> Private function, use <code>wp_oembed_get()<\/code> instead.<\/p><hr class=\"wp-block-separator\"\/><h2 class=\"wp-block-heading\">Post Embed URLs<\/h2><h3 class=\"wp-block-heading\">get_post_embed_url()<\/h3><p>Gets the URL to view a post embedded in an iframe.<\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">get_post_embed_url( int|WP_Post $post = null ): string|false<\/code><\/pre><\/div><p><strong>Returns:<\/strong> URL like <code>https:\/\/example.com\/post-slug\/embed\/<\/code><\/p><p><strong>Example:<\/strong><\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">$embed_url = get_post_embed_url( 123 );\n\/\/ https:\/\/example.com\/my-post\/embed\/<\/code><\/pre><\/div><hr class=\"wp-block-separator\"\/><h3 class=\"wp-block-heading\">get_oembed_endpoint_url()<\/h3><p>Gets the oEmbed REST API endpoint URL.<\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">get_oembed_endpoint_url( string $permalink = &#039;&#039;, string $format = &#039;json&#039; ): string<\/code><\/pre><\/div><p><strong>Parameters:<\/strong><\/p><ul class=\"wp-block-list\"><li><code>width<\/code> &#8211; Maximum width<\/li><li><code>height<\/code> &#8211; Maximum height<\/li><li><code>discover<\/code> &#8211; Whether to attempt discovery (default true)<\/li><\/ul><p><strong>Returns:<\/strong> REST endpoint URL with query params.<\/p><p><strong>Example:<\/strong><\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">$endpoint = get_oembed_endpoint_url( get_permalink( 123 ) );\n\/\/ https:\/\/example.com\/wp-json\/oembed\/1.0\/embed?url=...<\/code><\/pre><\/div><hr class=\"wp-block-separator\"\/><h3 class=\"wp-block-heading\">get_post_embed_html()<\/h3><p>Generates the full embed code (iframe + blockquote fallback).<\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">get_post_embed_html( int $width, int $height, int|WP_Post $post = null ): string|false<\/code><\/pre><\/div><p><strong>Returns:<\/strong> Complete embed markup including:<\/p><ul class=\"wp-block-list\"><li>Width: <code>$content_width<\/code> global or 500px<\/li><li>Height: min( width \u00d7 1.5, 1000 )<\/li><\/ul><p><strong>Example:<\/strong><\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">$embed_code = get_post_embed_html( 600, 400, $post );<\/code><\/pre><\/div><hr class=\"wp-block-separator\"\/><h2 class=\"wp-block-heading\">oEmbed Response Data<\/h2><h3 class=\"wp-block-heading\">get_oembed_response_data()<\/h3><p>Builds oEmbed response array for a post.<\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">get_oembed_response_data( WP_Post|int $post, int $width ): array|false<\/code><\/pre><\/div><p><strong>Returns:<\/strong> Array with oEmbed spec fields:<\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">[\n    &#039;version&#039;       =&gt; &#039;1.0&#039;,\n    &#039;provider_name&#039; =&gt; &#039;Site Name&#039;,\n    &#039;provider_url&#039;  =&gt; &#039;https:\/\/example.com&#039;,\n    &#039;author_name&#039;   =&gt; &#039;Display Name&#039;,\n    &#039;author_url&#039;    =&gt; &#039;https:\/\/example.com\/author\/...&#039;,\n    &#039;title&#039;         =&gt; &#039;Post Title&#039;,\n    &#039;type&#039;          =&gt; &#039;link&#039;, \/\/ becomes &#039;rich&#039; after filtering\n]<\/code><\/pre><\/div><p><strong>Validation:<\/strong><\/p><ul class=\"wp-block-list\"><li><code>$permalink<\/code> &#8211; Post URL (empty for base endpoint)<\/li><li><code>$format<\/code> &#8211; &#8216;json&#8217; or &#8216;xml&#8217;<\/li><\/ul><hr class=\"wp-block-separator\"\/><h3 class=\"wp-block-heading\">get_oembed_response_data_rich()<\/h3><p>Filter callback that adds rich embed data.<\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">get_oembed_response_data_rich( \n    array $data, \n    WP_Post $post, \n    int $width, \n    int $height \n): array<\/code><\/pre><\/div><p><strong>Adds:<\/strong><\/p><ul class=\"wp-block-list\"><li><code>&lt;blockquote&gt;<\/code> fallback with link<\/li><li><code>&lt;iframe&gt;<\/code> with sandbox restrictions<\/li><li>Inline JavaScript for communication<\/li><\/ul><hr class=\"wp-block-separator\"\/><h3 class=\"wp-block-heading\">get_oembed_response_data_for_url()<\/h3><p>Gets oEmbed data for a URL (handles multisite).<\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">get_oembed_response_data_for_url( string $url, array $args ): object|false<\/code><\/pre><\/div><p><strong>Multisite handling:<\/strong><\/p><ul class=\"wp-block-list\"><li>Returns <code>false<\/code> if post doesn&#8217;t exist<\/li><li>Returns <code>false<\/code> if not publicly viewable<\/li><li>Returns <code>false<\/code> if post type doesn&#8217;t support embeds<\/li><\/ul><hr class=\"wp-block-separator\"\/><h2 class=\"wp-block-heading\">Format Handling<\/h2><h3 class=\"wp-block-heading\">wp_oembed_ensure_format()<\/h3><p>Validates format parameter.<\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">wp_oembed_ensure_format( string $format ): string<\/code><\/pre><\/div><p><strong>Returns:<\/strong> &#8216;json&#8217; or &#8216;xml&#8217; (defaults to &#8216;json&#8217;).<\/p><hr class=\"wp-block-separator\"\/><h2 class=\"wp-block-heading\">Filtering &amp; Security<\/h2><h3 class=\"wp-block-heading\">wp_filter_oembed_result()<\/h3><p>Sanitizes oEmbed HTML from untrusted providers.<\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">wp_filter_oembed_result( \n    string|false $result, \n    object $data, \n    string $url \n): string|false<\/code><\/pre><\/div><p><strong>Security measures:<\/strong><\/p><ul class=\"wp-block-list\"><li><code>width<\/code>, <code>height<\/code> &#8211; Dimensions<\/li><li><code>type<\/code> &#8211; Changed to &#8216;rich&#8217; (or &#8216;video&#8217; for video attachments)<\/li><li><code>html<\/code> &#8211; Full embed markup<\/li><li><code>thumbnail_url<\/code>, <code>thumbnail_width<\/code>, <code>thumbnail_height<\/code> &#8211; If available<\/li><\/ul><p><strong>Note:<\/strong> Trusted providers (in built-in list) bypass this filter.<\/p><hr class=\"wp-block-separator\"\/><h3 class=\"wp-block-heading\">wp_filter_oembed_iframe_title_attribute()<\/h3><p>Ensures iframes have title attributes for accessibility.<\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">wp_filter_oembed_iframe_title_attribute( \n    string|false $result, \n    object $data, \n    string $url \n): string|false<\/code><\/pre><\/div><hr class=\"wp-block-separator\"\/><h3 class=\"wp-block-heading\">wp_filter_pre_oembed_result()<\/h3><p>Short-circuits oEmbed for local URLs.<\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">wp_filter_pre_oembed_result( \n    null|string $result, \n    string $url, \n    array $args \n): null|string<\/code><\/pre><\/div><p>If URL belongs to current site, fetches embed data directly instead of making HTTP request.<\/p><hr class=\"wp-block-separator\"\/><h2 class=\"wp-block-heading\">Embed Handlers<\/h2><h3 class=\"wp-block-heading\">wp_embed_handler_youtube()<\/h3><p>Handles YouTube embed\/v URLs not parseable by standard oEmbed.<\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">wp_embed_handler_youtube( \n    array $matches, \n    array $attr, \n    string $url, \n    array $rawattr \n): string<\/code><\/pre><\/div><p>Converts <code>youtube.com\/embed\/ID<\/code> to <code>youtube.com\/watch?v=ID<\/code> and processes.<\/p><hr class=\"wp-block-separator\"\/><h3 class=\"wp-block-heading\">wp_embed_handler_audio()<\/h3>","protected":false},"excerpt":{"rendered":"<p>Core functions for embedding content and managing oEmbed providers. Source: wp-includes\/embed.php Handler Registration wp_embed_register_handler() Registers a custom embed handler for URLs that don&#8217;t support oEmbed. wp_embed_register_handler( string $id, string $regex,&#8230;<\/p>\n","protected":false},"featured_media":0,"template":"","meta":{"footnotes":""},"tags":[],"project":[620],"project_type":[749],"class_list":["post-5613","documentation","type-documentation","status-publish","hentry","project-embeds","project_type-wordpress-reference"],"project_info":{"id":589,"name":"WordPress Core","slug":"wordpress-core"},"project_type_info":{"id":749,"name":"WordPress Reference","slug":"wordpress-reference"},"_links":{"self":[{"href":"https:\/\/chubes.net\/wp-json\/wp\/v2\/documentation\/5613","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/chubes.net\/wp-json\/wp\/v2\/documentation"}],"about":[{"href":"https:\/\/chubes.net\/wp-json\/wp\/v2\/types\/documentation"}],"version-history":[{"count":3,"href":"https:\/\/chubes.net\/wp-json\/wp\/v2\/documentation\/5613\/revisions"}],"predecessor-version":[{"id":8913,"href":"https:\/\/chubes.net\/wp-json\/wp\/v2\/documentation\/5613\/revisions\/8913"}],"wp:attachment":[{"href":"https:\/\/chubes.net\/wp-json\/wp\/v2\/media?parent=5613"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chubes.net\/wp-json\/wp\/v2\/tags?post=5613"},{"taxonomy":"project","embeddable":true,"href":"https:\/\/chubes.net\/wp-json\/wp\/v2\/project?post=5613"},{"taxonomy":"project_type","embeddable":true,"href":"https:\/\/chubes.net\/wp-json\/wp\/v2\/project_type?post=5613"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}