【问题标题】:end of youtube videoyoutube视频结束
【发布时间】:2015-10-03 21:05:57
【问题描述】:

我正在尝试找出一种方法,当当前帖子中的 youtube 视频停止播放时,自动转到 wordpress 网站上的下一个帖子。 youtube 视频没有嵌入 youtube API,而是使用 iframe 嵌入。

有人知道怎么做吗?

【问题讨论】:

  • 这个问题帮助我实现了类似的目标:stackoverflow.com/questions/10580388/…
  • 看起来不错,但我看到 YT 视频 ID 已经指定,因为我已经在单独的帖子中嵌入了许多视频,这将如何工作?

标签: wordpress youtube


【解决方案1】:

我正在改编这个答案YouTube iframe API and WordPress 中的代码。您必须重写您的帖子以使用简码或使想法适应您当前的配置。

使用指向 YT ID 的短代码嵌入视频:[ytplayer id="M7lc1UVf-VE"],播放使用 YT iFrame API
我们使用get_next_post()(可能是get_previous_post())检查下一个帖子链接并将其传递给JavaScript 代码。当视频结束时,如果我们有实际的下一篇文章,它将跳转到链接:

add_shortcode( 'ytplayer', 'print_yt_player' );

function print_yt_player( $atts ) {
    wp_enqueue_script( 'yt-iframe', 'https://www.youtube.com/iframe_api' );
    $yt_id = $atts['id'];
    $next_post = get_next_post();
    $go_next = 'false';
    if (!empty( $next_post )) {
        $next_post = get_permalink($next_post);
        $go_next = 'true';
    } else {
        $next_post = '';
    }

    $html = <<<HTML
        <div id="player"></div>   
        <script>
            var player, done = false;
            function onYouTubeIframeAPIReady() {
                player = new YT.Player('player', {
                    height: '390',
                    width: '640',
                    videoId: '$yt_id',
                    playerVars: { 'autoplay': 1, 'controls': 1 },
                    events: {
                        'onReady': onPlayerReady,
                        'onStateChange': onPlayerStateChange
                    }
                });
            }    
            function onPlayerReady(event) {
                event.target.playVideo();
            }
            function onPlayerStateChange(event) {
                if( event.data == YT.PlayerState.ENDED && $go_next ) 
                    window.location.href = '$next_post';
            }
        </script>
HTML;
    # It's important that the previous line doesn't have ANY whitespace before of after HTML;
    return $html;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-02
    • 2012-08-19
    • 2013-08-24
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    相关资源
    最近更新 更多