未调用WordPress oembed_fetch_url过滤器

时间:2015-01-30 01:28:04

标签: wordpress oembed

我正在开发WP网站。我希望内容能够在内容中显示声音嵌入式播放器。 默认情况下,它会添加查询参数visible-true。我需要的是将其设置为false。所以我尝试了oembed_fetch_url过滤器,但它不是被调用的事件。 我已经搜索了谷歌,甚至在调用此过滤器时也没有任何信息。我试过这只是为了确保它正常工作:

    function soundcloud_url_change($provider, $url, $args) {
        return "somedummyurl.com";
    }
    add_filter('oembed_fetch_url', 'soundcloud_url_change', 10, 3);

网址仍然正确。所以我不知道如何操纵oembed网址。

2 个答案:

答案 0 :(得分:0)

你可能想要挂钩过滤器:     oembed_result

我需要修改youtube嵌入的url并最终使用此块:

function mod_oembed_youtube_url($html,$url,$args){
    if(strpos($html, 'youtu.be') !== false || strpos($html, 'youtube.com') !== false){
        $out = preg_replace("@src=(['\"])?([^'\">\s]*)@", "src=$1$2&rel=0", $html);
        return $out;
    }
    return $html;
}
add_filter('oembed_result','mod_oembed_youtube_url',10,3);

这显然可以提高效率,仅适用于YouTube,但希望可以引导您朝着正确的方向前进。作为参考,oembed_result位于:

/wp-includes/class-oembed.php   Line: 126

答案 1 :(得分:0)

WordPress实际上会缓存获取的结果,所以如果你遇到这个问题,它可能会在它到达过滤器之前short-circuiting,因为它在缓存中找到了标记。 Check out this用于清除oembed缓存,然后查看您的过滤器是否未运行。

话虽如此,YouTube会删除您发送的所有查询变量,因此您需要使用此处列出的其他答案专门用于YouTube嵌入。