WordPress 自动嵌入 YouTube 视频 - 添加过滤器来处理“结束”属性

Posted

技术标签:

【中文标题】WordPress 自动嵌入 YouTube 视频 - 添加过滤器来处理“结束”属性【英文标题】:WordPress auto embed of YouTube videos - adding filter to handle `end` attribute 【发布时间】:2016-01-28 05:12:01 【问题描述】:

WordPress 自动将页面/帖子内容中的 YouTube URL 转换为嵌入的 iframe 视频。

它尊重 YouTube URL 中的 start 参数(如果存在),但它不尊重 end 参数(如果存在)。

因此,我需要找到处理这个自动 YouTube 嵌入功能的 WordPress 代码,这样我就可以挂上我自己的过滤器(using this solution)来处理end 的要求。

我搜索了/wp-includes/ 目录下的class-wp-embed.phpclass-oembed.phpmedia.php 文件,在后者中,我以为我找到了我需要的代码...

apply_filters( 'wp_embed_handler_youtube', $embed, $attr, $url, $rawattr )

...但该过滤器似乎没有被调用。

谁能指出我正确的方向?

【问题讨论】:

【参考方案1】:

您可以自定义youtube url并设置各种条件。我过去已经实现过。您可以从以下代码中获得一些参考:

 if(strpos($url, "youtube")!==false)
  
    if(strpos($url, "<object")===false)
    
     if(strpos($url, "<iframe")===false)
     
      if(strpos($url, "//youtu.be/")===false)
      
       $url_string = parse_url($url, PHP_URL_QUERY);
       parse_str($url_string, $args);
       $videoId = isset($args['v']) ? $args['v'] : false;

      
      else
      
       $url_string = explode('/',$url);
       $videoId = $url_string[3];
      
     
     else
     
      $pattern = '!//(?:www.)?youtube.com/embed/([A-Za-z0-9\-_]+)!i';
      $result = preg_match($pattern, $url, $matches);   

      $videoId = $matches[1];         
     
    
    else
    
      preg_match('#<object[^>]+>.+?http://www.youtube.com/v/([A-Za-z0-9\-_]+).+?</object>#s', $url, $matches);
      $videoId = $matches[1];
    
    $urlfrom = 'youtube';
    $video_thumb= '';


【讨论】:

【参考方案2】:

我有同样的问题,但没有找到答案。所以这是可行的解决方案:

add_filter('embed_oembed_html', 'my_theme_embed_handler_oembed_youtube', 10, 4);
function my_theme_embed_handler_oembed_youtube($html, $url, $attr, $post_ID) 
    if (strpos($url, 'youtube.com')!==false) 
        /*  YOU CAN CHANGE RESULT HTML CODE HERE */
        $html = '<div class="youtube-wrap">'.$html.'</div>';
    
    return $html;

【讨论】:

以上是关于WordPress 自动嵌入 YouTube 视频 - 添加过滤器来处理“结束”属性的主要内容,如果未能解决你的问题,请参考以下文章

更改默认的 wordpress youtube 嵌入视频尺寸

以模态自动播放Youtube视频? (Avada Wordpress主题)

从youtube嵌入缩略图和视频(php - Wordpress)

如何从 Wordpress 上 Gutenberg 的 YouTube 视频嵌入中删除 HTML 包装器

在网站上动态嵌入 youtube 频道的最佳方式是啥(首选 wordpress)

Youtube 尺寸 wordpress