我已经开始按照旧内容的短代码之类的方式对wordpress主题进行编码;
[youtube]http://www.youtube.com/watch?v=4MhsnuHvZoI[/youtube]
但是,此代码使用 插件 生成自动嵌入区域。实际上,我不想在我的新项目中使用任何插件。出于这个原因,我创建了一个像这样的简单shourtcode;
<?php
// YoutubeEmbed
function youtubekod($atts,$content = null ) {
return '<iframe width="100%" height="315" src="http://www.youtube.com/embed/'.$content.'?rel=0" frameborder="0" allowfullscreen></iframe>';
}
add_shortcode('youtube', 'youtubekod');
?>
但是,如果你检查短码返回线;你会看到我试图做的事情。但问题是,如何在 [youtube]标签之间获取 视频ID ?我很乐意帮助你。
感谢。
答案 0 :(得分:0)
试试这个
function youtubekod($atts, $content="") {
parse_str( parse_url( $content, PHP_URL_QUERY ), $youtube_id );
return '<iframe width="100%" height="315" src="http://www.youtube.com/embed/'.$youtube_id[v].'?rel=0" frameborder="0" allowfullscreen></iframe>';
}
add_shortcode('youtube', 'youtubekod');
答案 1 :(得分:0)
试试这个。
<?php
// YoutubeEmbed
function youtubekod($atts,$content = null ) {
$url = get_the_content($post->post_content);
$id=0;
preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $matches);
if(isset($matches[1])) $id = $matches[1];
if(!$id) {
$matches = explode('/', $url);
$id = $matches[count($matches)-1];
}
$code = '<iframe width="100%" height="315" src="http://www.youtube.com/embed/{id}?rel=0" frameborder="0" allowfullscreen></iframe>';
$code = str_replace('{id}', $id, $code);
return $code;
}
add_shortcode('youtube', 'youtubekod');
?>