2

我正在尝试将参数添加到通过 Wordpress 的 oembed 嵌入的 vimeo 视频中。我已经使用下面的代码为 youtube 视频做到了这一点。我在functions.php中使用了这个函数,它就像一个魅力。我已经编辑了代码来为 Vimeo 视频做同样的事情,但我似乎无法让它工作。

这是我的代码:

function Oembed_vimeo_no_title($html,$url,$args){

// Only run this for vimeo embeds
if ( !strstr($url, 'vimeo.com') )
    return $html;

$url_string = parse_url($url, PHP_URL_QUERY);
parse_str($url_string, $id);
if (isset($id['v'])) {
    return '<div id="video_full_width"><iframe width="100%" height="394" src="//player.vimeo.com/video/'.$id['v'].'?title=0&amp;byline=0&amp;portrait=0" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen ></iframe></div>';
}
return $html;
}
add_filter('oembed_result','Oembed_vimeo_no_title',10,3);

关于我做错了什么有什么建议吗?

4

1 回答 1

0

我发现更好的方法是在oembed_fetch_url过滤器挂钩上,如下所示:

<?php
/**
 * Add parameters to embed
 *
 * @src https://foxland.fi/adding-parameters-to-wordpress-oembed/
 * @src https://github.com/WordPress/WordPress/blob/ec417a34a7ce0d10a998b7eb6d50d7ba6291d94d/wp-includes/class-oembed.php#L553
 * @src https://developer.vimeo.com/api/oembed/videos
 *
 * Use it like this: `[embed autoplay="true"]https://vimeo.com/190063150[/embed]`
 */
$allowed_args = ['autoplay'];

function koa_oembed_args($provider, $url, $args) {
    global $allowed_args;

    $filtered_args = array_filter(
        $args,
        function ($key) use ($allowed_args) {
            return in_array($key, $allowed_args);
        },
        ARRAY_FILTER_USE_KEY
    );

    foreach ($filtered_args as $key => $value) {
        $provider = add_query_arg($key, $value, $provider);
    }

    return $provider;
}

add_filter('oembed_fetch_url', 'koa_oembed_args', 10, 3);

我的其他答案中的更多详细信息:https ://stackoverflow.com/a/55053642/799327

于 2019-03-07T22:22:50.867 回答