WP YouTube Live Wordpress Plugin - Rating, Reviews, Demo & Download
Plugin Description
Displays the current YouTube live video from a specified channel via the shortcode [youtube_live]
.
Setup Notes
Your YouTube livestream must be set to “Public” or it will not work. This is a security feature of YouTube’s API and unfortunately there’s no way to work around it.
In addition, your live stream must be set to allow embedding on third-party sites. If that feature is unavailable, you may need to enable monetization for your account. See YouTube documentation for more information or help with allowing embedding.
How It Works
If no live video is available, you can display a specified video or a “channel player” showing all your recent videos.
You can also enable auto-refresh to automatically check for a live video every 30 seconds (warning: will increase server load, so use with caution).
By default, the server will check YouTube’s API and then cache that response for 15 minutes before checking the API again (you may change this value in the admin settings). If auto-refresh is enabled, clients will check against your server every 30 seconds and likely will hit that cache as well, so it can potentially take up to 16 minutes before a client will get a live video.
The length of both caches can be changed using the wp_youtube_live_transient_timeout
filter (see below for more information).
If no live video is available when a page is loaded, several fallback options are available:
- “Show a custom HTML message” allows you to specify a custom message to show
- “Show scheduled live videos” will show a player and countdown until your next live video
- “Show last completed live video” will show your most recently-completed live video
- “Show recent videos from my channel” will show a playlist of recent videos from your channel
- “Show a specified playlist” will show a specified playlist
- “Show a specified video” will show a specified video
- “Show nothing at all” will show nothing at all
When a video ends, users’ browsers will check your server again to see if a live video is available. If so, it will load that; if not, it will fall back as set in your options.
Shortcode Options
width
: player width in pixels; defaults to what you set on the settings pageheight
: player height in pixels; defaults to what you set on the settings pageautoplay
: whether or not to start playing immediately on load; defaults to falseauto_refresh
: (eithertrue
orfalse
) overrides the auto-refresh setting on the settings pagefallback_behavior
: choose from the following:upcoming
,completed
,channel
,playlist
,video
,message
,no_message
upcoming
: the next upcoming scheduled video on the specified channelplaylist
: a specified playlist (shortcode must also include thefallback_playlist
attribute)video
: a specified video (shortcode must also include thefallback_video
attribute)message
: a specified messageno_message
: nothing at all
fallback_playlist
: a playlist URL to show when there are no live videosfallback_video
: a video URL to show when there are no live videosfallback_message
: a message to show when there are no live videosjs_only
: (eithertrue
orfalse
) workaround for some caching issues; if a caching plugin (W3 Total Cache, WP Super Cache, etc.) or proxy (CloudFlare, etc.) caches the HTML while a video is live, visitors may continue to see an old live video even if it has ended. If setjs_only
is set totrue
, the server never displays the player code in the initial request and instead sends it in response to uncached ajax requests. This may also result in the video player being slightly delayed on page load due to the extra request, depending on the clients’ bandwidth and latency.
Example shortcode: [youtube_live width="720" height="360" autoplay="true"]
Filters
The filter wp_youtube_live_no_stream_available
will customize the message viewers see if there is no live stream currently playing, and takes effect after the fallback_message
shortcode attribute is parsed (if fallback_message="no_message"
is set in a shortcode, it will override the filter). For example, add this to your theme’s functions.php
file:
add_filter( 'wp_youtube_live_no_stream_available', 'my_ytl_custom_message' );
function my_ytl_custom_message( $message ) {
$message = '<p>Please check back later or subscribe to <a target="_blank" href="https://youtube.com/channel/UCH…">our YouTube channel</a>.</p>
<p><button type="button" class="button" id="check-again">Check again</button><span class="spinner" style="display:none;"></span></p>';
return $message;
}
The filter wp_youtube_live_transient_timeout
is available to customize the cache timeout length in seconds. For example, add this to your theme’s functions.php
file to set the cache length to 15 seconds instead of the default 900:
add_filter( 'wp_youtube_live_transient_timeout', 'my_ytl_custom_timeout' );
function my_ytl_custom_timeout( $timeout ) {
return 15;
}
Event Listener
When a live stream is loaded, the wpYouTubeLiveStarted
event is fired; you can use this to create custom front-end features on your site by adding an event listener:
window.addEventListener('wpYouTubeLiveStarted', function() {
/* your code here */
console.log('stream started');
/* your code here */
});
Development of this plugin is done on GitHub. Pull requests are always welcome.