function jbn_img_from_url ($url, $size = 'jbn_half', array $extra = []) {
    if (empty($url)) return '';
    static $cache = [];
    if (!isset($cache[$url])) {
        $id = attachment_url_to_postid($url);
        if (!$id) {
            $stripped = preg_replace('/\.webp$/i', '', $url);
            if ($stripped !== $url) $id = attachment_url_to_postid($stripped);
        }
        $cache[$url] = $id;
    }
    $id = $cache[$url];
    $extra = array_merge(['loading' => 'lazy', 'decoding' => 'async'], $extra);
    if ($id) {
        $tag = wp_get_attachment_image($id, $size, false, $extra);
        if ($tag) return $tag;
    }
    // Fallback — plain <img>
    $attr_html = '';
    foreach ($extra as $k => $v) $attr_html .= ' ' . esc_attr($k) . '="' . esc_attr($v) . '"';
    return '<img src="' . esc_url($url) . '"' . $attr_html . '>';
}
<?xml version="1.0"?>
<oembed><version>1.0</version><provider_name>Jibble</provider_name><provider_url>https://www.testing.devjibble.net/ko</provider_url><author_name>Asim Qureshi</author_name><author_url>https://www.testing.devjibble.net/ko/author/asim</author_url><title>&#xC190;&#xC27D;&#xACE0; &#xAC04;&#xD3B8;&#xD55C; &#xADFC;&#xD0DC;&#xAD00;&#xB9AC; &#xC5F0;&#xB3D9; | &#xCD9C;&#xD1F4;&#xADFC; &#xAD00;&#xB9AC;, &#xD611;&#xC5C5;&#xD234; &#xC5F0;&#xB3D9; Jibble | 2025</title><type>rich</type><width>600</width><height>338</height><html>&lt;blockquote class="wp-embedded-content" data-secret="JP9ZSqUoLA"&gt;&lt;a href="https://www.testing.devjibble.net/ko/%ec%97%b0%eb%8f%99"&gt;&#xC5F0;&#xB3D9;&lt;/a&gt;&lt;/blockquote&gt;&lt;iframe sandbox="allow-scripts" security="restricted" src="https://www.testing.devjibble.net/ko/%ec%97%b0%eb%8f%99/embed#?secret=JP9ZSqUoLA" width="600" height="338" title="&#x201C;&#xC5F0;&#xB3D9;&#x201D; &#x2014; Jibble" data-secret="JP9ZSqUoLA" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" class="wp-embedded-content"&gt;&lt;/iframe&gt;&lt;script type="text/javascript"&gt;
/* &lt;![CDATA[ */
/*! This file is auto-generated */
!function(d,l){"use strict";l.querySelector&amp;&amp;d.addEventListener&amp;&amp;"undefined"!=typeof URL&amp;&amp;(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&amp;&amp;!/[^a-zA-Z0-9]/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret="'+t.secret+'"]'),o=l.querySelectorAll('blockquote[data-secret="'+t.secret+'"]'),c=new RegExp("^https?:$","i"),i=0;i&lt;o.length;i++)o[i].style.display="none";for(i=0;i&lt;a.length;i++)s=a[i],e.source===s.contentWindow&amp;&amp;(s.removeAttribute("style"),"height"===t.message?(1e3&lt;(r=parseInt(t.value,10))?r=1e3:~~r&lt;200&amp;&amp;(r=200),s.height=r):"link"===t.message&amp;&amp;(r=new URL(s.getAttribute("src")),n=new URL(t.value),c.test(n.protocol))&amp;&amp;n.host===r.host&amp;&amp;l.activeElement===s&amp;&amp;(d.top.location.href=t.value))}},d.addEventListener("message",d.wp.receiveEmbedMessage,!1),l.addEventListener("DOMContentLoaded",function(){for(var e,t,s=l.querySelectorAll("iframe.wp-embedded-content"),r=0;r&lt;s.length;r++)(t=(e=s[r]).getAttribute("data-secret"))||(t=Math.random().toString(36).substring(2,12),e.src+="#?secret="+t,e.setAttribute("data-secret",t)),e.contentWindow.postMessage({message:"ready",secret:t},"*")},!1)))}(window,document);
/* ]]&gt; */
&lt;/script&gt;
</html><description>&#xB2E4;&#xC591;&#xD55C; &#xADFC;&#xD0DC;&#xAD00;&#xB9AC; &#xC5F0;&#xB3D9;. &#xD611;&#xC5C5;&#xD234;&#xACFC; &#xD568;&#xAED8; &#xC5C5;&#xBB34; &#xC2DC;&#xAC04;&#xC744; &#xD6A8;&#xC728;&#xC801;&#xC73C;&#xB85C; &#xAD00;&#xB9AC;&#xD558;&#xACE0; &#xBD84;&#xC11D;&#xD574;&#xBCF4;&#xC138;&#xC694;. &#xC9C1;&#xC6D0;&#xB4E4;&#xC758; &#xCD9C;&#xD1F4;&#xADFC; &#xAE30;&#xB85D;&#xC744; &#xC790;&#xB3D9;&#xC73C;&#xB85C; &#xAD00;&#xB9AC;&#xD558;&#xACE0;, &#xC2E4;&#xC2DC;&#xAC04; &#xB370;&#xC774;&#xD130;&#xB97C; &#xD1B5;&#xD574; &#xC791;&#xC5C5; &#xD604;&#xD669;&#xC744; &#xD30C;&#xC545;&#xD558;&#xACE0;, &#xD300;&#xC758; &#xC0DD;&#xC0B0;&#xC131;&#xC744; &#xD55C;&#xCE35; &#xB354; &#xD5A5;&#xC0C1; &#xC2DC;&#xCF1C; &#xBCF4;&#xC138;&#xC694;.</description></oembed>