youtube视频结束

时间:2015-10-03 21:05:57

标签: wordpress youtube

我正试图找出一种方法,当当前帖子中的YouTube视频停止播放时自动转到wordpress网站上的下一篇文章。 youtube视频不会嵌入youtube API,而是使用iframe嵌入。

有没有人知道如何做到这一点?

1 个答案:

答案 0 :(得分:0)

我正在调整此答案的代码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;
}