有没有办法在不使用IFRAME的情况下为YouTube嵌入使用自定义参数?

时间:2012-02-22 作者:Rick Smith

我不想显示我在wordpress网站上嵌入的视频标题。我这样做的方式是使用嵌入链接,在wordpress帖子中插入iframe,并在url的末尾添加自定义参数“showinfo=0”。在我决定改变网站设计之前,这一切都很好。为了适应新的设计,我不得不使用一些自定义css来更改所有视频(将近200个)。如果我知道一种将链接放到wordpress中的方法(就像大多数人一样),我就不必使用iframe,wordpress会根据在媒体部分输入的设置调整视频的大小。

我希望有一种更好的方式来嵌入Youtube视频,而不是我一直以来的方式(将链接放到wordpress中就好了,而不必经过那么多不同的步骤才能让视频显示出来。有人知道如何(如果可能的话)做到这一点吗?

我每天都会发布一段视频,所以如果有办法的话,这对我的过程会很有帮助。谢谢

`

<?php
load_theme_textdomain(\'standardtheme\', get_template_directory() . \'/lang\');
$locale = get_locale();
$locale_file = get_template_directory() . \'/languages/$locale.php\';
if(is_readable($locale_file)):
    require_once($locale_file);
endif;
add_theme_support(\'post-thumbnails\');
require_once(\'admin/functions.php\');
require_once(\'lib/standardtheme.php\');
require_once(\'lib/pro-photo/pro-photo.php\');

function Oembed_youtube_no_title($html,$url,$args){
    $url_string = parse_url($url, PHP_URL_QUERY);
    parse_str($url_string, $id);
    if (isset($id[\'v\'])) {
        return \'<iframe width="\'.$args[\'width\'].\'" height="\'.$args[\'height\'].\'" src="http://www.youtube.com/embed/\'.$id[\'v\'].\'?rel=0&showinfo=0" frameborder="0" allowfullscreen></iframe>\';
    }
    return $html;
}
add_filter(\'oembed_result\',\'Oembed_youtube_no_title\',10,3);

?>

3 个回复
SO网友:Bainternet

不需要插件,只需使用Oembed类的oembed_result 过滤器挂钩

像这样:

function Oembed_youtube_no_title($html,$url,$args){
    $url_string = parse_url($url, PHP_URL_QUERY);
    parse_str($url_string, $id);
    if (isset($id[\'v\'])) {
        return \'<iframe width="\'.$args[\'width\'].\'" height="\'.$args[\'height\'].\'" src="http://www.youtube.com/embed/\'.$id[\'v\'].\'?rel=0&showinfo=0" frameborder="0" allowfullscreen></iframe>\';
    }
    return $html;
}
add_filter(\'oembed_result\',\'Oembed_youtube_no_title\',10,3);
因此,只需将此代码粘贴到主题函数中即可。php文件,在“设置>>媒体”面板上设置宽度和高度,您只需在帖子中粘贴youtube的视频url即可。

SO网友:Kevin Leary

伟大的解决方案Bainternet,

作为一个快速补充,在替换这些值之前,最好先检查嵌入是否是YouTube嵌入,这样就不会破坏其他嵌入类型。使用WordPress模式解析默认参数也很方便。基于这两个新增内容,下面是一个修改后的函数(其中“namespace”是您的命名空间:

/**
 * Add Custom Parameters to YouTube Embeds
 */
function namespace_oembed_youtube_no_title( $html, $url, $args ) {

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

    // Get embed URL
    $url_string = parse_url($url, PHP_URL_QUERY);
    parse_str($url_string, $id);

    // Set default arguments
    $defaults = array(
        \'width\' => 480,
        \'height\' => 385,
        \'showinfo\' => true,
        \'rel\' => true
    );

    // Merge args with defaults
    $args = wp_parse_args( $args, $defaults );

    // Define variables
    extract( $args, EXTR_SKIP );

    // Add custom parameter values to IFRAME
    if ( isset($id[\'v\']) ) {
        return \'<iframe width="\' . intval($width) . \'" height="\' . intval($height) . \'" src="http://www.youtube.com/embed/\' . $id[\'v\'] . \'?rel=\' . intval($rel) . \'&showinfo=\' . intval($showinfo) . \'" frameborder="0" allowfullscreen></iframe>\';
    }

    return $html;
}
add_filter(\'oembed_result\', \'namespace_oembed_youtube_no_title\', 10, 3);
现在是wp_oembed_get() 电话:

// oEmbed Video
$video = wp_oembed_get(\'http://www.youtube.com/watch?v=mx4xeO3Xq7g\', array(
    \'width\' => 632,
    \'height\' => 474,
    \'showinfo\' => false,
    \'rel\' => false
) );
再次感谢您添加此解决方案,原来的帖子为我解决了一个问题,真的很有帮助。

SO网友:Chip Bennett

只需抓取URL,添加查询字符串,然后让WordPress的内置oEmbed支持来处理它。

即:从iframe嵌入代码中提取URL,然后附加&showinfo=0 到最后。将结果粘贴到帖子内容的自己的行中,WordPress将正确嵌入视频,而不显示标题。

下面是一个工作示例:http://www.youtube.com/v/GrfGGzRNC4U?version=3&hl=en_US&showinfo=0

我从embed 密码not 缩短的URL。

结束

相关推荐

Right align a youtube video

我正在尝试右对齐(class=“alignright”)YouTube视频,并允许我的客户端在将来使用可视化编辑器编辑周围的文本。我只是使用HTML编辑器将class=“alignright”添加到包含嵌入的标记中,然而,当使用可视化编辑器WordPress对文本进行任何更改时,都会删除额外的代码。我想可能不可能得到我想要的结果,但谁能证实我的怀疑或给我一个解决办法。