组合emed_oemed_html和oembed_Result

时间:2019-11-25 作者:Josh Rodgers

我有两个完全相同的函数,因为它们应用于不同的过滤器。。。有没有办法把它们组合起来,这样我就不用写两遍了?

我的代码:

function embed_oembed($html) {
    if (preg_match(\'/(vimeo.com)/\', $html)) {
        return str_replace(\'<iframe\', \'<iframe class="video"\', $html);
    } else {
        return $html;
    }
}
add_filter(\'embed_oembed_html\', \'embed_oembed\', 99, 4);


function oembed_result($html) {
    if (preg_match(\'/(vimeo.com)/\', $html)) {
        return str_replace(\'<iframe\', \'<iframe class="video"\', $html);
    } else {
        return $html;
    }
}
add_filter(\'oembed_result\', \'oembed_result\', 99, 4);
这是可行的,只是不知道这样做是否正确:

function oembed_class($html) {
    if (preg_match(\'/(vimeo.com)/\', $html)) {
        return str_replace(\'<iframe\', \'<iframe class="video"\', $html);
    } else {
        return $html;
    }
}
add_filter(\'oembed_result\', \'oembed_class\', 99, 4);
add_filter(\'embed_oembed_html\', \'oembed_class\', 99, 4);
谢谢,乔希

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

这是可行的,只是不知道这样做是否正确:

是的,这些函数是相同的,因此它们是等效的。这里没有什么问题。但如果我们再深入一点,我们会发现它们根本不是同一事物的两个过滤器:

  • embed_oembed_html 过滤缓存的oEmbed HTML
  • oembed_result 过滤oEmbed提供程序返回的HTML
Sooembed_result 是在缓存之前首次检索html的时间。embed_oembed_html 是在渲染之前提取缓存的时间。

您可能只需要一个或另一个,确保首先刷新所有缓存/瞬态

相关推荐

在AJAX调用中加载oEmbedded IFRAME

我正在尝试加载通过ajax加载的oembed短代码。问题是,oembed短代码似乎很有效,因为我有一个blockquote而不是instagram链接。但是,blockquote没有被iframe替换。应该有一个javascript函数来搜索blockquotes并用iframe替换它,但它没有被激发,因为我没有加载所有页面?有人知道怎么发射这个吗?谢谢