我正试图找出一种方法,当当前帖子中的YouTube视频停止播放时自动转到wordpress网站上的下一篇文章。 youtube视频不会嵌入youtube API,而是使用iframe嵌入。
有没有人知道如何做到这一点?
答案 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;
}