Version Description
Download this release
Release Info
Developer | embedplus |
Plugin | YouTube |
Version | 14.1 |
Comparing to | |
See all releases |
Code changes from version 14.0.1.4 to 14.1
- readme.txt +644 -606
- scripts/ytprefs.js +70 -3
- scripts/ytprefs.min.js +1 -1
- styles/ytprefs-onboarding.css +5 -2
- styles/ytprefs-onboarding.min.css +1 -1
- styles/ytvi-admin.css +3 -0
- styles/ytvi-admin.min.css +1 -1
- youtube.php +316 -260
readme.txt
CHANGED
@@ -1,606 +1,644 @@
|
|
1 |
-
=== Embed Plus Plugin for YouTube, with YouTube Gallery, Channel, Playlist, Live Stream, Facade ===
|
2 |
-
Contributors: embedplus
|
3 |
-
Plugin Name: Embed Plus Plugin for YouTube, with YouTube Gallery, Channel, Playlist, Live Stream, Facade
|
4 |
-
Tags: youtube gallery, youtube wordpress plugin, channel gallery, playlist gallery, defer css javascript, youtube channel, youtube live, lazy load, facade
|
5 |
-
Requires at least: 4.5
|
6 |
-
Tested up to:
|
7 |
-
Stable tag: 14.
|
8 |
-
License: GPLv3 or later
|
9 |
-
|
10 |
-
YouTube Embed Plugin. Embed a responsive video, YouTube channel gallery, playlist gallery, YouTube
|
11 |
-
|
12 |
-
== Description ==
|
13 |
-
|
14 |
-
**YouTube WordPress Plugin** to embed and customize a YouTube gallery (channel or playlist), YouTube livestream (and premiere), YouTube short, or standard YouTube video. This YouTube WordPress plugin can be customized in a wide variety of ways. The plugin also focuses on performance with the ability to lazy load with a facade and defer JavaScript while serving minified CSS and JavaScript. Here are a few recently added features to all versions (free and Pro) of this WordPress plugin:
|
15 |
-
|
16 |
-
* YouTube gallery embeds and standard videos now support Facade Mode which improves plugin performance by loading a lighter version of the player, until it is clicked. The plugin then loads the real YouTube embed after clicking (note: for live streams, the real player is always loaded). We have tested this feature in multiple cases with a mix of other WordPress plugins, and we found it to successfully improve your Lighthouse performance score by addressing the following recommendation: "Some third-party resources can be lazy loaded with a facade - 1 facade alternative available"
|
17 |
-
* Defer critical and non critical JavaScript - improve the initial load time of your pages by allowing this plugin's critical and non critical Javascript code to begin execution only after a page is loaded. That reasoning is the basis for the Defer CSS Javascript (styles and code) recommendation you'll see in various web profiling tools. We plan to add a plugin feature that will defer critical and non critical CSS in the future.
|
18 |
-
* Compatible with the WordPress Gutenberg block editor (it also stays backwards-compatible with the classic editor WordPress plugin). Both the Gutenberg block selector and the Gutenberg classic block will show the YouTube wizard button. For the Gutenberg block selector, click on the (+) sign for the block editor list. The YouTube Wizard block is located under the "Embeds" category (make sure you choose "YouTube **Wizard**"). See more on [how to embed a YouTube video, gallery, or livestream with the WordPress Gutenberg block editor here >>](https://www.embedplus.com/embed-youtube-video-gallery-livestream-wordpress-gutenberg-block-editor.aspx) The plugin is also compatible with several popular page builders like [Elementor](https://www.youtube.com/watch?v=ldNfIGRTxDU), [Beaver Builder](https://www.youtube.com/watch?v=bPgz0jyt7TE), [SiteOrigin](https://www.youtube.com/watch?v=7QNYw_g-7WM), and [Visual Composer](https://www.youtube.com/watch?v=FWBQc9XhAqM). For these and pretty much any other page builder with a short code widget, you can also embed your video, gallery, live stream, or premiere by creating the short code in the plugin's wizard and then embedding the code in the page builder's short code widget or text widget.
|
19 |
-
* Privacy and Consent - Improved privacy and GDPR compliance options like YouTube no cookie, YouTube API restrictions, and a customizable GDPR consent message. Note: if you have a full-blown consent plugin installed on your WordPress site, you may not need these particular features of this YouTube plugin.
|
20 |
-
* YouTube gallery capability: channel and playlist – The ability to make playlist and channel embeds have a gallery layout. By default, the plugin can generate a grid-based [responsive playlist or channel gallery >>](https://www.embedplus.com/responsive-youtube-playlist-channel-gallery-for-wordpress.aspx). Your visitors can browse through pages of video thumbnails and choose from videos that are pulled from an entire YouTube channel or playlist.
|
21 |
-
* YouTube gallery auto continuous play - embed a playlist or channel gallery and allow it to play one video after the next without requiring viewers to click a thumbnail.
|
22 |
-
* YouTube Live Stream - Given a link to a YouTube channel, the plugin wizard automatically finds a livestream if one is active in that channel and displays the livestream for you. You can embed a direct link to a livestream too.
|
23 |
-
* YouTube Premieres - The plugin provides you the same embedding methods for YouTube live streams as it does for premiere embeds.
|
24 |
-
* Simultaneous playback control - you can enable/disable the ability for visitors to have separate videos running at the same time on the same page. This also works with YouTube livestream and gallery embeds that are embedded by our YouTube plugin.
|
25 |
-
* Improved accessibility by using title attributes for screen reader support. Hopefully this plugin can help your site pass functional accessibility evaluations (FAE).
|
26 |
-
* Improved AJAX WordPress theme support.
|
27 |
-
* Site origin information with each embed code as an extra security measure. In YouTube's/Google's own words, checking this option "protects against malicious third-party JavaScript being injected into your page and hijacking control of your YouTube player." We especially recommend checking it as it adds higher security than the built-in YouTube embedding method that comes with the current version of WordPress (i.e. oembed).
|
28 |
-
* Easy "Insert" button for both the Visual and Text mode of the editor (for YouTube gallery and live stream embedding as well).
|
29 |
-
* Embed an entire YouTube channel as a (non-gallery, single embedded player) playlist.
|
30 |
-
* Start video settings for playlist embeds. You can now choose to start a playlist with a specific video or have the plugin automatically start with the most recently added video. **Note: If you're embedding a YouTube gallery, the order will be defined by the order of the channel or playlist on YouTube.com**.
|
31 |
-
* [Volume level initialization](https://www.embedplus.com/mute-volume-youtube-wordpress.aspx) - helpful when autoplay is checked. Applies to all videos embedded with this YouTube plugin.
|
32 |
-
* iOS playback preferences.
|
33 |
-
* Automatic localization/internationalization so you can set the player's interface language from English to another.
|
34 |
-
* Instant HTTPS support. It can even convert past non-HTTPS videos to HTTPS. Did you know that Google uses HTTPS/SSL support as a ranking signal for SERP?
|
35 |
-
* "At a Glance" direct access to your YouTube posts/pages.
|
36 |
-
* Shortcode support for embedding multiple videos on one line.
|
37 |
-
* General playlist embedding support.
|
38 |
-
* YouTube WordPress plugin migration support (allows you convert other YouTube plugin embeds to ours).
|
39 |
-
|
40 |
-
**Click the Download button to start exploring this YouTube WordPress plugin**, or take a look at some more introductory details below.
|
41 |
-
|
42 |
-
This plugin helps you easily manage the growing complexity of YouTube embedding. It provides a spectrum of basic and advanced features of the YouTube embedded player and will have you posting videos in seconds after installing it.
|
43 |
-
|
44 |
-
The settings page has plenty of default options that you can automatically apply to your embedded YouTube video, gallery, and/or live stream:
|
45 |
-
|
46 |
-
* Modest branding - hide YouTube logo while playing (note that the YouTube watermark is shown instead)
|
47 |
-
* Turn on/off all annotations by default
|
48 |
-
* Automatically center all your videos
|
49 |
-
* Automatically start playing your videos
|
50 |
-
* Autohide controls until hovering
|
51 |
-
* Loop your videos
|
52 |
-
* Show/hide related videos at the end
|
53 |
-
* Show/hide the video title and other info (YouTube/Google has deprecated this feature)
|
54 |
-
* Use the light theme
|
55 |
-
* Show/hide player controls
|
56 |
-
* Turn on/off closed captions by default
|
57 |
-
* Make your video, gallery, or live stream responsive so that it dynamically fits in all screen sizes (smart phone, PC and tablet)
|
58 |
-
|
59 |
-
Customizations can be also made to each YouTube embed by adding more to the link as shown below. Adding these will override the above global defaults that you set:
|
60 |
-
|
61 |
-
* width - Sets the width of your player. If omitted, the default width will be the width of your theme's content. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350"`
|
62 |
-
* height - Sets the height of your player. If omitted, this will be calculated for you automatically. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350"`
|
63 |
-
* autoplay - Set this to 1 to autoplay the video (or 0 to play the video once). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&autoplay=1"`
|
64 |
-
* cc_load_policy - Set this to 1 to turn on closed captioning (or 0 to leave them off). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&cc_load_policy=1"`
|
65 |
-
* iv_load_policy - Set this to 3 to turn off annotations (or 1 to show them). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&iv_load_policy=3"`
|
66 |
-
* loop - Set this to 1 to loop the video (or 0 to not loop). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&loop=1"`
|
67 |
-
* modestbranding - Set this to 1 to remove the YouTube logo while playing (or 0 to show the logo). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&modestbranding=1"`
|
68 |
-
* rel - Set this to 0 to only show related videos from the same channel as the current video (or 1 to show videos from any channel). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&rel=0"`
|
69 |
-
* showinfo - Set this to 0 to hide the video title and other info (or 1 to show it). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&showinfo=0"` (YouTube/Google has deprecated this feature)
|
70 |
-
* fs - Set this to 0 to hide the fullscreen button (or 1 to show it). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&fs=0"`
|
71 |
-
|
72 |
-
You can also start and end each individual video at particular times. Like the above, each option should begin with '&'
|
73 |
-
|
74 |
-
* start - Sets the time (in seconds) to start the video. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350&start=20"`
|
75 |
-
* end - Sets the time (in seconds) to stop the video. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350&end=100"`
|
76 |
-
|
77 |
-
> **About the Pro version of the [YouTube WordPress Plugin](https://www.embedplus.com/dashboard/pro-easy-video-analytics.aspx?ref=readme)**
|
78 |
-
>
|
79 |
-
> If you like this free version, you may even upgrade to a separate Pro plugin with features like:
|
80 |
-
>
|
81 |
-
> * Full visual embedding wizard
|
82 |
-
> * [Alternate playlist and channel gallery styling >>](https://www.embedplus.com/responsive-youtube-playlist-channel-gallery-for-wordpress.aspx) (list layouts and slider layouts, popup/lightbox player, thumbnail hiding for text only paging, and more)
|
83 |
-
> * Caching to avoid making frequent requests to YouTube.com and speed up your page loads
|
84 |
-
> * Automatic video thumbnail images: each post or page that contains at least one video will have the thumbnail of its first video serve as its featured image
|
85 |
-
> * [Lazy load YouTube embeds >>](https://www.embedplus.com/defer-parsing-of-javascript-improve-gtmetrix-speed-of-page-with-youtube-embed.aspx) with eye-catching [effects and animations](https://www.embedplus.com/add-special-effects-to-youtube-embeds-in-wordpress.aspx)
|
86 |
-
> * [YouTube live chat >>](https://www.embedplus.com/embed-youtube-live-chat-box-with-live-stream-embed-wordpress.aspx) Add more interaction to your site by including the YouTube live chat box as part of each live stream embed. Note that live chat can also be an option for earning money from your audience by using the Super Chat and Super Stickers feature.
|
87 |
-
> * Automatic tagging for video SEO
|
88 |
-
> * Automatic Open Graph tagging for Facebook
|
89 |
-
> * Deleted video alerts (i.e., did Google remove or take down videos I previously embedded?)
|
90 |
-
> * Mobile compatibility checking (i.e., see if your embeds have restrictions that can block your site's mobile visitors from viewing)
|
91 |
-
> * Alerts when visitors from different countries are blocked from viewing your embeds
|
92 |
-
> * Priority support
|
93 |
-
>
|
94 |
-
> You also get access to our deleted video alerts to help avoid showing embedded videos that are later removed from YouTube.com. You even get an embedder-centric [analytics dashboard](https://www.embedplus.com/dashboard/easy-youtube-analytics-preview.aspx?platform=sim) that adds view tracking to each of your embeds so that you can answers questions like:
|
95 |
-
>
|
96 |
-
> * How much are your visitors actually watching the videos you post?
|
97 |
-
> * How does the view activity on your site compare to other sites like it?
|
98 |
-
> * What and when are your best and worst performing YouTube embeds?
|
99 |
-
> * How much do the producers of the YouTube videos you embed rely on **your site**, versus other sites and YouTube.com, for views?
|
100 |
-
> * Are you embedding videos that are blocked in other countries?
|
101 |
-
> * Have your visitors tried to view a page and/or gallery on your site with deleted/unavailable videos?
|
102 |
-
|
103 |
-
See more details after installing. Enjoy!
|
104 |
-
|
105 |
-
[This WordPress plugin is maintained by Embed Plus for YouTube >>](https://www.embedplus.com/)
|
106 |
-
|
107 |
-
== Installation ==
|
108 |
-
|
109 |
-
1. Use the WordPress plugin installer to install the plugin. Alternatively, you can just extract the folder in our download package and upload it to your plugin directory.
|
110 |
-
1. Access the Plugins admin menu to activate the YouTube embed plugin.
|
111 |
-
1. Make your default settings after clicking the new YouTube menu item that shows up in your admin panel. This is where you can make global settings on the appearance of each video and gallery, as well as activate: defer JavaScript (defer CSS coming soon), GDPR mode, user restrictions, and more.
|
112 |
-
1. To embed videos in your post,
|
113 |
-
1. You can also [embed a playlist and channel gallery with this plugin >>](https://www.embedplus.com/responsive-youtube-playlist-channel-gallery-for-wordpress.aspx). Please install the plugin and visit the settings page for instructions.
|
114 |
-
1. To get video SEO, an analytics dashboard and many other premium features, [sign up for one of the options here >>](https://www.embedplus.com/dashboard/pro-easy-video-analytics.aspx?ref=readme)
|
115 |
-
|
116 |
-
**Manual codes (adding these will override the default settings in the admin):**
|
117 |
-
|
118 |
-
* width - Sets the width of your player. If omitted, the default width will be the width of your theme's content. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350"`
|
119 |
-
* height - Sets the height of your player. If omitted, this will be calculated for you automatically. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350"`
|
120 |
-
* autoplay - Set this to 1 to autoplay the video (or 0 to play the video once). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&autoplay=1"`
|
121 |
-
* cc_load_policy - Set this to 1 to turn on closed captioning (or 0 to leave them off). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&cc_load_policy=1"`
|
122 |
-
* iv_load_policy - Set this to 3 to turn off annotations (or 1 to show them). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&iv_load_policy=3"`
|
123 |
-
* loop - Set this to 1 to loop the video (or 0 to not loop). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&loop=1"`
|
124 |
-
* modestbranding - Set this to 1 to remove the YouTube logo while playing (or 0 to show the logo). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&modestbranding=1"`
|
125 |
-
* rel - Set this to 0 to only show related videos from the same channel as the current video (or 1 to show videos from any channel). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&rel=0"`
|
126 |
-
* showinfo - Set this to 0 to hide the video title and other info (or 1 to show it). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&showinfo=0"` (YouTube/Google has deprecated this feature)
|
127 |
-
* fs - Set this to 0 to hide the fullscreen button (or 1 to show it). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&fs=0"`
|
128 |
-
|
129 |
-
You can also start and end each individual video at particular times. Like the above, each option should begin with '&'
|
130 |
-
|
131 |
-
* start - Sets the time (in seconds) to start the video. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350&start=20"`
|
132 |
-
* end - Sets the time (in seconds) to stop the video. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350&end=100"`
|
133 |
-
|
134 |
-
**We recommend using the wizard, but if you're manually pasting a link, always follow these rules:**
|
135 |
-
|
136 |
-
* Make sure the url is really on its own line by itself. Or, if you need multiple videos on the same line, make sure each URL is wrapped properly with the shortcode. Example: `[embedyt]https://www.youtube.com/watch?v=ABCDEFGHIJK&width=400&height=250[/embedyt]`
|
137 |
-
* Make sure the url is not an active hyperlink (i.e., it should just be plain text). Otherwise, highlight the url and click the "unlink" button in your editor.
|
138 |
-
* Make sure you did **not** format or align the url in any way. If your url still appears in your actual post instead of a video, highlight it and click the "remove formatting" button (formatting can be invisible sometimes).
|
139 |
-
* Finally, there's a slight chance your custom theme is the issue, if you have one. To know for sure, we suggest temporarily switching to one of the default WordPress themes (e.g., "Twenty Thirteen") just to see if your video does appear. If it suddenly works, then your custom theme is the issue. You can switch back when done testing.
|
140 |
-
|
141 |
-
==
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
*
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
*
|
198 |
-
|
199 |
-
= Embed Plus for YouTube WordPress Plugin
|
200 |
-
* Fix
|
201 |
-
*
|
202 |
-
|
203 |
-
= Embed Plus for YouTube WordPress Plugin
|
204 |
-
*
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
*
|
210 |
-
|
211 |
-
= Embed Plus for YouTube WordPress Plugin
|
212 |
-
*
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
*
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
*
|
221 |
-
*
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
*
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
*
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
*
|
239 |
-
*
|
240 |
-
|
241 |
-
= Embed Plus for YouTube WordPress Plugin 13.
|
242 |
-
*
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
* Fixes
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
*
|
258 |
-
*
|
259 |
-
*
|
260 |
-
*
|
261 |
-
|
262 |
-
= Embed Plus for YouTube WordPress Plugin 13.
|
263 |
-
*
|
264 |
-
*
|
265 |
-
|
266 |
-
= Embed Plus for YouTube WordPress Plugin 13.
|
267 |
-
*
|
268 |
-
*
|
269 |
-
*
|
270 |
-
|
271 |
-
= Embed Plus for YouTube WordPress Plugin
|
272 |
-
*
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
*
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
*
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
*
|
294 |
-
*
|
295 |
-
|
296 |
-
|
297 |
-
*
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
*
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
*
|
313 |
-
|
314 |
-
|
315 |
-
*
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
*
|
320 |
-
*
|
321 |
-
|
322 |
-
|
323 |
-
*
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
*
|
333 |
-
|
334 |
-
= Embed Plus for YouTube WordPress Plugin 11.8 =
|
335 |
-
*
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
*
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
*
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
*
|
351 |
-
*
|
352 |
-
*
|
353 |
-
*
|
354 |
-
|
355 |
-
|
356 |
-
* PHP 7
|
357 |
-
|
358 |
-
|
359 |
-
*
|
360 |
-
*
|
361 |
-
*
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
*
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
*
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
*
|
383 |
-
*
|
384 |
-
*
|
385 |
-
|
386 |
-
= Embed Plus for YouTube WordPress Plugin 11.
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
= Embed Plus for YouTube WordPress Plugin
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
= Embed Plus for YouTube WordPress Plugin
|
414 |
-
Adds
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
= Embed Plus for YouTube WordPress Plugin
|
455 |
-
|
456 |
-
|
457 |
-
= Embed Plus for YouTube WordPress Plugin
|
458 |
-
|
459 |
-
|
460 |
-
= Embed Plus for YouTube WordPress Plugin 8
|
461 |
-
|
462 |
-
|
463 |
-
= Embed Plus for YouTube WordPress Plugin
|
464 |
-
|
465 |
-
|
466 |
-
= Embed Plus for YouTube WordPress Plugin
|
467 |
-
|
468 |
-
|
469 |
-
= Embed Plus for YouTube WordPress Plugin
|
470 |
-
|
471 |
-
|
472 |
-
= Embed Plus for YouTube WordPress Plugin
|
473 |
-
|
474 |
-
|
475 |
-
= Embed Plus for YouTube WordPress Plugin
|
476 |
-
|
477 |
-
|
478 |
-
= Embed Plus for YouTube WordPress Plugin
|
479 |
-
|
480 |
-
|
481 |
-
= Embed Plus for YouTube WordPress Plugin
|
482 |
-
|
483 |
-
|
484 |
-
= Embed Plus for YouTube WordPress Plugin
|
485 |
-
|
486 |
-
|
487 |
-
= Embed Plus for YouTube WordPress Plugin
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
= Embed Plus for YouTube WordPress Plugin
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
= Embed Plus for YouTube WordPress Plugin
|
532 |
-
|
533 |
-
|
534 |
-
= Embed Plus for YouTube WordPress Plugin
|
535 |
-
|
536 |
-
|
537 |
-
= Embed Plus for YouTube WordPress Plugin
|
538 |
-
Added
|
539 |
-
|
540 |
-
= Embed Plus for YouTube WordPress Plugin
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
= Embed Plus for YouTube WordPress Plugin
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== Embed Plus Plugin for YouTube, with YouTube Gallery, Channel, Playlist, Live Stream, Facade ===
|
2 |
+
Contributors: embedplus
|
3 |
+
Plugin Name: Embed Plus Plugin for YouTube, with YouTube Gallery, Channel, Playlist, Live Stream, Facade
|
4 |
+
Tags: youtube gallery, youtube wordpress plugin, channel gallery, playlist gallery, defer css javascript, youtube channel, youtube live, lazy load, facade
|
5 |
+
Requires at least: 4.5
|
6 |
+
Tested up to: 6.0
|
7 |
+
Stable tag: 14.1
|
8 |
+
License: GPLv3 or later
|
9 |
+
|
10 |
+
YouTube Embed WordPress Plugin. Embed a responsive video, YouTube channel gallery, playlist gallery, YouTube livestream. Defer JavaScript
|
11 |
+
|
12 |
+
== Description ==
|
13 |
+
|
14 |
+
**YouTube WordPress Plugin** to embed and customize a YouTube gallery (channel or playlist), YouTube livestream (and premiere), YouTube short, or standard YouTube video. This YouTube WordPress plugin can be customized in a wide variety of ways. The plugin also focuses on performance with the ability to lazy load with a facade and defer JavaScript while serving minified CSS and JavaScript. Here are a few recently added features to all versions (free and Pro) of this WordPress plugin:
|
15 |
+
|
16 |
+
* YouTube gallery embeds and standard videos now support Facade Mode which improves plugin performance by loading a lighter version of the player, until it is clicked. The plugin then loads the real YouTube embed after clicking (note: for live streams, the real player is always loaded). We have tested this feature in multiple cases with a mix of other WordPress plugins, and we found it to successfully improve your Lighthouse performance score by addressing the following recommendation: "Some third-party resources can be lazy loaded with a facade - 1 facade alternative available." You can demo this facade feature on our [YouTube Plugin WordPress](https://youtube-wordpress-plugin.embedplus.com/) test site.
|
17 |
+
* Defer critical and non critical JavaScript - improve the initial load time of your pages by allowing this plugin's critical and non critical Javascript code to begin execution only after a page is loaded. That reasoning is the basis for the Defer CSS Javascript (styles and code) recommendation you'll see in various web profiling tools. We plan to add a plugin feature that will defer critical and non critical CSS in the future.
|
18 |
+
* Compatible with the WordPress Gutenberg block editor (it also stays backwards-compatible with the classic editor WordPress plugin). Both the Gutenberg block selector and the Gutenberg classic block will show the YouTube wizard button. For the Gutenberg block selector, click on the (+) sign for the block editor list. The YouTube Wizard block is located under the "Embeds" category (make sure you choose "YouTube **Wizard**"). See more on [how to embed a YouTube video, gallery, or livestream with the WordPress Gutenberg block editor here >>](https://www.embedplus.com/embed-youtube-video-gallery-livestream-wordpress-gutenberg-block-editor.aspx) The plugin is also compatible with several popular page builders like [Elementor](https://www.youtube.com/watch?v=ldNfIGRTxDU), [Beaver Builder](https://www.youtube.com/watch?v=bPgz0jyt7TE), [SiteOrigin](https://www.youtube.com/watch?v=7QNYw_g-7WM), and [Visual Composer](https://www.youtube.com/watch?v=FWBQc9XhAqM). For these and pretty much any other page builder with a short code widget, you can also embed your video, gallery, live stream, or premiere by creating the short code in the plugin's wizard and then embedding the code in the page builder's short code widget or text widget.
|
19 |
+
* Privacy and Consent - Improved privacy and GDPR compliance options like YouTube no cookie, YouTube API restrictions, and a customizable GDPR consent message. Note: if you have a full-blown consent plugin installed on your WordPress site, you may not need these particular features of this YouTube plugin.
|
20 |
+
* YouTube gallery capability: channel and playlist – The ability to make playlist and channel embeds have a gallery layout. By default, the plugin can generate a grid-based [responsive playlist or channel gallery >>](https://www.embedplus.com/responsive-youtube-playlist-channel-gallery-for-wordpress.aspx). Your visitors can browse through pages of video thumbnails and choose from videos that are pulled from an entire YouTube channel or playlist.
|
21 |
+
* YouTube gallery auto continuous play - embed a playlist or channel gallery and allow it to play one video after the next without requiring viewers to click a thumbnail.
|
22 |
+
* YouTube Live Stream - Given a link to a YouTube channel, the plugin wizard automatically finds a livestream if one is active in that channel and displays the livestream for you. You can embed a direct link to a livestream too.
|
23 |
+
* YouTube Premieres - The plugin provides you the same embedding methods for YouTube live streams as it does for premiere embeds.
|
24 |
+
* Simultaneous playback control - you can enable/disable the ability for visitors to have separate videos running at the same time on the same page. This also works with YouTube livestream and gallery embeds that are embedded by our YouTube plugin.
|
25 |
+
* Improved accessibility by using title attributes for screen reader support. Hopefully this plugin can help your site pass functional accessibility evaluations (FAE).
|
26 |
+
* Improved AJAX WordPress theme support.
|
27 |
+
* Site origin information with each embed code as an extra security measure. In YouTube's/Google's own words, checking this option "protects against malicious third-party JavaScript being injected into your page and hijacking control of your YouTube player." We especially recommend checking it as it adds higher security than the built-in YouTube embedding method that comes with the current version of WordPress (i.e. oembed).
|
28 |
+
* Easy "Insert" button for both the Visual and Text mode of the editor (for YouTube gallery and live stream embedding as well).
|
29 |
+
* Embed an entire YouTube channel as a (non-gallery, single embedded player) playlist.
|
30 |
+
* Start video settings for playlist embeds. You can now choose to start a playlist with a specific video or have the plugin automatically start with the most recently added video. **Note: If you're embedding a YouTube gallery, the order will be defined by the order of the channel or playlist on YouTube.com**.
|
31 |
+
* [Volume level initialization](https://www.embedplus.com/mute-volume-youtube-wordpress.aspx) - helpful when autoplay is checked. Applies to all videos embedded with this YouTube plugin.
|
32 |
+
* iOS playback preferences.
|
33 |
+
* Automatic localization/internationalization so you can set the player's interface language from English to another.
|
34 |
+
* Instant HTTPS support. It can even convert past non-HTTPS videos to HTTPS. Did you know that Google uses HTTPS/SSL support as a ranking signal for SERP?
|
35 |
+
* "At a Glance" direct access to your YouTube posts/pages.
|
36 |
+
* Shortcode support for embedding multiple videos on one line.
|
37 |
+
* General playlist embedding support.
|
38 |
+
* YouTube WordPress plugin migration support (allows you convert other YouTube plugin embeds to ours).
|
39 |
+
|
40 |
+
**Click the Download button to start exploring this YouTube WordPress plugin**, or take a look at some more introductory details below.
|
41 |
+
|
42 |
+
This plugin helps you easily manage the growing complexity of YouTube embedding. It provides a spectrum of basic and advanced features of the YouTube embedded player and will have you posting videos in seconds after installing it.
|
43 |
+
|
44 |
+
The settings page has plenty of default options that you can automatically apply to your embedded YouTube video, gallery, and/or live stream:
|
45 |
+
|
46 |
+
* Modest branding - hide YouTube logo while playing (note that the YouTube watermark is shown instead)
|
47 |
+
* Turn on/off all annotations by default
|
48 |
+
* Automatically center all your videos
|
49 |
+
* Automatically start playing your videos
|
50 |
+
* Autohide controls until hovering
|
51 |
+
* Loop your videos
|
52 |
+
* Show/hide related videos at the end
|
53 |
+
* Show/hide the video title and other info (YouTube/Google has deprecated this feature)
|
54 |
+
* Use the light theme
|
55 |
+
* Show/hide player controls
|
56 |
+
* Turn on/off closed captions by default
|
57 |
+
* Make your video, gallery, or live stream responsive so that it dynamically fits in all screen sizes (smart phone, PC and tablet)
|
58 |
+
|
59 |
+
Customizations can be also made to each YouTube embed by adding more to the link as shown below. Adding these will override the above global defaults that you set:
|
60 |
+
|
61 |
+
* width - Sets the width of your player. If omitted, the default width will be the width of your theme's content. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350"`
|
62 |
+
* height - Sets the height of your player. If omitted, this will be calculated for you automatically. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350"`
|
63 |
+
* autoplay - Set this to 1 to autoplay the video (or 0 to play the video once). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&autoplay=1"`
|
64 |
+
* cc_load_policy - Set this to 1 to turn on closed captioning (or 0 to leave them off). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&cc_load_policy=1"`
|
65 |
+
* iv_load_policy - Set this to 3 to turn off annotations (or 1 to show them). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&iv_load_policy=3"`
|
66 |
+
* loop - Set this to 1 to loop the video (or 0 to not loop). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&loop=1"`
|
67 |
+
* modestbranding - Set this to 1 to remove the YouTube logo while playing (or 0 to show the logo). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&modestbranding=1"`
|
68 |
+
* rel - Set this to 0 to only show related videos from the same channel as the current video (or 1 to show videos from any channel). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&rel=0"`
|
69 |
+
* showinfo - Set this to 0 to hide the video title and other info (or 1 to show it). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&showinfo=0"` (YouTube/Google has deprecated this feature)
|
70 |
+
* fs - Set this to 0 to hide the fullscreen button (or 1 to show it). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&fs=0"`
|
71 |
+
|
72 |
+
You can also start and end each individual video at particular times. Like the above, each option should begin with '&'
|
73 |
+
|
74 |
+
* start - Sets the time (in seconds) to start the video. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350&start=20"`
|
75 |
+
* end - Sets the time (in seconds) to stop the video. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350&end=100"`
|
76 |
+
|
77 |
+
> **About the Pro version of the [YouTube WordPress Plugin](https://www.embedplus.com/dashboard/pro-easy-video-analytics.aspx?ref=readme)**
|
78 |
+
>
|
79 |
+
> If you like this free version, you may even upgrade to a separate Pro plugin with features like:
|
80 |
+
>
|
81 |
+
> * Full visual embedding wizard
|
82 |
+
> * [Alternate playlist and channel gallery styling >>](https://www.embedplus.com/responsive-youtube-playlist-channel-gallery-for-wordpress.aspx) (list layouts and slider layouts, popup/lightbox player, thumbnail hiding for text only paging, and more)
|
83 |
+
> * Caching to avoid making frequent requests to YouTube.com and speed up your page loads
|
84 |
+
> * Automatic video thumbnail images: each post or page that contains at least one video will have the thumbnail of its first video serve as its featured image
|
85 |
+
> * [Lazy load YouTube embeds >>](https://www.embedplus.com/defer-parsing-of-javascript-improve-gtmetrix-speed-of-page-with-youtube-embed.aspx) with eye-catching [effects and animations](https://www.embedplus.com/add-special-effects-to-youtube-embeds-in-wordpress.aspx)
|
86 |
+
> * [YouTube live chat >>](https://www.embedplus.com/embed-youtube-live-chat-box-with-live-stream-embed-wordpress.aspx) Add more interaction to your site by including the YouTube live chat box as part of each live stream embed. Note that live chat can also be an option for earning money from your audience by using the Super Chat and Super Stickers feature.
|
87 |
+
> * Automatic tagging for video SEO
|
88 |
+
> * Automatic Open Graph tagging for Facebook
|
89 |
+
> * Deleted video alerts (i.e., did Google remove or take down videos I previously embedded?)
|
90 |
+
> * Mobile compatibility checking (i.e., see if your embeds have restrictions that can block your site's mobile visitors from viewing)
|
91 |
+
> * Alerts when visitors from different countries are blocked from viewing your embeds
|
92 |
+
> * Priority support
|
93 |
+
>
|
94 |
+
> You also get access to our deleted video alerts to help avoid showing embedded videos that are later removed from YouTube.com. You even get an embedder-centric [analytics dashboard](https://www.embedplus.com/dashboard/easy-youtube-analytics-preview.aspx?platform=sim) that adds view tracking to each of your embeds so that you can answers questions like:
|
95 |
+
>
|
96 |
+
> * How much are your visitors actually watching the videos you post?
|
97 |
+
> * How does the view activity on your site compare to other sites like it?
|
98 |
+
> * What and when are your best and worst performing YouTube embeds?
|
99 |
+
> * How much do the producers of the YouTube videos you embed rely on **your site**, versus other sites and YouTube.com, for views?
|
100 |
+
> * Are you embedding videos that are blocked in other countries?
|
101 |
+
> * Have your visitors tried to view a page and/or gallery on your site with deleted/unavailable videos?
|
102 |
+
|
103 |
+
See more details after installing. Enjoy!
|
104 |
+
|
105 |
+
[This WordPress plugin is maintained by Embed Plus for YouTube >>](https://www.embedplus.com/)
|
106 |
+
|
107 |
+
== Installation ==
|
108 |
+
|
109 |
+
1. Use the WordPress plugin installer to install the plugin. Alternatively, you can just extract the folder in our download package and upload it to your plugin directory.
|
110 |
+
1. Access the Plugins admin menu to activate the YouTube embed plugin.
|
111 |
+
1. Make your default settings after clicking the new YouTube menu item that shows up in your admin panel. This is where you can make global settings on the appearance of each video and gallery, as well as activate: defer JavaScript (defer CSS coming soon), GDPR mode, user restrictions, and more.
|
112 |
+
1. To embed videos in your post, use the wizard to embed the shortcode. Example: `[embedyt]https://www.youtube.com/watch?v=ABCDEFGHIJK&width=400&height=250[/embedyt]` If you don't know exactly which video you want to embed, use the free built-in search feature to find and insert one.
|
113 |
+
1. You can also [embed a playlist and channel gallery with this plugin >>](https://www.embedplus.com/responsive-youtube-playlist-channel-gallery-for-wordpress.aspx). Please install the plugin and visit the settings page for instructions.
|
114 |
+
1. To get video SEO, an analytics dashboard and many other premium features, [sign up for one of the options here >>](https://www.embedplus.com/dashboard/pro-easy-video-analytics.aspx?ref=readme)
|
115 |
+
|
116 |
+
**Manual codes (adding these will override the default settings in the admin):**
|
117 |
+
|
118 |
+
* width - Sets the width of your player. If omitted, the default width will be the width of your theme's content. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350"`
|
119 |
+
* height - Sets the height of your player. If omitted, this will be calculated for you automatically. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350"`
|
120 |
+
* autoplay - Set this to 1 to autoplay the video (or 0 to play the video once). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&autoplay=1"`
|
121 |
+
* cc_load_policy - Set this to 1 to turn on closed captioning (or 0 to leave them off). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&cc_load_policy=1"`
|
122 |
+
* iv_load_policy - Set this to 3 to turn off annotations (or 1 to show them). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&iv_load_policy=3"`
|
123 |
+
* loop - Set this to 1 to loop the video (or 0 to not loop). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&loop=1"`
|
124 |
+
* modestbranding - Set this to 1 to remove the YouTube logo while playing (or 0 to show the logo). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&modestbranding=1"`
|
125 |
+
* rel - Set this to 0 to only show related videos from the same channel as the current video (or 1 to show videos from any channel). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&rel=0"`
|
126 |
+
* showinfo - Set this to 0 to hide the video title and other info (or 1 to show it). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&showinfo=0"` (YouTube/Google has deprecated this feature)
|
127 |
+
* fs - Set this to 0 to hide the fullscreen button (or 1 to show it). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&fs=0"`
|
128 |
+
|
129 |
+
You can also start and end each individual video at particular times. Like the above, each option should begin with '&'
|
130 |
+
|
131 |
+
* start - Sets the time (in seconds) to start the video. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350&start=20"`
|
132 |
+
* end - Sets the time (in seconds) to stop the video. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350&end=100"`
|
133 |
+
|
134 |
+
**We recommend using the wizard, but if you're manually pasting a link, always follow these rules:**
|
135 |
+
|
136 |
+
* Make sure the url is really on its own line by itself. Or, if you need multiple videos on the same line, make sure each URL is wrapped properly with the shortcode. Example: `[embedyt]https://www.youtube.com/watch?v=ABCDEFGHIJK&width=400&height=250[/embedyt]`
|
137 |
+
* Make sure the url is not an active hyperlink (i.e., it should just be plain text). Otherwise, highlight the url and click the "unlink" button in your editor.
|
138 |
+
* Make sure you did **not** format or align the url in any way. If your url still appears in your actual post instead of a video, highlight it and click the "remove formatting" button (formatting can be invisible sometimes).
|
139 |
+
* Finally, there's a slight chance your custom theme is the issue, if you have one. To know for sure, we suggest temporarily switching to one of the default WordPress themes (e.g., "Twenty Thirteen") just to see if your video does appear. If it suddenly works, then your custom theme is the issue. You can switch back when done testing.
|
140 |
+
|
141 |
+
== Frequently Asked Questions ==
|
142 |
+
|
143 |
+
= How do I add this YouTube plugin to WordPress? =
|
144 |
+
|
145 |
+
Watch the following YouTube video which shows the process for our specific plugin:
|
146 |
+
|
147 |
+
https://www.youtube.com/watch?v=9RveWWsrmuw
|
148 |
+
|
149 |
+
= How do I embed a YouTube video with a facade? =
|
150 |
+
|
151 |
+
See a demo on this [YouTube WordPress Test Page](https://youtube-wordpress-plugin.embedplus.com/youtube-embed-with-facade/)
|
152 |
+
|
153 |
+
= How do I create a YouTube gallery in WordPress? =
|
154 |
+
|
155 |
+
Here's a video that shows the steps with our YouTube plugin, along with the full set of gallery features:
|
156 |
+
|
157 |
+
https://www.youtube.com/watch?v=iMX5TMobCw4
|
158 |
+
|
159 |
+
= Why use a YouTube plugin? =
|
160 |
+
|
161 |
+
You can certainly embed YouTube videos in WordPress with oembed using the default embedder. However, a good YouTube WordPress plugin helps you easily embed and customize a video, playlist, channel, gallery, premiere, live stream, and facade. The premium version of this plugin has additional features like embed playback analytics.
|
162 |
+
|
163 |
+
= How to get a YouTube API key? =
|
164 |
+
|
165 |
+
To embed a gallery, livestream, schema tags, and more, you'll need to get a YouTube API key from Google. The Data API is free and comes with a decent quota, which can be extended. See here for [steps on creating a YouTube API key](https://www.embedplus.com/how-to-create-a-youtube-api-key.aspx).
|
166 |
+
|
167 |
+
You can also learn plenty of other tips on the [EmbedPlus How To Page](https://www.embedplus.com/youtube-plugin-documentation.aspx).
|
168 |
+
|
169 |
+
= How do I embed a YouTube livestream on WordPress? =
|
170 |
+
|
171 |
+
Assuming you already have the EmbedPlus plugin active, you can embed a YouTube stream (premiere or livestream) in a very similar manner.
|
172 |
+
|
173 |
+
* [Steps for a premiere](https://www.youtube.com/watch?v=PqroYZ1qVtY}
|
174 |
+
* [Steps for a standard live stream](https://www.youtube.com/watch?v=PQ5mY2WaqcI&t=218s)
|
175 |
+
|
176 |
+
== Screenshots ==
|
177 |
+
|
178 |
+
1. Embed Plus for YouTube WordPress Plugin Screenshot 1: Paste a YouTube link on its own line and it will become a YouTube embed on your website. Or, use the shortcode method.
|
179 |
+
2. Embed Plus for YouTube WordPress Plugin Screenshot 2: How to get to YouTube's admin settings
|
180 |
+
3. Embed Plus for YouTube WordPress Plugin Screenshot 3: Visual YouTube Wizard and Search Tool
|
181 |
+
4. Embed Plus for YouTube WordPress Plugin Screenshot 4: Wizard Insert Search Result Screenshot
|
182 |
+
5. Embed Plus for YouTube WordPress Plugin Screenshot 5: Wizard Search Results Screenshot
|
183 |
+
6. Embed Plus for YouTube WordPress Plugin Screenshot 6: Gallery layout for a playlist or channel
|
184 |
+
7. Embed Plus for YouTube WordPress Plugin Screenshot 7: YouTube playlist galleries are also easily supported. Here's the Billboard Top 25 Songs for example.
|
185 |
+
8. Embed Plus for YouTube WordPress Plugin Screenshot 8: Localization/internationalization so you can set the player's interface language
|
186 |
+
9. Embed Plus for YouTube WordPress Plugin Screenshot 9: Optional YouTube channel subscription button above gallery thumbnails
|
187 |
+
|
188 |
+
== Changelog ==
|
189 |
+
|
190 |
+
= Embed Plus for YouTube WordPress Plugin 14.1 =
|
191 |
+
* Adds the live stream fallback feature to channel-based live stream embeds
|
192 |
+
|
193 |
+
= Embed Plus for YouTube WordPress Plugin 14.0.1.4 =
|
194 |
+
* YouTube Wizard compatibility for WordPress 5.9+
|
195 |
+
|
196 |
+
= Embed Plus for YouTube WordPress Plugin 14.0.1.3 =
|
197 |
+
* Patch for 14.0.1.2, JS fix for compatibility with jQuery 3.0+
|
198 |
+
|
199 |
+
= Embed Plus for YouTube WordPress Plugin 14.0.1.2 =
|
200 |
+
* Fix facade playlist embed issue
|
201 |
+
* Improve compatibility with AJAX themes
|
202 |
+
|
203 |
+
= Embed Plus for YouTube WordPress Plugin 14.0.1.1 =
|
204 |
+
* Patch for 14.0.1, higher resolution for facade images
|
205 |
+
|
206 |
+
= Embed Plus for YouTube WordPress Plugin 14.0.1 =
|
207 |
+
* Higher resolution for facade images
|
208 |
+
* Fix CSS issue with GDPR embeds
|
209 |
+
* YouTube shorts support
|
210 |
+
|
211 |
+
= Embed Plus for YouTube WordPress Plugin 14.0 =
|
212 |
+
* New facade mode for lighter and faster page loads (see Performance tab)
|
213 |
+
* CSS fixes
|
214 |
+
|
215 |
+
= Embed Plus for YouTube WordPress Plugin 13.4.3 =
|
216 |
+
* Automatically turn on default dimensions for new installations, to skip oEmbed width/height lookups. Improves performance (recommended for all users, given most YouTube videos are 16:9 ratio)
|
217 |
+
* Better compatibility with cookie compliance plugins that overtake the player with a placeholder
|
218 |
+
|
219 |
+
= Embed Plus for YouTube WordPress Plugin 13.4.2 =
|
220 |
+
* Compatible with latest jQuery updates
|
221 |
+
* Compatible with WordPress 5.7+
|
222 |
+
|
223 |
+
= Embed Plus for YouTube WordPress Plugin 13.4.1.2 =
|
224 |
+
* Allows you to specify the default language (when available) that the player will use to display closed captions
|
225 |
+
|
226 |
+
= Embed Plus for YouTube WordPress Plugin 13.4.1.1 =
|
227 |
+
* Prevent deprecated notice for wp_make_content_images_responsive filter
|
228 |
+
|
229 |
+
= Embed Plus for YouTube WordPress Plugin 13.4.1 =
|
230 |
+
* Better compatibility with WordPress 5.5
|
231 |
+
|
232 |
+
= Embed Plus for YouTube WordPress Plugin 13.4 =
|
233 |
+
* Better compatibility with themes that use the Gutenberg block editor and responsive sizing
|
234 |
+
* Fix notice on new installs
|
235 |
+
* Add pagebuilder tips to Wizard tab of the documentation
|
236 |
+
|
237 |
+
= Embed Plus for YouTube WordPress Plugin 13.3.1 =
|
238 |
+
* Fix simultaneous playback control issue
|
239 |
+
* Add support for premiere video embedding
|
240 |
+
|
241 |
+
= Embed Plus for YouTube WordPress Plugin 13.2.3 =
|
242 |
+
* Defer JavaScript for performance
|
243 |
+
* Compatibility between loop and hide relative videos features
|
244 |
+
* Simultaneous playback control
|
245 |
+
|
246 |
+
= Embed Plus for YouTube WordPress Plugin 13.2.1 =
|
247 |
+
* Provides more compatibility with other lazyload plugins and responsive themes
|
248 |
+
|
249 |
+
= Embed Plus for YouTube WordPress Plugin 13.2.0.2 =
|
250 |
+
* Fixes the "Hide related videos at the end of playback" feature (fixes issue with galleries)
|
251 |
+
|
252 |
+
= Embed Plus for YouTube WordPress Plugin 13.2.0.1 =
|
253 |
+
* Compatibility with legacy versions of PHP
|
254 |
+
* Fix Responsive sizing issue with lazyloading plugins
|
255 |
+
|
256 |
+
= Embed Plus for YouTube WordPress Plugin 13.2 =
|
257 |
+
* Add ability to embed a live stream from a given channel
|
258 |
+
* Reduction in live stream YouTube API quota usage
|
259 |
+
* Compatibility with other plugins having tabbed sections (e.g. Yuzo)
|
260 |
+
* Show YouTube API errors to admins only
|
261 |
+
|
262 |
+
= Embed Plus for YouTube WordPress Plugin 13.1.2.5 =
|
263 |
+
* Improve responsive sizing aspect ratio in widgets
|
264 |
+
* Fix issue: some users receive 403 error when saving
|
265 |
+
|
266 |
+
= Embed Plus for YouTube WordPress Plugin 13.1.2.4 =
|
267 |
+
* Pagination and autonext allow the current video to play
|
268 |
+
* Pagination on mobile fix
|
269 |
+
* vi deprecation announcement
|
270 |
+
|
271 |
+
= Embed Plus for YouTube WordPress Plugin 13.1.2.3 =
|
272 |
+
* gallery thumbnail mobile tap/scroll fix
|
273 |
+
|
274 |
+
= Embed Plus for YouTube WordPress Plugin 13.1.2.2 =
|
275 |
+
* Wizard open/close fix
|
276 |
+
* iOS gallery thumbnail click fix
|
277 |
+
* class-oembed deprecation fix
|
278 |
+
|
279 |
+
= Embed Plus for YouTube WordPress Plugin 13.1.2.1 =
|
280 |
+
* Compatibility with legacy versions of PHP
|
281 |
+
|
282 |
+
= Embed Plus for YouTube WordPress Plugin 13.1.2 =
|
283 |
+
* More descriptive plugin name
|
284 |
+
* Gallery column size and YouTube API message fixes
|
285 |
+
|
286 |
+
= Embed Plus for YouTube WordPress Plugin 13.1.1 =
|
287 |
+
* Fixes gallery autonext issue
|
288 |
+
* Fixes deprecated controls parameter
|
289 |
+
* Fixes "not live" content issue
|
290 |
+
* Remove deprecated showinfo parameter
|
291 |
+
|
292 |
+
= Embed Plus for YouTube WordPress Plugin 13.1 =
|
293 |
+
* Brings back the ability to hide related/suggested videos at end of playback
|
294 |
+
* Allows monetized sites to select multiple IAB categories
|
295 |
+
* Option to run shortcode in admin (compatibility tab)
|
296 |
+
* Lowers quota usage for live videos
|
297 |
+
* Fixes "missing dependencies" block editor CSS reference
|
298 |
+
* Fixes default dimensions issue
|
299 |
+
|
300 |
+
= Embed Plus for YouTube WordPress Plugin 13.0.1 =
|
301 |
+
* Clearer instructions
|
302 |
+
* Feature deprecation (rel, showinfo)
|
303 |
+
|
304 |
+
= Embed Plus for YouTube WordPress Plugin 13.0 =
|
305 |
+
* Compatible with the new Gutenberg block editor, and stays backwards-compatible with the classic editor
|
306 |
+
* Marked deprecated features
|
307 |
+
* Improved wizard instructions
|
308 |
+
|
309 |
+
= Embed Plus for YouTube WordPress Plugin 12.2 =
|
310 |
+
* Improved ads.txt verification management
|
311 |
+
* Fixed gallery box-sizing bug
|
312 |
+
* Remove some deprecated YouTube parameters
|
313 |
+
|
314 |
+
= Embed Plus for YouTube WordPress Plugin 12.1 =
|
315 |
+
* Improved autoplay compatibility
|
316 |
+
* Improved sign-up process for the new monetization feature
|
317 |
+
|
318 |
+
= Embed Plus for YouTube WordPress Plugin 12.0.1 =
|
319 |
+
* Force HTTPS for the YouTube API if the API is enabled
|
320 |
+
* Makes the wizard's lightbox expand/contract responsively for different size screens
|
321 |
+
|
322 |
+
= Embed Plus for YouTube WordPress Plugin 12.0 =
|
323 |
+
* Improves the admin interface, and includes a new optional feature for users that want to monetize their sites through contextual video from vi.ai.
|
324 |
+
|
325 |
+
= Embed Plus for YouTube WordPress Plugin 11.9.2 =
|
326 |
+
* Makes the GDPR consent message display more compatible with other plugins (fixes content filter)
|
327 |
+
|
328 |
+
= Embed Plus for YouTube WordPress Plugin 11.9.1 =
|
329 |
+
Improved GDPR compliance, with new Privacy section containing:
|
330 |
+
* GDPR consent mode
|
331 |
+
* YouTube no cookie
|
332 |
+
* YouTube API loading restrictions
|
333 |
+
|
334 |
+
= Embed Plus for YouTube WordPress Plugin 11.8.7 =
|
335 |
+
* Helps with GDPR compliance by allowing you to choose when YouTube.com's API is loaded
|
336 |
+
|
337 |
+
= Embed Plus for YouTube WordPress Plugin 11.8.6.1 =
|
338 |
+
* Rollback jQuery Updater plugin compatibility
|
339 |
+
|
340 |
+
= Embed Plus for YouTube WordPress Plugin 11.8.6 =
|
341 |
+
* Updated YouTube API key video tutorial
|
342 |
+
* Improved channel wizard process
|
343 |
+
* Better compatibility with jQuery Updater plugin
|
344 |
+
|
345 |
+
= Embed Plus for YouTube WordPress Plugin 11.8.5 =
|
346 |
+
* Adds the YouTube wizard button to the new built-in WordPress text widget
|
347 |
+
* Fixes a Mac/iOS gallery scrolling issue
|
348 |
+
|
349 |
+
= Embed Plus for YouTube WordPress Plugin 11.8.4 =
|
350 |
+
* Fixes gallery AJAX issue
|
351 |
+
* Adds ability to hide fullscreen button
|
352 |
+
* Adds ability to hide private videos from galleries
|
353 |
+
* Changes localized script dependency to jquery
|
354 |
+
|
355 |
+
= Embed Plus for YouTube WordPress Plugin 11.8.3 =
|
356 |
+
* Improved compatibility with PHP 7
|
357 |
+
* Improved compatibility with Divi theme
|
358 |
+
* Improved AJAX compatibility
|
359 |
+
* Improved accessibility
|
360 |
+
* Fix gallery scrolling
|
361 |
+
* Fix "not live" content output
|
362 |
+
* Modernize and improve wizard interface (Pro)
|
363 |
+
* Ability to hide thumbnail images from galleries (Pro)
|
364 |
+
|
365 |
+
= Embed Plus for YouTube WordPress Plugin 11.8.2 =
|
366 |
+
* Fix auto-next gallery issue
|
367 |
+
* Make settings form more secure
|
368 |
+
|
369 |
+
= Embed Plus for YouTube WordPress Plugin 11.8.1 =
|
370 |
+
* Fix playlist gallery issue
|
371 |
+
|
372 |
+
= Embed Plus for YouTube WordPress Plugin 11.8 =
|
373 |
+
* Improved AJAX theme compatibility
|
374 |
+
* Ability to choose which roles can use the editor wizard
|
375 |
+
* Volume + autoplay fix
|
376 |
+
|
377 |
+
= Embed Plus for YouTube WordPress Plugin 11.7.1 =
|
378 |
+
* Remove gallery thumbnail translucency
|
379 |
+
* Various bug fixes for galleries and the wizard
|
380 |
+
|
381 |
+
= Embed Plus for YouTube WordPress Plugin 11.7 =
|
382 |
+
* Separate Free and Pro codebases
|
383 |
+
* Remove deprecated features
|
384 |
+
* Clean up code
|
385 |
+
|
386 |
+
= Embed Plus for YouTube WordPress Plugin 11.6 =
|
387 |
+
* Fixed issue where Free version had some remnants of Pro analytics codebase supporting features here: https://www.embedplus.com/dashboard/easy-youtube-analytics-preview.aspx?platform=sim
|
388 |
+
* New feature: live streaming from a channel
|
389 |
+
* Optimized player and gallery loading that may improve Lighthouse reports
|
390 |
+
* Improved compatibility with pagebuilders
|
391 |
+
* Improved compatibility with later versions of jQuery
|
392 |
+
* Removed frameborder for W3C validation
|
393 |
+
* Gallery pagination enhancement
|
394 |
+
* PHP 7 compatibility testing
|
395 |
+
|
396 |
+
= Embed Plus for YouTube WordPress Plugin 11.5 =
|
397 |
+
* thumbnail stacking for mobile galleries
|
398 |
+
* better support for ajax themes
|
399 |
+
* alt text to images
|
400 |
+
|
401 |
+
= Embed Plus for YouTube WordPress Plugin 11.4 =
|
402 |
+
* (Free) Improved subscribe button CSS and a new migration option.
|
403 |
+
* (Pro) Improved accessibility for popup lightbox galleries.
|
404 |
+
|
405 |
+
= Embed Plus for YouTube WordPress Plugin 11.3.1 =
|
406 |
+
* (Free) improved debug mode messages
|
407 |
+
* (Pro) autonext for popup lightbox galleries and hide clear cache button option
|
408 |
+
|
409 |
+
= Embed Plus for YouTube WordPress Plugin 11.3 =
|
410 |
+
* Improved responsive sizing for AJAX-based themes
|
411 |
+
* Popup lightbox display option for Pro galleries
|
412 |
+
|
413 |
+
= Embed Plus for YouTube WordPress Plugin 11.2 =
|
414 |
+
* Adds improved wizard and gallery options for Free and Pro users.
|
415 |
+
* Improved handling of PHP notices.
|
416 |
+
* Clear cache shortcut added for Pro users.
|
417 |
+
|
418 |
+
= Embed Plus for YouTube WordPress Plugin 11.1 =
|
419 |
+
* Automatic continuous play for playlist and channel gallery embeds.
|
420 |
+
* Ability to add a YouTube channel subscription link to all galleries.
|
421 |
+
* Ability to hide Previous/Next buttons and page numbers.
|
422 |
+
* Featured images can now be pulled from playlists (using the thumbnail of the first video).
|
423 |
+
|
424 |
+
= Embed Plus for YouTube WordPress Plugin 11.0.1 =
|
425 |
+
Improves HTTPS support for structured data tags, and HTTPS support in Firefox.
|
426 |
+
|
427 |
+
= Embed Plus for YouTube WordPress Plugin 11.0 =
|
428 |
+
Improves playlist and gallery embedding functionality.
|
429 |
+
|
430 |
+
= Embed Plus for YouTube WordPress Plugin 10.9 =
|
431 |
+
This version offers a host of updates: compatibility fixes, higher quality featured images, selective responsive sizing, wizard enhancements, and circular shaped thumbnails.
|
432 |
+
|
433 |
+
= Embed Plus for YouTube WordPress Plugin 10.8 =
|
434 |
+
This update improves compatibility and adds features to Free and Pro galleries.
|
435 |
+
|
436 |
+
= Embed Plus for YouTube WordPress Plugin 10.7 =
|
437 |
+
Adds legacy option.
|
438 |
+
|
439 |
+
= Embed Plus for YouTube WordPress Plugin 10.6 =
|
440 |
+
Enhanced debugging support for galleries.
|
441 |
+
|
442 |
+
= Embed Plus for YouTube WordPress Plugin 10.5 =
|
443 |
+
Enhanced gallery settings for scrolling, video titles, and thumbnail styling.
|
444 |
+
|
445 |
+
= Embed Plus for YouTube WordPress Plugin 10.4 =
|
446 |
+
Addresses limitations some users were getting when pasting a YouTube channel and/or playlist gallery.
|
447 |
+
|
448 |
+
= Embed Plus for YouTube WordPress Plugin 10.3 =
|
449 |
+
Adds the ability to make playlist and channel embeds have a gallery layout. By the default, the plugin can generate a grid-based [responsive playlist and channel gallery >>](https://www.embedplus.com/responsive-youtube-playlist-channel-gallery-for-wordpress.aspx)
|
450 |
+
|
451 |
+
= Embed Plus for YouTube WordPress Plugin 10.2 =
|
452 |
+
Adds start video settings for playlist embeds. You can now choose to start a playlist with a specific video or have the plugin automatically start with the most recently added video.
|
453 |
+
|
454 |
+
= Embed Plus for YouTube WordPress Plugin 10.1 =
|
455 |
+
Adds the ability to automatically migrate from another plugin's shortcode. Caching feature now allows lifetime settings. Improved compatibility with other plugins using the YouTube API.
|
456 |
+
|
457 |
+
= Embed Plus for YouTube WordPress Plugin 10.0 =
|
458 |
+
This update includes improved tips (Free and Pro) and adds caching to the Pro version for faster page loading.
|
459 |
+
|
460 |
+
= Embed Plus for YouTube WordPress Plugin 9.8 =
|
461 |
+
Upgraded code to use YouTube API v3.
|
462 |
+
|
463 |
+
= Embed Plus for YouTube WordPress Plugin 9.7 =
|
464 |
+
Adds improved accessibility for screen readers and video thumbnail as featured image support.
|
465 |
+
|
466 |
+
= Embed Plus for YouTube WordPress Plugin 9.5 =
|
467 |
+
Site origin information with each embed code as an extra security measure. In YouTube's/Google's own words, checking this option "protects against malicious third-party JavaScript being injected into your page and hijacking control of your YouTube player." We especially recommend checking it as it adds higher security than the built-in YouTube embedding method that comes with the current version of WordPress (i.e. oembed).
|
468 |
+
|
469 |
+
= Embed Plus for YouTube WordPress Plugin 9.4 =
|
470 |
+
Adds Autofit Widget option for Free and PRO users. Also adds slide from left animation to [PRO effects >>](https://www.embedplus.com/add-special-effects-to-youtube-embeds-in-wordpress.aspx)
|
471 |
+
|
472 |
+
= Embed Plus for YouTube WordPress Plugin 9.3 =
|
473 |
+
Improved volume functionality and interface updates (Free and PRO). [Special effects added to PRO version >>](https://www.embedplus.com/add-special-effects-to-youtube-embeds-in-wordpress.aspx)
|
474 |
+
|
475 |
+
= Embed Plus for YouTube WordPress Plugin 9.2 =
|
476 |
+
HTTPS/SSL detection is now fully automatic. The manual checkbox is no longer needed.
|
477 |
+
|
478 |
+
= Embed Plus for YouTube WordPress Plugin 9.1 =
|
479 |
+
With this version, the plugin can now automatically detect your site's default language and set the interface of the embedded YouTube player to match.
|
480 |
+
|
481 |
+
= Embed Plus for YouTube WordPress Plugin 9.0 =
|
482 |
+
Adds automatic localization/internationalization so you can set the player's interface language from English to another.
|
483 |
+
|
484 |
+
= Embed Plus for YouTube WordPress Plugin 8.9 =
|
485 |
+
Allows volume level initialization.
|
486 |
+
|
487 |
+
= Embed Plus for YouTube WordPress Plugin 8.8 =
|
488 |
+
* Better embedplus plugin conflict notifications.
|
489 |
+
* Greater emphasis on HTTPS support due to Google's recent announcement about [HTTPS/SSL as an SEO/SERP signal](https://embedplus.com/convert-old-youtube-embeds-to-https-ssl.aspx).
|
490 |
+
* Supports latest version of WordPress (3.9.2).
|
491 |
+
|
492 |
+
= Embed Plus for YouTube WordPress Plugin 8.7 =
|
493 |
+
(PRO) Extends the plugin's existing tagging capabilities by also adding Open Graph markup to enhance Facebook sharing/discovery of your pages.
|
494 |
+
|
495 |
+
= Embed Plus for YouTube WordPress Plugin 8.6 =
|
496 |
+
Expanded HTTPS/SSL support.
|
497 |
+
|
498 |
+
= Embed Plus for YouTube WordPress Plugin 8.5 =
|
499 |
+
This update features a new iOS related option for both Free and PRO users. PRO users additionally have the new mobile compatibility checker.
|
500 |
+
|
501 |
+
= Embed Plus for YouTube WordPress Plugin 8.4 =
|
502 |
+
This update features improved responsive theme support for both Free and PRO versions. It also adds refined schema tag support to the Pro SEO feature.
|
503 |
+
|
504 |
+
= Embed Plus for YouTube WordPress Plugin 8.3 =
|
505 |
+
Now compatible with WordPress 3.9.
|
506 |
+
|
507 |
+
= Embed Plus for YouTube WordPress Plugin 8.2 =
|
508 |
+
An at a glance regex improvement (all users). Dashboard now warns you of embeds that are blocked from your visitors in other countries (PRO).
|
509 |
+
|
510 |
+
= Embed Plus for YouTube WordPress Plugin 8.1 =
|
511 |
+
Fixes rare YouTube ID issue.
|
512 |
+
|
513 |
+
= Embed Plus for YouTube WordPress Plugin 8.0 =
|
514 |
+
Fixes rare ajax issue.
|
515 |
+
|
516 |
+
= Embed Plus for YouTube WordPress Plugin 7.9 =
|
517 |
+
YouTube searching and inserting now works in Text mode of the editor too.
|
518 |
+
|
519 |
+
= Embed Plus for YouTube WordPress Plugin 7.8 =
|
520 |
+
"At a Glance" direct access to YouTube posts/pages.
|
521 |
+
|
522 |
+
= Embed Plus for YouTube WordPress Plugin 7.7 =
|
523 |
+
Fixes black bar issue when no height/width is specified.
|
524 |
+
|
525 |
+
= Embed Plus for YouTube WordPress Plugin 7.6 =
|
526 |
+
Added notice about Google's HD problem.
|
527 |
+
|
528 |
+
= Embed Plus for YouTube WordPress Plugin 7.5 =
|
529 |
+
Ability to embed an entire channel as a playlist embed.
|
530 |
+
|
531 |
+
= Embed Plus for YouTube WordPress Plugin 7.3 =
|
532 |
+
Change the color of the progress bar from red to white.
|
533 |
+
|
534 |
+
= Embed Plus for YouTube WordPress Plugin 7.2 =
|
535 |
+
Added music video extras to inspire your posts (PRO).
|
536 |
+
|
537 |
+
= Embed Plus for YouTube WordPress Plugin 7.1 =
|
538 |
+
Added autohide controls feature
|
539 |
+
|
540 |
+
= Embed Plus for YouTube WordPress Plugin 7.0 =
|
541 |
+
Shortcode support for embedding multiple videos on one line
|
542 |
+
|
543 |
+
= Embed Plus for YouTube WordPress Plugin 6.4 =
|
544 |
+
Fixes for some users of WordPress 3.8
|
545 |
+
|
546 |
+
= Embed Plus for YouTube WordPress Plugin 6.3 =
|
547 |
+
Removed possible e_notices.
|
548 |
+
|
549 |
+
= Embed Plus for YouTube WordPress Plugin 6.2 =
|
550 |
+
Given the increasing focus on privacy, the no-cookies options was added as a free option to all users. Priority support enhancements also made.
|
551 |
+
|
552 |
+
= Embed Plus for YouTube WordPress Plugin 6.1 =
|
553 |
+
Easier access to general settings and dashboard.
|
554 |
+
|
555 |
+
= Embed Plus for YouTube WordPress Plugin 6.0 =
|
556 |
+
This version opens up the ability to view Internet video discussions to all wizard users.
|
557 |
+
**Also, due to numerous users being unable to find the wizard button, we moved it up next to the "Add Media" button.**
|
558 |
+
Finally, we added Video SEO tags as a PRO option.
|
559 |
+
|
560 |
+
= Embed Plus for YouTube WordPress Plugin 5.1 =
|
561 |
+
Added ability to set default dimensions.
|
562 |
+
Enhanced compatibility with SSL sites.
|
563 |
+
|
564 |
+
= Embed Plus for YouTube WordPress Plugin 5.0 =
|
565 |
+
Built-in YouTube video search, viewing, and insertion right from your editor tab (for all users).
|
566 |
+
The ability to review the latest web discussions about a video you want to embed before embedding it (PRO users).
|
567 |
+
Other minor optimizations.
|
568 |
+
|
569 |
+
= Embed Plus for YouTube WordPress Plugin 4.8 =
|
570 |
+
Works when pasting embed link in sidebar text widgets
|
571 |
+
|
572 |
+
= Embed Plus for YouTube WordPress Plugin 4.7 =
|
573 |
+
Improved separation of PRO and Free features in the UI
|
574 |
+
|
575 |
+
= Embed Plus for YouTube WordPress Plugin 4.6 =
|
576 |
+
Added optional responsive video layout to fit all screen sizes. (smart phone, PC and tablet)
|
577 |
+
|
578 |
+
= Embed Plus for YouTube WordPress Plugin 4.5 =
|
579 |
+
Added support for playlists.
|
580 |
+
added support for wmode.
|
581 |
+
|
582 |
+
= Embed Plus for YouTube WordPress Plugin 4.1 =
|
583 |
+
Fixed spacing issue. Also added ability to fall back to old spacing format.
|
584 |
+
|
585 |
+
= Embed Plus for YouTube WordPress Plugin 4.0 =
|
586 |
+
New features for all users: lazy loading for the flash player by default and the ability to hide player controls for a cleaner look.
|
587 |
+
|
588 |
+
= Embed Plus for YouTube WordPress Plugin 3.7 =
|
589 |
+
Enhanced deleted video checker for PRO users
|
590 |
+
|
591 |
+
= Embed Plus for YouTube WordPress Plugin 3.5 =
|
592 |
+
Added ability to try to force HTML5 player to speed up page loading
|
593 |
+
|
594 |
+
= Embed Plus for YouTube WordPress Plugin 3.3 =
|
595 |
+
HTTPS: Added secure YouTube embedding
|
596 |
+
|
597 |
+
= Embed Plus for YouTube WordPress Plugin 3.2 =
|
598 |
+
Ensures video-specific height overrides defaults properly
|
599 |
+
|
600 |
+
= Embed Plus for YouTube WordPress Plugin 3.1 =
|
601 |
+
Fixed obscure height problem
|
602 |
+
|
603 |
+
= Embed Plus for YouTube WordPress Plugin 3.0 =
|
604 |
+
Added Visual YouTube Wizard for PRO users
|
605 |
+
Added autologin to analytics for PRO users
|
606 |
+
Added priority support form for PRO users
|
607 |
+
|
608 |
+
= Embed Plus for YouTube WordPress Plugin 2.6 =
|
609 |
+
Compatible with WP 3.6
|
610 |
+
|
611 |
+
= Embed Plus for YouTube WordPress Plugin 2.4 =
|
612 |
+
Added auto HD support
|
613 |
+
Support for shorthand (i.e. `"https://www.youtu.be"`)
|
614 |
+
Fixed editor issue
|
615 |
+
|
616 |
+
= Embed Plus for YouTube WordPress Plugin 2.3 =
|
617 |
+
Start/end time shortcut bug fix
|
618 |
+
|
619 |
+
= Embed Plus for YouTube WordPress Plugin 2.2 =
|
620 |
+
Minor changes
|
621 |
+
|
622 |
+
= Embed Plus for YouTube WordPress Plugin 2.1 =
|
623 |
+
By request from several users, we've added easier access to the video analytics dashboard
|
624 |
+
|
625 |
+
= Embed Plus for YouTube WordPress Plugin 2.0 =
|
626 |
+
|
627 |
+
This upgrade specifically integrates a user-friendly YouTube Analytics Dashboard to this plugin so you can learn a lot more about the videos you post. Download it if you would like it to use your site's YouTube-related activity to help answer questions like:
|
628 |
+
|
629 |
+
* How much are your visitors actually watching the videos you post?
|
630 |
+
* How does the view activity on your site compare to other sites like it?
|
631 |
+
* What and when are your best and worst performers?
|
632 |
+
* How much do the producers of the YouTube videos you embed rely on **your site** for views?
|
633 |
+
|
634 |
+
We think these are all interesting questions; however, note that there's no need to upgrade if you don't.
|
635 |
+
|
636 |
+
= Embed Plus for YouTube WordPress Plugin 1.1 =
|
637 |
+
Fixed minor bug.
|
638 |
+
|
639 |
+
= Embed Plus for YouTube WordPress Plugin 1.0 =
|
640 |
+
First release uploaded to the plugin repository.
|
641 |
+
|
642 |
+
== Other Notes ==
|
643 |
+
|
644 |
+
This YouTube plugin can include premium features like lazy load (with animation), alternate playlist and channel gallery styles, automatic video thumbnail support, automatic schema tagging for video SEO, mobile compatibility checking, and deleted video alerts when you [upgrade to PRO](https://www.embedplus.com/dashboard/pro-easy-video-analytics.aspx?ref=readme).
|
scripts/ytprefs.js
CHANGED
@@ -13,7 +13,8 @@
|
|
13 |
ajax_compat: false,
|
14 |
usingdefault: true,
|
15 |
ytapi_load: 'light',
|
16 |
-
pause_others: false
|
|
|
17 |
};
|
18 |
|
19 |
window._EPYT_.touchmoved = false;
|
@@ -87,11 +88,21 @@
|
|
87 |
|
88 |
try
|
89 |
{
|
90 |
-
var
|
|
|
91 |
window._EPYT_.apiVideos[apiVideoId] = event.target;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
92 |
}
|
93 |
-
|
94 |
{
|
|
|
95 |
}
|
96 |
},
|
97 |
onPlayerStateChange: function (event)
|
@@ -160,6 +171,54 @@
|
|
160 |
{
|
161 |
return /Mobi|Android/i.test(navigator.userAgent);
|
162 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
163 |
videoEqual: function (a, b)
|
164 |
{
|
165 |
if (a.getIframe && b.getIframe && a.getIframe().id === b.getIframe().id)
|
@@ -330,6 +389,14 @@
|
|
330 |
},
|
331 |
pageReady: function ()
|
332 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
333 |
$('.epyt-gallery').each(function ()
|
334 |
{
|
335 |
var $container = $(this);
|
13 |
ajax_compat: false,
|
14 |
usingdefault: true,
|
15 |
ytapi_load: 'light',
|
16 |
+
pause_others: false,
|
17 |
+
not_live_on_channel: false
|
18 |
};
|
19 |
|
20 |
window._EPYT_.touchmoved = false;
|
88 |
|
89 |
try
|
90 |
{
|
91 |
+
var apiVideoIframe = event.target.getIframe();
|
92 |
+
var apiVideoId = apiVideoIframe.getAttribute("id");
|
93 |
window._EPYT_.apiVideos[apiVideoId] = event.target;
|
94 |
+
|
95 |
+
if (window._EPYT_.not_live_on_channel && event.target.getVideoUrl().indexOf('live_stream') > 0)
|
96 |
+
{
|
97 |
+
window._EPADashboard_.doLiveFallback(apiVideoIframe);
|
98 |
+
}
|
99 |
+
}
|
100 |
+
catch (liveErr)
|
101 |
+
{
|
102 |
}
|
103 |
+
finally
|
104 |
{
|
105 |
+
$(event.target.getIframe()).css('opacity', 1);
|
106 |
}
|
107 |
},
|
108 |
onPlayerStateChange: function (event)
|
171 |
{
|
172 |
return /Mobi|Android/i.test(navigator.userAgent);
|
173 |
},
|
174 |
+
base64DecodeUnicode: function (str)
|
175 |
+
{
|
176 |
+
str = str.replace(/\s/g, '');
|
177 |
+
return decodeURIComponent(Array.prototype.map.call(atob(str), function (c)
|
178 |
+
{
|
179 |
+
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)
|
180 |
+
}).join(''))
|
181 |
+
},
|
182 |
+
doLiveFallback: function (playerIframe)
|
183 |
+
{
|
184 |
+
var $swapBlock = $(playerIframe).closest('.wp-block-embed');
|
185 |
+
if (!$swapBlock.length)
|
186 |
+
{
|
187 |
+
$swapBlock = $(playerIframe).closest('.epyt-live-chat-wrapper');
|
188 |
+
}
|
189 |
+
if (!$swapBlock.length)
|
190 |
+
{
|
191 |
+
$swapBlock = $(playerIframe).closest('.epyt-video-wrapper');
|
192 |
+
}
|
193 |
+
|
194 |
+
if ($swapBlock.length)
|
195 |
+
{
|
196 |
+
var $liveFallbackBlock = $('#epyt-live-fallback');
|
197 |
+
if ($liveFallbackBlock.length)
|
198 |
+
{
|
199 |
+
var fallbackHtml = '';
|
200 |
+
try
|
201 |
+
{
|
202 |
+
fallbackHtml = window._EPADashboard_.base64DecodeUnicode($liveFallbackBlock.get(0).innerHTML);
|
203 |
+
}
|
204 |
+
catch (fallbackErr)
|
205 |
+
{
|
206 |
+
}
|
207 |
+
if (fallbackHtml)
|
208 |
+
{
|
209 |
+
var $swapBlockParent = $swapBlock.parent();
|
210 |
+
window._EPADashboard_.loadYTAPI();
|
211 |
+
$swapBlock.replaceWith(fallbackHtml);
|
212 |
+
window._EPADashboard_.apiInit();
|
213 |
+
window._EPADashboard_.pageReady();
|
214 |
+
setTimeout(function ()
|
215 |
+
{
|
216 |
+
$($swapBlockParent).fitVidsEP();
|
217 |
+
}, 1);
|
218 |
+
}
|
219 |
+
}
|
220 |
+
}
|
221 |
+
},
|
222 |
videoEqual: function (a, b)
|
223 |
{
|
224 |
if (a.getIframe && b.getIframe && a.getIframe().id === b.getIframe().id)
|
389 |
},
|
390 |
pageReady: function ()
|
391 |
{
|
392 |
+
if (window._EPYT_.not_live_on_channel && window._EPYT_.ytapi_load !== 'never')
|
393 |
+
{
|
394 |
+
$('.epyt-live-channel').css('opacity', 0);
|
395 |
+
setTimeout(function ()
|
396 |
+
{
|
397 |
+
$('.epyt-live-channel').css('opacity', 1);
|
398 |
+
}, 4000);
|
399 |
+
}
|
400 |
$('.epyt-gallery').each(function ()
|
401 |
{
|
402 |
var $container = $(this);
|
scripts/ytprefs.min.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
|
2 |
-
(function(a,b){a._EPYT_=a._EPYT_||{ajaxurl:"/wp-admin/admin-ajax.php",security:"",gallery_scrolloffset:100,eppathtoscripts:"/wp-content/plugins/youtube-embed-plus/scripts/",eppath:"/wp-content/plugins/youtube-embed-plus/",epresponsiveselector:["iframe.__youtube_prefs_widget__"],epdovol:true,evselector:'iframe.__youtube_prefs__[src], iframe[src*="youtube.com/embed/"], iframe[src*="youtube-nocookie.com/embed/"]',stopMobileBuffer:true,ajax_compat:false,usingdefault:true,ytapi_load:"light",pause_others:false};a._EPYT_.touchmoved=false;a._EPYT_.apiVideos=a._EPYT_.apiVideos||{};if(a.location.toString().indexOf("https://")===0){a._EPYT_.ajaxurl=a._EPYT_.ajaxurl.replace("http://","https://")}a._EPYT_.pageLoaded=false;b(a).on("load._EPYT_",function(){a._EPYT_.pageLoaded=true});if(!document.querySelectorAll){document.querySelectorAll=function(d){var f=document,e=f.documentElement.firstChild,c=f.createElement("STYLE");e.appendChild(c);f.__qsaels=[];c.styleSheet.cssText=d+"{x:expression(document.__qsaels.push(this))}";a.scrollBy(0,0);return f.__qsaels}}if(typeof a._EPADashboard_==="undefined"){a._EPADashboard_={initStarted:false,checkCount:0,onPlayerReady:function(h){try{if(typeof _EPYT_.epdovol!=="undefined"&&_EPYT_.epdovol){var f=parseInt(h.target.getIframe().getAttribute("data-vol"));if(!isNaN(f)){if(f===0){h.target.mute()}else{if(h.target.isMuted()){h.target.unMute()}h.target.setVolume(f)}}}var e=parseInt(h.target.getIframe().getAttribute("data-epautoplay"));if(!isNaN(e)&&e===1){h.target.playVideo()}}catch(g){}try{var d=h.target.getIframe().getAttribute("id");a._EPYT_.apiVideos[d]=h.target}catch(c){}},onPlayerStateChange:function(f){var e=f.target.getIframe();if(a._EPYT_.pause_others&&f.data===a.YT.PlayerState.PLAYING){a._EPADashboard_.pauseOthers(f.target)}if(f.data===a.YT.PlayerState.PLAYING&&f.target.ponce!==true&&e.src.indexOf("autoplay=1")===-1){f.target.ponce=true}if(f.data===a.YT.PlayerState.ENDED&&b(e).data("relstop")=="1"){if(typeof f.target.stopVideo==="function"){f.target.stopVideo()}else{var g=b(e).clone(true).off();g.attr("src",a._EPADashboard_.cleanSrc(g.attr("src").replace("autoplay=1","autoplay=0")));b(e).replaceWith(g);a._EPADashboard_.setupevents(g.attr("id"));e=g.get(0)}}var c=b(e).closest(".epyt-gallery");if(!c.length){c=b("#"+b(e).data("epytgalleryid"))}if(c.length){var d=c.find(".epyt-pagebutton").first().data("autonext")=="1";if(d&&f.data===a.YT.PlayerState.ENDED){var h=c.find(".epyt-current-video");if(!h.length){h=c.find(".epyt-gallery-thumb").first()}var i=h.find(" ~ .epyt-gallery-thumb").first();if(i.length){i.trigger("click")}else{c.find('.epyt-pagebutton.epyt-next[data-pagetoken!=""][data-pagetoken]').first().trigger("click")}}}},isMobile:function(){return/Mobi|Android/i.test(navigator.userAgent)},videoEqual:function(d,c){if(d.getIframe&&c.getIframe&&d.getIframe().id===c.getIframe().id){return true}return false},pauseOthers:function(e){if(!e){return}for(var d in a._EPYT_.apiVideos){var c=a._EPYT_.apiVideos[d];if(c&&typeof c.pauseVideo==="function"&&c!=e&&!_EPADashboard_.videoEqual(c,e)&&typeof c.getPlayerState==="function"&&[YT.PlayerState.BUFFERING,a.YT.PlayerState.PLAYING].indexOf(c.getPlayerState())>=0){c.pauseVideo()}}},justid:function(c){return new RegExp("[\\?&]v=([^&#]*)").exec(c)[1]},setupevents:function(e){if(typeof(a.YT)!=="undefined"&&a.YT!==null&&a.YT.loaded){var c=document.getElementById(e);if(!c.epytsetupdone){a._EPADashboard_.log("Setting up YT API events: "+e);c.epytsetupdone=true;var d={events:{onReady:a._EPADashboard_.onPlayerReady,onStateChange:a._EPADashboard_.onPlayerStateChange},host:(c.src||"").indexOf("nocookie")>0?"https://www.youtube-nocookie.com":"https://www.youtube.com"};return new a.YT.Player(e,d)}}},apiInit:function(){if(typeof(a.YT)!=="undefined"){a._EPADashboard_.initStarted=true;var c=document.querySelectorAll(_EPYT_.evselector);for(var d=0;d<c.length;d++){if(!c[d].hasAttribute("id")){c[d].id="_dytid_"+Math.round(Math.random()*8999+1000)}a._EPADashboard_.setupevents(c[d].id)}}},log:function(d){try{console.log(d)}catch(c){}},doubleCheck:function(){a._EPADashboard_.checkInterval=setInterval(function(){a._EPADashboard_.checkCount++;if(a._EPADashboard_.checkCount>=5||a._EPADashboard_.initStarted){clearInterval(a._EPADashboard_.checkInterval)}else{a._EPADashboard_.apiInit();a._EPADashboard_.log("YT API init check")}},1000)},selectText:function(e){if(document.selection){var c=document.body.createTextRange();c.moveToElementText(e);c.select()}else{if(a.getSelection){var d=a.getSelection();var c=document.createRange();c.selectNode(e);d.removeAllRanges();d.addRange(c)}}},setVidSrc:function(c,d){if(c.is(".epyt-facade")){c.attr("data-facadesrc",a._EPADashboard_.cleanSrc(d));c.trigger("click")}else{c.attr("src",a._EPADashboard_.cleanSrc(d));c.get(0).epytsetupdone=false;a._EPADashboard_.setupevents(c.attr("id"))}},cleanSrc:function(d){var c=d.replace("enablejsapi=1?enablejsapi=1","enablejsapi=1");return c},loadYTAPI:function(){if(typeof a.YT==="undefined"){if(a._EPYT_.ytapi_load!=="never"&&(a._EPYT_.ytapi_load==="always"||b('iframe[src*="youtube.com/embed/"], iframe[data-src*="youtube.com/embed/"], .__youtube_prefs__').length)){var c=document.createElement("script");c.src="https://www.youtube.com/iframe_api";c.type="text/javascript";document.getElementsByTagName("head")[0].appendChild(c)}}else{if(a.YT.loaded){if(a._EPYT_.pageLoaded){a._EPADashboard_.apiInit();a._EPADashboard_.log("YT API available")}else{b(a).on("load._EPYT_",function(){a._EPADashboard_.apiInit();a._EPADashboard_.log("YT API available 2")})}}}},pageReady:function(){b(".epyt-gallery").each(function(){var f=b(this);if(!f.data("epytevents")||!b("body").hasClass("block-editor-page")){f.data("epytevents","1");var e=b(this).find("iframe, div.__youtube_prefs_gdpr__, div.epyt-facade").first();var c=e.data("src")||e.data("facadesrc")||e.attr("src");if(!c){c=e.data("ep-src")}var d=b(this).find(".epyt-gallery-list .epyt-gallery-thumb").first().data("videoid");if(typeof(c)!=="undefined"){c=c.replace(d,"GALLERYVIDEOID");f.data("ep-gallerysrc",c)}else{if(e.hasClass("__youtube_prefs_gdpr__")){f.data("ep-gallerysrc","")}}f.on("click touchend",".epyt-gallery-list .epyt-gallery-thumb",function(k){e=f.find("iframe, div.__youtube_prefs_gdpr__, div.epyt-facade").first();if(a._EPYT_.touchmoved){return}if(!b(this).hasClass("epyt-current-video")){f.find(".epyt-gallery-list .epyt-gallery-thumb").removeClass("epyt-current-video");b(this).addClass("epyt-current-video");var g=b(this).data("videoid");f.data("currvid",g);var l=f.data("ep-gallerysrc").replace("GALLERYVIDEOID",g);var j=f.find(".epyt-pagebutton").first().data("thumbplay");if(j!=="0"&&j!==0){if(l.indexOf("autoplay")>0){l=l.replace("autoplay=0","autoplay=1")}else{l+="&autoplay=1"}e.addClass("epyt-thumbplay")}var h=Math.max(b("body").scrollTop(),b("html").scrollTop());var i=e.offset().top-parseInt(_EPYT_.gallery_scrolloffset);if(h>i){b("html, body").animate({scrollTop:i},500,function(){a._EPADashboard_.setVidSrc(e,l)})}else{a._EPADashboard_.setVidSrc(e,l)}}}).on("touchmove",function(g){a._EPYT_.touchmoved=true}).on("touchstart",function(){a._EPYT_.touchmoved=false}).on("keydown",".epyt-gallery-list .epyt-gallery-thumb, .epyt-pagebutton",function(h){var g=h.which;if((g===13)||(g===32)){h.preventDefault();b(this).trigger("click")}});f.on("mouseenter",".epyt-gallery-list .epyt-gallery-thumb",function(){b(this).addClass("hover")});f.on("mouseleave",".epyt-gallery-list .epyt-gallery-thumb",function(){b(this).removeClass("hover")});f.on("click touchend",".epyt-pagebutton",function(k){if(a._EPYT_.touchmoved){return}if(!f.find(".epyt-gallery-list").hasClass("epyt-loading")){f.find(".epyt-gallery-list").addClass("epyt-loading");var g=typeof(k.originalEvent)!=="undefined";var j={action:"my_embedplus_gallery_page",security:_EPYT_.security,options:{playlistId:b(this).data("playlistid"),pageToken:b(this).data("pagetoken"),pageSize:b(this).data("pagesize"),columns:b(this).data("epcolumns"),showTitle:b(this).data("showtitle"),showPaging:b(this).data("showpaging"),autonext:b(this).data("autonext"),thumbplay:b(this).data("thumbplay")}};var h=b(this).hasClass("epyt-next");var i=parseInt(f.data("currpage")+"");i+=h?1:-1;f.data("currpage",i);b.post(_EPYT_.ajaxurl,j,function(l){f.find(".epyt-gallery-list").html(l);f.find(".epyt-current").each(function(){b(this).text(f.data("currpage"))});f.find('.epyt-gallery-thumb[data-videoid="'+f.data("currvid")+'"]').addClass("epyt-current-video");if(f.find(".epyt-pagebutton").first().data("autonext")=="1"&&!g){f.find(".epyt-gallery-thumb").first().trigger("click")}}).fail(function(){alert("Sorry, there was an error loading the next page.")}).always(function(){f.find(".epyt-gallery-list").removeClass("epyt-loading");if(f.find(".epyt-pagebutton").first().data("autonext")!="1"){var l=Math.max(b("body").scrollTop(),b("html").scrollTop());var m=f.find(".epyt-gallery-list").offset().top-parseInt(_EPYT_.gallery_scrolloffset);if(l>m){b("html, body").animate({scrollTop:m},500)}}})}}).on("touchmove",function(g){a._EPYT_.touchmoved=true}).on("touchstart",function(){a._EPYT_.touchmoved=false})}});b(".__youtube_prefs_gdpr__.epyt-is-override").each(function(){b(this).parent(".wp-block-embed__wrapper").addClass("epyt-is-override__wrapper")});b("button.__youtube_prefs_gdpr__").on("click",function(c){c.preventDefault();if(b.cookie){b.cookie("ytprefs_gdpr_consent","1",{expires:30,path:"/"});a.top.location.reload()}});b("img.epyt-facade-poster").one("load",function(){if(this.naturalHeight<200){var c=b(this).attr("src");if(c){b(this).attr("src",c.replace("maxresdefault","hqdefault"))}}}).on("error",function(){var c=b(this).attr("src");if(c){b(this).attr("src",c.replace("maxresdefault","hqdefault"))}}).each(function(){if(this.complete){b(this).trigger("load")}});b(".epyt-facade-play").each(function(){if(!b(this).find("svg").length){b(this).append('<svg data-no-lazy="1" height="100%" version="1.1" viewBox="0 0 68 48" width="100%"><path class="ytp-large-play-button-bg" d="M66.52,7.74c-0.78-2.93-2.49-5.41-5.42-6.19C55.79,.13,34,0,34,0S12.21,.13,6.9,1.55 C3.97,2.33,2.27,4.81,1.48,7.74C0.06,13.05,0,24,0,24s0.06,10.95,1.48,16.26c0.78,2.93,2.49,5.41,5.42,6.19 C12.21,47.87,34,48,34,48s21.79-0.13,27.1-1.55c2.93-0.78,4.64-3.26,5.42-6.19C67.94,34.95,68,24,68,24S67.94,13.05,66.52,7.74z" fill="#f00"></path><path d="M 45,24 27,14 27,34" fill="#fff"></path></svg>')}});b(".epyt-facade-poster[data-facadeoembed]").each(function(){var c=b(this);var d="https://www.youtube.com/"+c.data("facadeoembed");b.get("https://youtube.com/oembed",{url:d,format:"json"},function(e){c.attr("src",e.thumbnail_url)},"json").fail(function(){}).always(function(){})});b(document).on("click",".epyt-facade",function(j){var h=b(this);var d=h.attr("data-facadesrc");d=a._EPADashboard_.cleanSrc(d);var f=document.createElement("iframe");for(var c=0;c<this.attributes.length;c++){var g=this.attributes[c];if(["allow","class","height","id","width"].indexOf(g.name.toLowerCase())>=0||g.name.toLowerCase().indexOf("data-")==0){b(f).attr(g.name,g.value)}}b(f).removeClass("epyt-facade");b(f).attr("allowfullscreen","").attr("title",h.find("img").attr("alt")).attr("allow","accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture");a._EPADashboard_.loadYTAPI();h.replaceWith(f);b(f).attr("src",d);a._EPADashboard_.setupevents(b(f).attr("id"));setTimeout(function(){b(b(f).parent()).fitVidsEP()},1)})}}}a.onYouTubeIframeAPIReady=typeof a.onYouTubeIframeAPIReady!=="undefined"?a.onYouTubeIframeAPIReady:function(){if(a._EPYT_.pageLoaded){a._EPADashboard_.apiInit();a._EPADashboard_.log("YT API ready")}else{b(a).on("load._EPYT_",function(){a._EPADashboard_.apiInit();a._EPADashboard_.log("YT API ready 2")})}};a._EPADashboard_.loadYTAPI();if(a._EPYT_.pageLoaded){a._EPADashboard_.doubleCheck()}else{b(a).on("load._EPYT_",function(){a._EPADashboard_.doubleCheck()})}b(document).ready(function(){a._EPADashboard_.pageReady();a._EPADashboard_.loadYTAPI();if(a._EPYT_.ajax_compat){b(a).on("load._EPYT_",function(){b(document).ajaxSuccess(function(d,f,c){if(f&&f.responseText&&(f.responseText.indexOf("<iframe ")!==-1||f.responseText.indexOf("enablejsapi")!==-1)){a._EPADashboard_.loadYTAPI();a._EPADashboard_.apiInit();a._EPADashboard_.log("YT API AJAX");a._EPADashboard_.pageReady()}})})}})})(window,jQuery);
|
1 |
|
2 |
+
(function(a,b){a._EPYT_=a._EPYT_||{ajaxurl:"/wp-admin/admin-ajax.php",security:"",gallery_scrolloffset:100,eppathtoscripts:"/wp-content/plugins/youtube-embed-plus/scripts/",eppath:"/wp-content/plugins/youtube-embed-plus/",epresponsiveselector:["iframe.__youtube_prefs_widget__"],epdovol:true,evselector:'iframe.__youtube_prefs__[src], iframe[src*="youtube.com/embed/"], iframe[src*="youtube-nocookie.com/embed/"]',stopMobileBuffer:true,ajax_compat:false,usingdefault:true,ytapi_load:"light",pause_others:false,not_live_on_channel:false};a._EPYT_.touchmoved=false;a._EPYT_.apiVideos=a._EPYT_.apiVideos||{};if(a.location.toString().indexOf("https://")===0){a._EPYT_.ajaxurl=a._EPYT_.ajaxurl.replace("http://","https://")}a._EPYT_.pageLoaded=false;b(a).on("load._EPYT_",function(){a._EPYT_.pageLoaded=true});if(!document.querySelectorAll){document.querySelectorAll=function(d){var f=document,e=f.documentElement.firstChild,c=f.createElement("STYLE");e.appendChild(c);f.__qsaels=[];c.styleSheet.cssText=d+"{x:expression(document.__qsaels.push(this))}";a.scrollBy(0,0);return f.__qsaels}}if(typeof a._EPADashboard_==="undefined"){a._EPADashboard_={initStarted:false,checkCount:0,onPlayerReady:function(h){try{if(typeof _EPYT_.epdovol!=="undefined"&&_EPYT_.epdovol){var e=parseInt(h.target.getIframe().getAttribute("data-vol"));if(!isNaN(e)){if(e===0){h.target.mute()}else{if(h.target.isMuted()){h.target.unMute()}h.target.setVolume(e)}}}var d=parseInt(h.target.getIframe().getAttribute("data-epautoplay"));if(!isNaN(d)&&d===1){h.target.playVideo()}}catch(g){}try{var i=h.target.getIframe();var c=i.getAttribute("id");a._EPYT_.apiVideos[c]=h.target;if(a._EPYT_.not_live_on_channel&&h.target.getVideoUrl().indexOf("live_stream")>0){a._EPADashboard_.doLiveFallback(i)}}catch(f){}finally{b(h.target.getIframe()).css("opacity",1)}},onPlayerStateChange:function(f){var e=f.target.getIframe();if(a._EPYT_.pause_others&&f.data===a.YT.PlayerState.PLAYING){a._EPADashboard_.pauseOthers(f.target)}if(f.data===a.YT.PlayerState.PLAYING&&f.target.ponce!==true&&e.src.indexOf("autoplay=1")===-1){f.target.ponce=true}if(f.data===a.YT.PlayerState.ENDED&&b(e).data("relstop")=="1"){if(typeof f.target.stopVideo==="function"){f.target.stopVideo()}else{var g=b(e).clone(true).off();g.attr("src",a._EPADashboard_.cleanSrc(g.attr("src").replace("autoplay=1","autoplay=0")));b(e).replaceWith(g);a._EPADashboard_.setupevents(g.attr("id"));e=g.get(0)}}var c=b(e).closest(".epyt-gallery");if(!c.length){c=b("#"+b(e).data("epytgalleryid"))}if(c.length){var d=c.find(".epyt-pagebutton").first().data("autonext")=="1";if(d&&f.data===a.YT.PlayerState.ENDED){var h=c.find(".epyt-current-video");if(!h.length){h=c.find(".epyt-gallery-thumb").first()}var i=h.find(" ~ .epyt-gallery-thumb").first();if(i.length){i.trigger("click")}else{c.find('.epyt-pagebutton.epyt-next[data-pagetoken!=""][data-pagetoken]').first().trigger("click")}}}},isMobile:function(){return/Mobi|Android/i.test(navigator.userAgent)},base64DecodeUnicode:function(c){c=c.replace(/\s/g,"");return decodeURIComponent(Array.prototype.map.call(atob(c),function(d){return"%"+("00"+d.charCodeAt(0).toString(16)).slice(-2)}).join(""))},doLiveFallback:function(g){var h=b(g).closest(".wp-block-embed");if(!h.length){h=b(g).closest(".epyt-live-chat-wrapper")}if(!h.length){h=b(g).closest(".epyt-video-wrapper")}if(h.length){var f=b("#epyt-live-fallback");if(f.length){var c="";try{c=a._EPADashboard_.base64DecodeUnicode(f.get(0).innerHTML)}catch(e){}if(c){var d=h.parent();a._EPADashboard_.loadYTAPI();h.replaceWith(c);a._EPADashboard_.apiInit();a._EPADashboard_.pageReady();setTimeout(function(){b(d).fitVidsEP()},1)}}}},videoEqual:function(d,c){if(d.getIframe&&c.getIframe&&d.getIframe().id===c.getIframe().id){return true}return false},pauseOthers:function(e){if(!e){return}for(var d in a._EPYT_.apiVideos){var c=a._EPYT_.apiVideos[d];if(c&&typeof c.pauseVideo==="function"&&c!=e&&!_EPADashboard_.videoEqual(c,e)&&typeof c.getPlayerState==="function"&&[YT.PlayerState.BUFFERING,a.YT.PlayerState.PLAYING].indexOf(c.getPlayerState())>=0){c.pauseVideo()}}},justid:function(c){return new RegExp("[\\?&]v=([^&#]*)").exec(c)[1]},setupevents:function(e){if(typeof(a.YT)!=="undefined"&&a.YT!==null&&a.YT.loaded){var c=document.getElementById(e);if(!c.epytsetupdone){a._EPADashboard_.log("Setting up YT API events: "+e);c.epytsetupdone=true;var d={events:{onReady:a._EPADashboard_.onPlayerReady,onStateChange:a._EPADashboard_.onPlayerStateChange},host:(c.src||"").indexOf("nocookie")>0?"https://www.youtube-nocookie.com":"https://www.youtube.com"};return new a.YT.Player(e,d)}}},apiInit:function(){if(typeof(a.YT)!=="undefined"){a._EPADashboard_.initStarted=true;var c=document.querySelectorAll(_EPYT_.evselector);for(var d=0;d<c.length;d++){if(!c[d].hasAttribute("id")){c[d].id="_dytid_"+Math.round(Math.random()*8999+1000)}a._EPADashboard_.setupevents(c[d].id)}}},log:function(d){try{console.log(d)}catch(c){}},doubleCheck:function(){a._EPADashboard_.checkInterval=setInterval(function(){a._EPADashboard_.checkCount++;if(a._EPADashboard_.checkCount>=5||a._EPADashboard_.initStarted){clearInterval(a._EPADashboard_.checkInterval)}else{a._EPADashboard_.apiInit();a._EPADashboard_.log("YT API init check")}},1000)},selectText:function(e){if(document.selection){var c=document.body.createTextRange();c.moveToElementText(e);c.select()}else{if(a.getSelection){var d=a.getSelection();var c=document.createRange();c.selectNode(e);d.removeAllRanges();d.addRange(c)}}},setVidSrc:function(c,d){if(c.is(".epyt-facade")){c.attr("data-facadesrc",a._EPADashboard_.cleanSrc(d));c.trigger("click")}else{c.attr("src",a._EPADashboard_.cleanSrc(d));c.get(0).epytsetupdone=false;a._EPADashboard_.setupevents(c.attr("id"))}},cleanSrc:function(d){var c=d.replace("enablejsapi=1?enablejsapi=1","enablejsapi=1");return c},loadYTAPI:function(){if(typeof a.YT==="undefined"){if(a._EPYT_.ytapi_load!=="never"&&(a._EPYT_.ytapi_load==="always"||b('iframe[src*="youtube.com/embed/"], iframe[data-src*="youtube.com/embed/"], .__youtube_prefs__').length)){var c=document.createElement("script");c.src="https://www.youtube.com/iframe_api";c.type="text/javascript";document.getElementsByTagName("head")[0].appendChild(c)}}else{if(a.YT.loaded){if(a._EPYT_.pageLoaded){a._EPADashboard_.apiInit();a._EPADashboard_.log("YT API available")}else{b(a).on("load._EPYT_",function(){a._EPADashboard_.apiInit();a._EPADashboard_.log("YT API available 2")})}}}},pageReady:function(){if(a._EPYT_.not_live_on_channel&&a._EPYT_.ytapi_load!=="never"){b(".epyt-live-channel").css("opacity",0);setTimeout(function(){b(".epyt-live-channel").css("opacity",1)},4000)}b(".epyt-gallery").each(function(){var f=b(this);if(!f.data("epytevents")||!b("body").hasClass("block-editor-page")){f.data("epytevents","1");var e=b(this).find("iframe, div.__youtube_prefs_gdpr__, div.epyt-facade").first();var c=e.data("src")||e.data("facadesrc")||e.attr("src");if(!c){c=e.data("ep-src")}var d=b(this).find(".epyt-gallery-list .epyt-gallery-thumb").first().data("videoid");if(typeof(c)!=="undefined"){c=c.replace(d,"GALLERYVIDEOID");f.data("ep-gallerysrc",c)}else{if(e.hasClass("__youtube_prefs_gdpr__")){f.data("ep-gallerysrc","")}}f.on("click touchend",".epyt-gallery-list .epyt-gallery-thumb",function(k){e=f.find("iframe, div.__youtube_prefs_gdpr__, div.epyt-facade").first();if(a._EPYT_.touchmoved){return}if(!b(this).hasClass("epyt-current-video")){f.find(".epyt-gallery-list .epyt-gallery-thumb").removeClass("epyt-current-video");b(this).addClass("epyt-current-video");var g=b(this).data("videoid");f.data("currvid",g);var l=f.data("ep-gallerysrc").replace("GALLERYVIDEOID",g);var j=f.find(".epyt-pagebutton").first().data("thumbplay");if(j!=="0"&&j!==0){if(l.indexOf("autoplay")>0){l=l.replace("autoplay=0","autoplay=1")}else{l+="&autoplay=1"}e.addClass("epyt-thumbplay")}var h=Math.max(b("body").scrollTop(),b("html").scrollTop());var i=e.offset().top-parseInt(_EPYT_.gallery_scrolloffset);if(h>i){b("html, body").animate({scrollTop:i},500,function(){a._EPADashboard_.setVidSrc(e,l)})}else{a._EPADashboard_.setVidSrc(e,l)}}}).on("touchmove",function(g){a._EPYT_.touchmoved=true}).on("touchstart",function(){a._EPYT_.touchmoved=false}).on("keydown",".epyt-gallery-list .epyt-gallery-thumb, .epyt-pagebutton",function(h){var g=h.which;if((g===13)||(g===32)){h.preventDefault();b(this).trigger("click")}});f.on("mouseenter",".epyt-gallery-list .epyt-gallery-thumb",function(){b(this).addClass("hover")});f.on("mouseleave",".epyt-gallery-list .epyt-gallery-thumb",function(){b(this).removeClass("hover")});f.on("click touchend",".epyt-pagebutton",function(k){if(a._EPYT_.touchmoved){return}if(!f.find(".epyt-gallery-list").hasClass("epyt-loading")){f.find(".epyt-gallery-list").addClass("epyt-loading");var g=typeof(k.originalEvent)!=="undefined";var j={action:"my_embedplus_gallery_page",security:_EPYT_.security,options:{playlistId:b(this).data("playlistid"),pageToken:b(this).data("pagetoken"),pageSize:b(this).data("pagesize"),columns:b(this).data("epcolumns"),showTitle:b(this).data("showtitle"),showPaging:b(this).data("showpaging"),autonext:b(this).data("autonext"),thumbplay:b(this).data("thumbplay")}};var h=b(this).hasClass("epyt-next");var i=parseInt(f.data("currpage")+"");i+=h?1:-1;f.data("currpage",i);b.post(_EPYT_.ajaxurl,j,function(l){f.find(".epyt-gallery-list").html(l);f.find(".epyt-current").each(function(){b(this).text(f.data("currpage"))});f.find('.epyt-gallery-thumb[data-videoid="'+f.data("currvid")+'"]').addClass("epyt-current-video");if(f.find(".epyt-pagebutton").first().data("autonext")=="1"&&!g){f.find(".epyt-gallery-thumb").first().trigger("click")}}).fail(function(){alert("Sorry, there was an error loading the next page.")}).always(function(){f.find(".epyt-gallery-list").removeClass("epyt-loading");if(f.find(".epyt-pagebutton").first().data("autonext")!="1"){var l=Math.max(b("body").scrollTop(),b("html").scrollTop());var m=f.find(".epyt-gallery-list").offset().top-parseInt(_EPYT_.gallery_scrolloffset);if(l>m){b("html, body").animate({scrollTop:m},500)}}})}}).on("touchmove",function(g){a._EPYT_.touchmoved=true}).on("touchstart",function(){a._EPYT_.touchmoved=false})}});b(".__youtube_prefs_gdpr__.epyt-is-override").each(function(){b(this).parent(".wp-block-embed__wrapper").addClass("epyt-is-override__wrapper")});b("button.__youtube_prefs_gdpr__").on("click",function(c){c.preventDefault();if(b.cookie){b.cookie("ytprefs_gdpr_consent","1",{expires:30,path:"/"});a.top.location.reload()}});b("img.epyt-facade-poster").one("load",function(){if(this.naturalHeight<200){var c=b(this).attr("src");if(c){b(this).attr("src",c.replace("maxresdefault","hqdefault"))}}}).on("error",function(){var c=b(this).attr("src");if(c){b(this).attr("src",c.replace("maxresdefault","hqdefault"))}}).each(function(){if(this.complete){b(this).trigger("load")}});b(".epyt-facade-play").each(function(){if(!b(this).find("svg").length){b(this).append('<svg data-no-lazy="1" height="100%" version="1.1" viewBox="0 0 68 48" width="100%"><path class="ytp-large-play-button-bg" d="M66.52,7.74c-0.78-2.93-2.49-5.41-5.42-6.19C55.79,.13,34,0,34,0S12.21,.13,6.9,1.55 C3.97,2.33,2.27,4.81,1.48,7.74C0.06,13.05,0,24,0,24s0.06,10.95,1.48,16.26c0.78,2.93,2.49,5.41,5.42,6.19 C12.21,47.87,34,48,34,48s21.79-0.13,27.1-1.55c2.93-0.78,4.64-3.26,5.42-6.19C67.94,34.95,68,24,68,24S67.94,13.05,66.52,7.74z" fill="#f00"></path><path d="M 45,24 27,14 27,34" fill="#fff"></path></svg>')}});b(".epyt-facade-poster[data-facadeoembed]").each(function(){var c=b(this);var d="https://www.youtube.com/"+c.data("facadeoembed");b.get("https://youtube.com/oembed",{url:d,format:"json"},function(e){c.attr("src",e.thumbnail_url)},"json").fail(function(){}).always(function(){})});b(document).on("click",".epyt-facade",function(j){var h=b(this);var d=h.attr("data-facadesrc");d=a._EPADashboard_.cleanSrc(d);var f=document.createElement("iframe");for(var c=0;c<this.attributes.length;c++){var g=this.attributes[c];if(["allow","class","height","id","width"].indexOf(g.name.toLowerCase())>=0||g.name.toLowerCase().indexOf("data-")==0){b(f).attr(g.name,g.value)}}b(f).removeClass("epyt-facade");b(f).attr("allowfullscreen","").attr("title",h.find("img").attr("alt")).attr("allow","accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture");a._EPADashboard_.loadYTAPI();h.replaceWith(f);b(f).attr("src",d);a._EPADashboard_.setupevents(b(f).attr("id"));setTimeout(function(){b(b(f).parent()).fitVidsEP()},1)})}}}a.onYouTubeIframeAPIReady=typeof a.onYouTubeIframeAPIReady!=="undefined"?a.onYouTubeIframeAPIReady:function(){if(a._EPYT_.pageLoaded){a._EPADashboard_.apiInit();a._EPADashboard_.log("YT API ready")}else{b(a).on("load._EPYT_",function(){a._EPADashboard_.apiInit();a._EPADashboard_.log("YT API ready 2")})}};a._EPADashboard_.loadYTAPI();if(a._EPYT_.pageLoaded){a._EPADashboard_.doubleCheck()}else{b(a).on("load._EPYT_",function(){a._EPADashboard_.doubleCheck()})}b(document).ready(function(){a._EPADashboard_.pageReady();a._EPADashboard_.loadYTAPI();if(a._EPYT_.ajax_compat){b(a).on("load._EPYT_",function(){b(document).ajaxSuccess(function(d,f,c){if(f&&f.responseText&&(f.responseText.indexOf("<iframe ")!==-1||f.responseText.indexOf("enablejsapi")!==-1)){a._EPADashboard_.loadYTAPI();a._EPADashboard_.apiInit();a._EPADashboard_.log("YT API AJAX");a._EPADashboard_.pageReady()}})})}})})(window,jQuery);
|
styles/ytprefs-onboarding.css
CHANGED
@@ -213,10 +213,13 @@ input.ui-widget[type=text] {
|
|
213 |
height: auto;
|
214 |
visibility: visible;
|
215 |
opacity: 1;
|
216 |
-
padding-left: 10px;
|
217 |
margin-top: 10px;
|
218 |
pointer-events: all;
|
219 |
-
|
|
|
|
|
|
|
|
|
220 |
}
|
221 |
|
222 |
.gdpr-options-left {
|
213 |
height: auto;
|
214 |
visibility: visible;
|
215 |
opacity: 1;
|
|
|
216 |
margin-top: 10px;
|
217 |
pointer-events: all;
|
218 |
+
}
|
219 |
+
|
220 |
+
.ytindent {
|
221 |
+
padding-left: 15px;
|
222 |
+
border-left: 5px solid #e0e0e0;
|
223 |
}
|
224 |
|
225 |
.gdpr-options-left {
|
styles/ytprefs-onboarding.min.css
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
|
2 |
-
#wphead{display:none}#wpbody{margin-left:0}#adminmenuback{display:none}#adminmenu,adminmenuwrap{display:none}#wpcontent,.auto-fold #wpcontent{margin-left:0}#wpadminbar{display:none}html.wp-toolbar{padding:0}#footer,#wpfooter,.auto-fold #wpfooter{display:none}#screen-meta-links{display:none}#wpfooter{clear:both}.clearboth{clear:both}.pad20{padding:20px}.center{text-align:center}.bold{font-weight:bold}.orange{color:#f85d00}.smallnote{font-size:small;font-style:italic}.indent-option{margin-left:25px}.ui-widget,.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:inherit}.ui-accordion .ui-accordion-header{margin-top:15px;font-weight:bold}.ui-accordion .ui-accordion-content.header-go-content{display:none!important;height:0!important}.ui-widget-content a{color:#0073aa}input.ui-widget[type=text]{margin:0;padding:.4em 1em;width:450px}.txt-button-align input.ui-widget[type=text],.txt-button-align button{vertical-align:top}#epyt_wiz_wrap .ui-button{font-weight:bold}.ui-button .ui-icon{transform:scale(1.35,1.35)}.copycode{background-color:#eef;border:2px solid #c7d6e4;display:inline-block;font-size:.9em;overflow-x:hidden;vertical-align:middle;white-space:nowrap;width:400px;padding-left:15px;padding-right:15px}.pointer{cursor:pointer}.relative{position:relative}.wrap-ytprefs-onboarding h1{line-height:40px}.wrap-ytprefs-onboarding h2{line-height:2em}.wrap-ytprefs-onboarding .box-vi-not-interested{display:none}.ytprefs-ob-step{position:absolute;visibility:hidden;opacity:0;transition:opacity 300ms,visibility 300ms;width:100%;height:0;top:-200000px}.ytprefs-ob-step.active-step{visibility:visible;opacity:1;height:auto;top:0}.ytprefs-ob-title{font-size:2em;line-height:2em;text-align:center}.ytprefs-ob-subtitle{font-size:1.4em;line-height:2em}.ytprefs-ob-content{max-width:800px;margin:0 auto}.ytprefs-ob-nav{text-align:center;margin-top:20px;padding-top:20px;border-top:2px solid #ddd;clear:both;margin-bottom:50px}.ytprefs-ob-nav .ytprefs-ob-nav-hide{display:none}.ytprefs-ob-nav button.button-secondary,.ytprefs-ob-nav button.button-primary{display:inline-block;margin:0 10px}.ytprefs-ob-nav button.ytprefs-ob-nav-prev,.ytprefs-ob-nav button.ytprefs-ob-nav-close{margin-right:25px}.ytprefs-ob-step1 ul.ytprefs-ob-filter li{margin-bottom:15px}.ytprefs-ob-step1 .ytprefs-hover-icons{width:160px;float:right;margin-left:30px;min-height:200px;position:relative}.ytprefs-ob-step1 .ytprefs-hover-icons img{position:absolute;top:0;left:0;opacity:0;display:block;width:100%;height:auto;transition:opacity 200ms}.ytprefs-ob-step1 .ytprefs-hover-icons img.yob-icon-visible{opacity:1}.ytprefs-ob-step2 .ytprefs-ob-setting{display:none;margin:10px 0 25px 0}.ytprefs-ob-step2 .ytprefs-ob-setting.yob-single-visible,.ytprefs-ob-step2 .ytprefs-ob-setting.yob-gallery-visible,.ytprefs-ob-step2 .ytprefs-ob-setting.yob-standalone-visible,.ytprefs-ob-step2 .ytprefs-ob-setting.yob-privacy-visible,.ytprefs-ob-step2 .ytprefs-ob-setting.yob-live-visible{display:block}.ytprefs-ob-step2 form #responsive ~ #boxresponsive_all,.ytprefs-ob-step2 form #facade_mode ~ .box_facade_mode{height:0;visibility:none;opacity:0;pointer-events:none;transition:opacity 300ms,visibility 300ms}.ytprefs-ob-step2 form #responsive:checked ~ #boxresponsive_all,.ytprefs-ob-step2 form #facade_mode:checked ~ .box_facade_mode{height:auto;visibility:visible;opacity:1;
|
1 |
|
2 |
+
#wphead{display:none}#wpbody{margin-left:0}#adminmenuback{display:none}#adminmenu,adminmenuwrap{display:none}#wpcontent,.auto-fold #wpcontent{margin-left:0}#wpadminbar{display:none}html.wp-toolbar{padding:0}#footer,#wpfooter,.auto-fold #wpfooter{display:none}#screen-meta-links{display:none}#wpfooter{clear:both}.clearboth{clear:both}.pad20{padding:20px}.center{text-align:center}.bold{font-weight:bold}.orange{color:#f85d00}.smallnote{font-size:small;font-style:italic}.indent-option{margin-left:25px}.ui-widget,.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:inherit}.ui-accordion .ui-accordion-header{margin-top:15px;font-weight:bold}.ui-accordion .ui-accordion-content.header-go-content{display:none!important;height:0!important}.ui-widget-content a{color:#0073aa}input.ui-widget[type=text]{margin:0;padding:.4em 1em;width:450px}.txt-button-align input.ui-widget[type=text],.txt-button-align button{vertical-align:top}#epyt_wiz_wrap .ui-button{font-weight:bold}.ui-button .ui-icon{transform:scale(1.35,1.35)}.copycode{background-color:#eef;border:2px solid #c7d6e4;display:inline-block;font-size:.9em;overflow-x:hidden;vertical-align:middle;white-space:nowrap;width:400px;padding-left:15px;padding-right:15px}.pointer{cursor:pointer}.relative{position:relative}.wrap-ytprefs-onboarding h1{line-height:40px}.wrap-ytprefs-onboarding h2{line-height:2em}.wrap-ytprefs-onboarding .box-vi-not-interested{display:none}.ytprefs-ob-step{position:absolute;visibility:hidden;opacity:0;transition:opacity 300ms,visibility 300ms;width:100%;height:0;top:-200000px}.ytprefs-ob-step.active-step{visibility:visible;opacity:1;height:auto;top:0}.ytprefs-ob-title{font-size:2em;line-height:2em;text-align:center}.ytprefs-ob-subtitle{font-size:1.4em;line-height:2em}.ytprefs-ob-content{max-width:800px;margin:0 auto}.ytprefs-ob-nav{text-align:center;margin-top:20px;padding-top:20px;border-top:2px solid #ddd;clear:both;margin-bottom:50px}.ytprefs-ob-nav .ytprefs-ob-nav-hide{display:none}.ytprefs-ob-nav button.button-secondary,.ytprefs-ob-nav button.button-primary{display:inline-block;margin:0 10px}.ytprefs-ob-nav button.ytprefs-ob-nav-prev,.ytprefs-ob-nav button.ytprefs-ob-nav-close{margin-right:25px}.ytprefs-ob-step1 ul.ytprefs-ob-filter li{margin-bottom:15px}.ytprefs-ob-step1 .ytprefs-hover-icons{width:160px;float:right;margin-left:30px;min-height:200px;position:relative}.ytprefs-ob-step1 .ytprefs-hover-icons img{position:absolute;top:0;left:0;opacity:0;display:block;width:100%;height:auto;transition:opacity 200ms}.ytprefs-ob-step1 .ytprefs-hover-icons img.yob-icon-visible{opacity:1}.ytprefs-ob-step2 .ytprefs-ob-setting{display:none;margin:10px 0 25px 0}.ytprefs-ob-step2 .ytprefs-ob-setting.yob-single-visible,.ytprefs-ob-step2 .ytprefs-ob-setting.yob-gallery-visible,.ytprefs-ob-step2 .ytprefs-ob-setting.yob-standalone-visible,.ytprefs-ob-step2 .ytprefs-ob-setting.yob-privacy-visible,.ytprefs-ob-step2 .ytprefs-ob-setting.yob-live-visible{display:block}.ytprefs-ob-step2 form #responsive ~ #boxresponsive_all,.ytprefs-ob-step2 form #facade_mode ~ .box_facade_mode{height:0;visibility:none;opacity:0;pointer-events:none;transition:opacity 300ms,visibility 300ms}.ytprefs-ob-step2 form #responsive:checked ~ #boxresponsive_all,.ytprefs-ob-step2 form #facade_mode:checked ~ .box_facade_mode{height:auto;visibility:visible;opacity:1;margin-top:10px;pointer-events:all}.ytindent{padding-left:15px;border-left:5px solid #e0e0e0}.gdpr-options-left{width:65%;float:left}.gdpr-options-right{width:33%;float:right;margin-top:20px}.gdpr-options-right .img-gdpr-message{width:100%;height:auto}iframe#gdpr_consent_message_ifr{min-height:250px!important}.ytprefs-ob-step4 .ytprefs-ob-content{max-width:100%}.wiztab-screenshots{float:right;max-width:50%;height:auto;clear:right;margin-left:30px;margin-bottom:15px;display:block;border:5px solid #ddd}.ytprefs-ob-success{color:#00a000;font-weight:bold}.ytprefs-ob-success:after{content:url('../images/adstxt-valid.png')}input[type="checkbox"]+label .check-note{display:none}input[type="checkbox"]:checked+label .check-note{display:inline}#not_live_on ~ #wp-not_live_content-wrap{opacity:.3}#not_live_on:checked ~ #wp-not_live_content-wrap{opacity:1}
|
styles/ytvi-admin.css
CHANGED
@@ -1,3 +1,6 @@
|
|
|
|
|
|
|
|
1 |
.clearboth {clear: both;}
|
2 |
sup.orange {text-transform: lowercase; font-weight: bold; color: #f85d00;}
|
3 |
.align-middle {vertical-align: middle !important;}
|
1 |
+
body.admin_page_youtube-ep-wizard {
|
2 |
+
background-color: #ffffff;
|
3 |
+
}
|
4 |
.clearboth {clear: both;}
|
5 |
sup.orange {text-transform: lowercase; font-weight: bold; color: #f85d00;}
|
6 |
.align-middle {vertical-align: middle !important;}
|
styles/ytvi-admin.min.css
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
|
2 |
-
.clearboth{clear:both}sup.orange{text-transform:lowercase;font-weight:bold;color:#f85d00}.align-middle{vertical-align:middle!important}.vi-registration-box{position:relative}.vi-cover-prompt{position:absolute;width:100%;height:100%;top:0;left:0;z-index:100;background-color:rgba(241,241,241,.88);text-align:center}.vi-cover-prompt::before{content:"";display:none;z-index:10000;position:absolute;width:100%;height:100%;margin:0;padding:0;-webkit-filter:url(#viblurfilter);-moz-filter:url(#viblurfilter);-o-filter:url(#viblurfilter);-ms-filter:url(#viblurfilter);filter:url(#viblurfilter)}.vi-cover-prompt-buttons button.button-primary,.vi-cover-prompt-buttons button.button-secondary{display:inline-block;margin:0 5px}.viblurfilter-svg{width:0;height:0;margin:0;padding:0;border:0}.vi-cover-prompt h1{text-align:center;margin-top:50px;text-shadow:0 0 14px #fff}.ytvi-wrap *{box-sizing:border-box}.ytvi-wrap .center{text-align:center}.ytvi-wrap input.regular-text{width:100%}.ytvi-step-1,.ytvi-step-2{text-align:left}.ytvi-step-1{width:auto;padding:0;max-width:870px;margin:0 auto}.ytvi-step-1 .button-primary{font-size:16px}.ytvi-step-1--form,.ytvi-login-success,.ytvi-step-2-loading,.ytvi-login-loading,.ytvi-login-complete{background:#fff;border:solid 1px #e5e5e5;padding:15px 0;width:100%;margin:30px auto}.ytvi-step-1--form .side-signup{width:49.5%;float:left;border-right:1px solid #ccc;padding:0 40px}.ytvi-step-1--form .side-login{width:49.5%;float:right;padding:0 40px 0 30px}.ytvi-step-1--form .side-login h2,.ytvi-step-1--form .side-signup h2{font-size:1.15em}.wrap .ytvi-step-1--form h2{margin:10px 0 15px 0;font-weight:normal}.ytvi-step-2-loading,.ytvi-step-2,.ytvi-login-loading,.ytvi-login-success{display:none}.ytvi-loading--message{text-align:center;font-size:16px}.ytvi-step-2 .ytvi-registration{max-width:870px;margin:0 auto}.ytvi-step-2 .ytvi-registration iframe{border-width:0;padding:0;margin:0 auto;width:100%;height:575px;display:block}.ytvi-step-2-msg{background-color:#d8ebf3;border:1px solid #d0d0d0;margin:0 26px;padding:10px}.ytvi-login-success,.ytvi-login-complete{max-width:100%;text-align:center;padding:25px 40px}.vi-adstxt-diff{text-align:left}.vi-adstxt-diff p{font-style:italic}.vi-adstxt-diff code,.adstxt-verify-message code,code.adstxt-block{white-space:pre;display:block;overflow:auto;margin:25px 0}section.pattern h2{background-color:rgba(255,255,255,0);transition:background-color 2s ease-out 0s}section.pattern h2.ytvi-hash-scroll{background-color:rgba(255,255,255,1);transition:background-color 0s}h3.sect{transition:background-color 2s ease-out 0s}h3.sect.ytvi-hash-scroll{background-color:rgba(255,255,255,1);transition:background-color 0s}.vi-forgot-pw{display:inline-block;float:right;padding-top:5px}.vi-contact-support{margin-top:30px;clear:left;padding-top:20px}.vi-logo-text{height:1.2em;width:auto;vertical-align:text-bottom}.vi-demo{max-width:1360px;margin:0 auto}p.vi-demo-lede,#ytform p.vi-demo-lede{font-size:17px;line-height:1.5}.wrap-vi-settings-pre p.vi-demo-lede{padding-top:.75em}.vi-demo-col-phone{float:right;width:330px;clear:right}.vi-demo-col-content{width:calc(100% - 340px)}.vi-demo-mobile{margin:0 auto;width:300px;background:transparent url(../images/vi-mobile-phone.png) no-repeat scroll;background-size:cover}.vi-demo-mobile-caption-list{position:relative;min-height:115px}.vi-demo-mobile-caption{font-style:italic;margin:0 10px;position:absolute;top:0;left:0;opacity:1;transition:ease-in-out opacity 3s}.vi-demo-mobile-ratio{position:relative;width:100%;height:0;padding-bottom:175.89%}.vi-demo-mobile-bg{position:absolute;top:0;left:0;width:100%;height:100%}.vi-demo-screen{position:absolute;top:5.5%;left:12%;width:76%;height:auto;z-index:1;opacity:1;transition:ease-in-out opacity 4s}.vi-demo-screen.demo-hide,.vi-demo-mobile-caption.demo-hide{opacity:0;transition:ease-in-out opacity 3s}.vi-demo-screen-2{z-index:2}p.vi-ad-source-row{text-align:center;margin-top:20px}.vi-ad-source-row img{vertical-align:middle;display:inline-block;margin-bottom:13px;padding:0 13px 0 13px;max-height:20px;height:auto;width:auto}.login-expire{background-color:#d8ebf3;border:1px solid #d0d0d0;padding:25px}.wrap-vi{max-width:1064px;margin-bottom:100px}.wrap-vi h1 .yt-admin-icon{width:16px;height:16px}.wrap-vi h1 a.button-primary,.wrap-vi h1 a.button-secondary,.wrap-ytprefs h2 a.button-primary,.wrap-ytprefs h2 a.button-secondary{float:right;margin-left:15px}.wrap-vi section{margin-left:20px;display:none;padding-top:15px}.wrap-vi th label{display:block}.wrap-vi th small{font-weight:normal;font-style:italic}.wrap-vi h2.nav-tab-wrapper{margin:22px 0 0 0}.wrap-vi section#jumphowitworks{display:block}.wrap-vi .no-js section{display:block}.wrap-vi h2{margin-bottom:30px;margin-left:0}.wrap-vi h3{font-size:1.2em;font-style:italic}.save-changes-follow{position:fixed;z-index:10000;bottom:0;right:0;background-color:#fff;padding:0 20px;border-top-left-radius:20px;border:2px solid #aaa;border-right-width:0;border-bottom-width:0;-webkit-box-shadow:0 0 10px 0 rgba(0,0,0,0.75);-moz-box-shadow:0 0 10px 0 rgba(0,0,0,0.75);box-shadow:0 0 10px 0 rgba(0,0,0,0.75)}.button-primary{white-space:nowrap}p.submit{margin:0;padding:15px 0 10px 0}.wp-core-ui p.submit .button-primary{font-weight:bold;font-size:21px;height:50px;padding:0 20px 1px;background:#2ea2cc;background:-moz-linear-gradient(top,#2ea2cc 0,#007396 98%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#2ea2cc),color-stop(98%,#007396));background:-webkit-linear-gradient(top,#2ea2cc 0,#007396 98%);background:-o-linear-gradient(top,#2ea2cc 0,#007396 98%);background:-ms-linear-gradient(top,#2ea2cc 0,#007396 98%);background:linear-gradient(to bottom,#2ea2cc 0,#007396 98%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2ea2cc',endColorstr='#007396',GradientType=0)}p.submit em{display:inline-block;padding-left:20px;vertical-align:middle;width:240px;margin-top:-6px}.vi-red{color:#de1515}button.button-primary.ytvi-btn-toggle{float:right;position:relative}button.button-primary.ytvi-btn-inactive,button.button-primary.ytvi-btn-inactive:hover,.wp-core-ui button.button-primary.ytvi-btn-inactive[disabled],.wp-core-ui button.button-primary.ytvi-btn-inactive:disabled,a.button-primary.ytvi-btn-inactive,a.button-primary.ytvi-btn-inactive:hover{background:#e51f1f!important;border-color:#a22222!important;box-shadow:0 1px 0 #a22222!important;text-shadow:0 -1px 1px #a22222,1px 0 1px #a22222,0 1px 1px #a22222,-1px 0 1px #a22222!important;color:#fff!important}.wp-core-ui button.button-primary.ytvi-btn-inactive[disabled]:hover{background:rgba(229,31,31,.5)!important}button.button-primary.ytvi-btn-toggle .ytvi-notyet{display:none;position:absolute;background:white;width:540px;height:auto;top:25px;padding:15px 20px;border-radius:10px;box-shadow:5px 5px 10px 0 rgba(0,0,0,.2);right:0;text-align:left;color:#333!important;box-sizing:border-box;text-shadow:none!important;white-space:normal;border-top-right-radius:0;z-index:100}button.button-primary.ytvi-btn-toggle:hover .ytvi-notyet{display:block}.iab-cat-parent{margin-right:15px;display:inline-block}.iab-cat-child-box{display:inline-block}.iab-cat-child-box.hidden{opacity:.3}.iab-cat-child option.hidden{display:none}.wp-picker-container.wp-picker-active .wp-color-result-text{font-weight:bold}ul.list-ul{margin:15px 30px}ul.list-ul li{list-style-type:disc}.alertify .ajs-dialog{max-width:600px}.alertify .ajs-body .ajs-content{line-height:2em}.alertify .ajs-body .ajs-content code{white-space:pre;display:block;overflow:auto;line-height:1.4em;margin:1em auto}.ajs-button{cursor:pointer}.ss-vi-img{max-width:700px;height:auto}.ss-vi-wizbutton{max-width:100%;height:auto}.vi-how-works{margin-bottom:40px;position:relative;margin-left:10px}.vi-how-works::before{clear:both}.vi-how-works p{line-height:1}.vi-how-works img{width:50px;height:50px;float:left;margin-right:15px;transition:ease-in-out transform,opacity .1s;opacity:.5}.vi-how-works:hover img{transform:scale(1.1);opacity:1;transition:ease-in-out transform,opacity .2s}.vi-how-works h3{margin-bottom:0}.vi-how-works .vi-num{position:absolute;left:-20px;font-size:22px;font-weight:bold;color:#000;opacity:.2;font-style:italic;transition:ease-in-out transform,opacity .1s}.vi-how-works:hover .vi-num{transform:scale(1.1);opacity:1;transition:ease-in-out transform,opacity .2s}h2 .vi-num{font-style:italic;opacity:.5}.form-table.form-table--vi-appearance{width:100%}.form-table td{vertical-align:top}.vi-story-demo{width:65%;position:relative;margin:20px auto}.vi-story-demo--box{border:solid 1px #e3e3e3}.vi-story-demo--screen{width:100%;padding-top:57%;background-color:#888;position:relative}.vi-story-demo--screen span{color:#ccc;width:100%;text-align:center;font-size:20px;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);font-style:italic}.vi-story-demo--screen span small{background:#ddd;border-radius:5px;display:inline-block;padding:5px 10px;box-sizing:border-box;color:#333;max-width:90%}.vi-story-demo--info{padding:8px}.vi-story-demo--featured{height:20px;font-size:9px;text-align:right;margin-top:8px;text-transform:uppercase;line-height:20px;font-family:Verdana,sans-serif}.vi-story-demo--title{font-weight:bold;line-height:1.33}.vi-story-demo--featured span{opacity:.5}.vi-story-demo--box .vi-story-demo--featured img{width:20px;height:20px;vertical-align:middle;margin:-4px 0 0 5px}@media(min-width:768px){.form-table.form-table--vi-appearance{width:53%;float:left;clear:left}.vi-story-demo{float:right;width:44%;position:relative}}.nav-tab-valid,.nav-tab-valid:focus,.adstxt-verify-message-valid{color:#00a000;font-weight:bold}.adstxt-help{float:right;background-color:rgba(0,0,0,0.07);width:390px;margin:0 0 20px 10px;border-radius:20px;box-sizing:border-box;padding:20px 35px}.adstxt-help img{width:50px;height:auto;display:block;float:left}.nav-tab-valid:after{content:url('../images/adstxt-valid.png')}.nav-tab-invalid:after{content:url('../images/adstxt-warning.png')}.nav-tab-loading:after{content:url('../images/ajax-loader.gif')}.vi-report-error.hide,.vi-report.hide{display:none}.vi-report,.vi-report-error{text-align:center}.vi-total-earnings,.vi-total-earnings-error{float:left;width:25%;margin-top:60px;color:#1193aa}.vi-report-graph,.vi-report-graph-error{float:right;width:75%}.vi-report-canvas-box,.vi-report-canvas-box-error{height:300px;width:100%}.vi-total-earnings-num,.vi-total-earnings-num-error{margin-top:20px;font-weight:bold;font-size:3.7vw;line-height:3.7vw}.vi-total-earnings-num-error,.vi-report-canvas-box-error{color:#ccc;font-weight:normal;font-size:45px;line-height:45px}.vi-report-canvas-box-error{background-size:10% 10%;background-image:linear-gradient(to right,#ddd 1px,transparent 1px),linear-gradient(to bottom,#ddd 1px,transparent 1px)}@media(min-width:1280px){.vi-total-earnings-num,.vi-total-earnings-num-error{font-size:45px;line-height:45px}}.iab-cat-tags-display{margin-top:20px}.iab-cat-tags-display:empty:after{content:'None selected yet';font-style:italic}.iab-cat-tag-button{display:inline-block;background-color:#0073aa;color:#fff;padding:5px 10px;border-radius:30px;font-size:12px;margin:0 12px 12px 0;cursor:pointer}.ytvi-msg-congrats{display:none}
|
1 |
|
2 |
+
body.admin_page_youtube-ep-wizard{background-color:#fff}.clearboth{clear:both}sup.orange{text-transform:lowercase;font-weight:bold;color:#f85d00}.align-middle{vertical-align:middle!important}.vi-registration-box{position:relative}.vi-cover-prompt{position:absolute;width:100%;height:100%;top:0;left:0;z-index:100;background-color:rgba(241,241,241,.88);text-align:center}.vi-cover-prompt::before{content:"";display:none;z-index:10000;position:absolute;width:100%;height:100%;margin:0;padding:0;-webkit-filter:url(#viblurfilter);-moz-filter:url(#viblurfilter);-o-filter:url(#viblurfilter);-ms-filter:url(#viblurfilter);filter:url(#viblurfilter)}.vi-cover-prompt-buttons button.button-primary,.vi-cover-prompt-buttons button.button-secondary{display:inline-block;margin:0 5px}.viblurfilter-svg{width:0;height:0;margin:0;padding:0;border:0}.vi-cover-prompt h1{text-align:center;margin-top:50px;text-shadow:0 0 14px #fff}.ytvi-wrap *{box-sizing:border-box}.ytvi-wrap .center{text-align:center}.ytvi-wrap input.regular-text{width:100%}.ytvi-step-1,.ytvi-step-2{text-align:left}.ytvi-step-1{width:auto;padding:0;max-width:870px;margin:0 auto}.ytvi-step-1 .button-primary{font-size:16px}.ytvi-step-1--form,.ytvi-login-success,.ytvi-step-2-loading,.ytvi-login-loading,.ytvi-login-complete{background:#fff;border:solid 1px #e5e5e5;padding:15px 0;width:100%;margin:30px auto}.ytvi-step-1--form .side-signup{width:49.5%;float:left;border-right:1px solid #ccc;padding:0 40px}.ytvi-step-1--form .side-login{width:49.5%;float:right;padding:0 40px 0 30px}.ytvi-step-1--form .side-login h2,.ytvi-step-1--form .side-signup h2{font-size:1.15em}.wrap .ytvi-step-1--form h2{margin:10px 0 15px 0;font-weight:normal}.ytvi-step-2-loading,.ytvi-step-2,.ytvi-login-loading,.ytvi-login-success{display:none}.ytvi-loading--message{text-align:center;font-size:16px}.ytvi-step-2 .ytvi-registration{max-width:870px;margin:0 auto}.ytvi-step-2 .ytvi-registration iframe{border-width:0;padding:0;margin:0 auto;width:100%;height:575px;display:block}.ytvi-step-2-msg{background-color:#d8ebf3;border:1px solid #d0d0d0;margin:0 26px;padding:10px}.ytvi-login-success,.ytvi-login-complete{max-width:100%;text-align:center;padding:25px 40px}.vi-adstxt-diff{text-align:left}.vi-adstxt-diff p{font-style:italic}.vi-adstxt-diff code,.adstxt-verify-message code,code.adstxt-block{white-space:pre;display:block;overflow:auto;margin:25px 0}section.pattern h2{background-color:rgba(255,255,255,0);transition:background-color 2s ease-out 0s}section.pattern h2.ytvi-hash-scroll{background-color:rgba(255,255,255,1);transition:background-color 0s}h3.sect{transition:background-color 2s ease-out 0s}h3.sect.ytvi-hash-scroll{background-color:rgba(255,255,255,1);transition:background-color 0s}.vi-forgot-pw{display:inline-block;float:right;padding-top:5px}.vi-contact-support{margin-top:30px;clear:left;padding-top:20px}.vi-logo-text{height:1.2em;width:auto;vertical-align:text-bottom}.vi-demo{max-width:1360px;margin:0 auto}p.vi-demo-lede,#ytform p.vi-demo-lede{font-size:17px;line-height:1.5}.wrap-vi-settings-pre p.vi-demo-lede{padding-top:.75em}.vi-demo-col-phone{float:right;width:330px;clear:right}.vi-demo-col-content{width:calc(100% - 340px)}.vi-demo-mobile{margin:0 auto;width:300px;background:transparent url(../images/vi-mobile-phone.png) no-repeat scroll;background-size:cover}.vi-demo-mobile-caption-list{position:relative;min-height:115px}.vi-demo-mobile-caption{font-style:italic;margin:0 10px;position:absolute;top:0;left:0;opacity:1;transition:ease-in-out opacity 3s}.vi-demo-mobile-ratio{position:relative;width:100%;height:0;padding-bottom:175.89%}.vi-demo-mobile-bg{position:absolute;top:0;left:0;width:100%;height:100%}.vi-demo-screen{position:absolute;top:5.5%;left:12%;width:76%;height:auto;z-index:1;opacity:1;transition:ease-in-out opacity 4s}.vi-demo-screen.demo-hide,.vi-demo-mobile-caption.demo-hide{opacity:0;transition:ease-in-out opacity 3s}.vi-demo-screen-2{z-index:2}p.vi-ad-source-row{text-align:center;margin-top:20px}.vi-ad-source-row img{vertical-align:middle;display:inline-block;margin-bottom:13px;padding:0 13px 0 13px;max-height:20px;height:auto;width:auto}.login-expire{background-color:#d8ebf3;border:1px solid #d0d0d0;padding:25px}.wrap-vi{max-width:1064px;margin-bottom:100px}.wrap-vi h1 .yt-admin-icon{width:16px;height:16px}.wrap-vi h1 a.button-primary,.wrap-vi h1 a.button-secondary,.wrap-ytprefs h2 a.button-primary,.wrap-ytprefs h2 a.button-secondary{float:right;margin-left:15px}.wrap-vi section{margin-left:20px;display:none;padding-top:15px}.wrap-vi th label{display:block}.wrap-vi th small{font-weight:normal;font-style:italic}.wrap-vi h2.nav-tab-wrapper{margin:22px 0 0 0}.wrap-vi section#jumphowitworks{display:block}.wrap-vi .no-js section{display:block}.wrap-vi h2{margin-bottom:30px;margin-left:0}.wrap-vi h3{font-size:1.2em;font-style:italic}.save-changes-follow{position:fixed;z-index:10000;bottom:0;right:0;background-color:#fff;padding:0 20px;border-top-left-radius:20px;border:2px solid #aaa;border-right-width:0;border-bottom-width:0;-webkit-box-shadow:0 0 10px 0 rgba(0,0,0,0.75);-moz-box-shadow:0 0 10px 0 rgba(0,0,0,0.75);box-shadow:0 0 10px 0 rgba(0,0,0,0.75)}.button-primary{white-space:nowrap}p.submit{margin:0;padding:15px 0 10px 0}.wp-core-ui p.submit .button-primary{font-weight:bold;font-size:21px;height:50px;padding:0 20px 1px;background:#2ea2cc;background:-moz-linear-gradient(top,#2ea2cc 0,#007396 98%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#2ea2cc),color-stop(98%,#007396));background:-webkit-linear-gradient(top,#2ea2cc 0,#007396 98%);background:-o-linear-gradient(top,#2ea2cc 0,#007396 98%);background:-ms-linear-gradient(top,#2ea2cc 0,#007396 98%);background:linear-gradient(to bottom,#2ea2cc 0,#007396 98%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2ea2cc',endColorstr='#007396',GradientType=0)}p.submit em{display:inline-block;padding-left:20px;vertical-align:middle;width:240px;margin-top:-6px}.vi-red{color:#de1515}button.button-primary.ytvi-btn-toggle{float:right;position:relative}button.button-primary.ytvi-btn-inactive,button.button-primary.ytvi-btn-inactive:hover,.wp-core-ui button.button-primary.ytvi-btn-inactive[disabled],.wp-core-ui button.button-primary.ytvi-btn-inactive:disabled,a.button-primary.ytvi-btn-inactive,a.button-primary.ytvi-btn-inactive:hover{background:#e51f1f!important;border-color:#a22222!important;box-shadow:0 1px 0 #a22222!important;text-shadow:0 -1px 1px #a22222,1px 0 1px #a22222,0 1px 1px #a22222,-1px 0 1px #a22222!important;color:#fff!important}.wp-core-ui button.button-primary.ytvi-btn-inactive[disabled]:hover{background:rgba(229,31,31,.5)!important}button.button-primary.ytvi-btn-toggle .ytvi-notyet{display:none;position:absolute;background:white;width:540px;height:auto;top:25px;padding:15px 20px;border-radius:10px;box-shadow:5px 5px 10px 0 rgba(0,0,0,.2);right:0;text-align:left;color:#333!important;box-sizing:border-box;text-shadow:none!important;white-space:normal;border-top-right-radius:0;z-index:100}button.button-primary.ytvi-btn-toggle:hover .ytvi-notyet{display:block}.iab-cat-parent{margin-right:15px;display:inline-block}.iab-cat-child-box{display:inline-block}.iab-cat-child-box.hidden{opacity:.3}.iab-cat-child option.hidden{display:none}.wp-picker-container.wp-picker-active .wp-color-result-text{font-weight:bold}ul.list-ul{margin:15px 30px}ul.list-ul li{list-style-type:disc}.alertify .ajs-dialog{max-width:600px}.alertify .ajs-body .ajs-content{line-height:2em}.alertify .ajs-body .ajs-content code{white-space:pre;display:block;overflow:auto;line-height:1.4em;margin:1em auto}.ajs-button{cursor:pointer}.ss-vi-img{max-width:700px;height:auto}.ss-vi-wizbutton{max-width:100%;height:auto}.vi-how-works{margin-bottom:40px;position:relative;margin-left:10px}.vi-how-works::before{clear:both}.vi-how-works p{line-height:1}.vi-how-works img{width:50px;height:50px;float:left;margin-right:15px;transition:ease-in-out transform,opacity .1s;opacity:.5}.vi-how-works:hover img{transform:scale(1.1);opacity:1;transition:ease-in-out transform,opacity .2s}.vi-how-works h3{margin-bottom:0}.vi-how-works .vi-num{position:absolute;left:-20px;font-size:22px;font-weight:bold;color:#000;opacity:.2;font-style:italic;transition:ease-in-out transform,opacity .1s}.vi-how-works:hover .vi-num{transform:scale(1.1);opacity:1;transition:ease-in-out transform,opacity .2s}h2 .vi-num{font-style:italic;opacity:.5}.form-table.form-table--vi-appearance{width:100%}.form-table td{vertical-align:top}.vi-story-demo{width:65%;position:relative;margin:20px auto}.vi-story-demo--box{border:solid 1px #e3e3e3}.vi-story-demo--screen{width:100%;padding-top:57%;background-color:#888;position:relative}.vi-story-demo--screen span{color:#ccc;width:100%;text-align:center;font-size:20px;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);font-style:italic}.vi-story-demo--screen span small{background:#ddd;border-radius:5px;display:inline-block;padding:5px 10px;box-sizing:border-box;color:#333;max-width:90%}.vi-story-demo--info{padding:8px}.vi-story-demo--featured{height:20px;font-size:9px;text-align:right;margin-top:8px;text-transform:uppercase;line-height:20px;font-family:Verdana,sans-serif}.vi-story-demo--title{font-weight:bold;line-height:1.33}.vi-story-demo--featured span{opacity:.5}.vi-story-demo--box .vi-story-demo--featured img{width:20px;height:20px;vertical-align:middle;margin:-4px 0 0 5px}@media(min-width:768px){.form-table.form-table--vi-appearance{width:53%;float:left;clear:left}.vi-story-demo{float:right;width:44%;position:relative}}.nav-tab-valid,.nav-tab-valid:focus,.adstxt-verify-message-valid{color:#00a000;font-weight:bold}.adstxt-help{float:right;background-color:rgba(0,0,0,0.07);width:390px;margin:0 0 20px 10px;border-radius:20px;box-sizing:border-box;padding:20px 35px}.adstxt-help img{width:50px;height:auto;display:block;float:left}.nav-tab-valid:after{content:url('../images/adstxt-valid.png')}.nav-tab-invalid:after{content:url('../images/adstxt-warning.png')}.nav-tab-loading:after{content:url('../images/ajax-loader.gif')}.vi-report-error.hide,.vi-report.hide{display:none}.vi-report,.vi-report-error{text-align:center}.vi-total-earnings,.vi-total-earnings-error{float:left;width:25%;margin-top:60px;color:#1193aa}.vi-report-graph,.vi-report-graph-error{float:right;width:75%}.vi-report-canvas-box,.vi-report-canvas-box-error{height:300px;width:100%}.vi-total-earnings-num,.vi-total-earnings-num-error{margin-top:20px;font-weight:bold;font-size:3.7vw;line-height:3.7vw}.vi-total-earnings-num-error,.vi-report-canvas-box-error{color:#ccc;font-weight:normal;font-size:45px;line-height:45px}.vi-report-canvas-box-error{background-size:10% 10%;background-image:linear-gradient(to right,#ddd 1px,transparent 1px),linear-gradient(to bottom,#ddd 1px,transparent 1px)}@media(min-width:1280px){.vi-total-earnings-num,.vi-total-earnings-num-error{font-size:45px;line-height:45px}}.iab-cat-tags-display{margin-top:20px}.iab-cat-tags-display:empty:after{content:'None selected yet';font-style:italic}.iab-cat-tag-button{display:inline-block;background-color:#0073aa;color:#fff;padding:5px 10px;border-radius:30px;font-size:12px;margin:0 12px 12px 0;cursor:pointer}.ytvi-msg-congrats{display:none}
|
youtube.php
CHANGED
@@ -1,17 +1,18 @@
|
|
1 |
<?php
|
2 |
/*
|
3 |
-
Plugin Name: Embed Plus Plugin for YouTube
|
4 |
Plugin URI: https://www.embedplus.com/dashboard/pro-easy-video-analytics.aspx?ref=plugin
|
5 |
Description: YouTube Embed Plugin. Embed a YouTube channel gallery, playlist gallery, YouTube live stream. Lite embeds with defer JavaScript and facade options
|
6 |
-
Version: 14.
|
7 |
Author: Embed Plus for YouTube Team
|
8 |
Author URI: https://www.embedplus.com
|
9 |
Requires at least: 4.5
|
|
|
10 |
*/
|
11 |
|
12 |
/*
|
13 |
-
Embed Plus Plugin for YouTube
|
14 |
-
Copyright (C)
|
15 |
|
16 |
This program is free software: you can redistribute it and/or modify
|
17 |
it under the terms of the GNU General Public License as published by
|
@@ -35,7 +36,7 @@ class YouTubePrefs
|
|
35 |
|
36 |
public static $folder_name = 'youtube-embed-plus';
|
37 |
public static $curltimeout = 30;
|
38 |
-
public static $version = '14.
|
39 |
public static $opt_version = 'version';
|
40 |
public static $optembedwidth = null;
|
41 |
public static $optembedheight = null;
|
@@ -48,7 +49,7 @@ class YouTubePrefs
|
|
48 |
public static $opt_debugmode = 'debugmode';
|
49 |
public static $opt_old_script_method = 'old_script_method';
|
50 |
public static $opt_cc_load_policy = 'cc_load_policy';
|
51 |
-
public static $opt_cc_lang_pref = 'cc_lang_pref';
|
52 |
public static $opt_iv_load_policy = 'iv_load_policy';
|
53 |
public static $opt_loop = 'loop';
|
54 |
public static $opt_modestbranding = 'modestbranding';
|
@@ -113,6 +114,7 @@ class YouTubePrefs
|
|
113 |
public static $opt_gallery_customnext = 'gallery_customnext';
|
114 |
public static $opt_not_live_content = 'not_live_content';
|
115 |
public static $opt_not_live_on = 'not_live_on';
|
|
|
116 |
public static $opt_admin_off_scripts = 'admin_off_scripts';
|
117 |
public static $opt_defer_js = 'defer_js';
|
118 |
public static $opt_defer_jquery = 'defer_jquery';
|
@@ -228,7 +230,7 @@ class YouTubePrefs
|
|
228 |
self::$yt_options = array(
|
229 |
self::$opt_autoplay,
|
230 |
self::$opt_cc_load_policy,
|
231 |
-
self::$opt_cc_lang_pref,
|
232 |
self::$opt_iv_load_policy,
|
233 |
self::$opt_loop,
|
234 |
self::$opt_modestbranding,
|
@@ -278,6 +280,11 @@ class YouTubePrefs
|
|
278 |
add_action("wp_ajax_my_embedplus_gallery_page", array(get_class(), 'my_embedplus_gallery_page'));
|
279 |
add_action("wp_ajax_nopriv_my_embedplus_gallery_page", array(get_class(), 'my_embedplus_gallery_page'));
|
280 |
add_action('admin_enqueue_scripts', array(get_class(), 'admin_enqueue_scripts'), 10, 1);
|
|
|
|
|
|
|
|
|
|
|
281 |
/////////////////////////////////////
|
282 |
include_once(EPYTVI_INCLUDES_PATH . 'vi_actions.php');
|
283 |
include_once(EPYTGB_INCLUDES_PATH . 'gutenberg_hooks.php');
|
@@ -294,6 +301,11 @@ class YouTubePrefs
|
|
294 |
}
|
295 |
}
|
296 |
|
|
|
|
|
|
|
|
|
|
|
297 |
public static function defer_scripts($tag, $handle, $src)
|
298 |
{
|
299 |
$defer = array(
|
@@ -1065,7 +1077,7 @@ class YouTubePrefs
|
|
1065 |
<div class="clearboth" style="height: 10px;">
|
1066 |
</div>
|
1067 |
<p>
|
1068 |
-
<?php _e('If you see a black/empty YouTube player, then it likely means that you do not have any currently running or future live streams that are scheduled in your channel, so the plugin isn\'t getting any data from the YouTube API to show. If you want to continue to use the channel based live stream embedding method, we suggest regularly scheduling one or more live streams so the player is not black/empty.', 'text_domain'); ?>
|
1069 |
</p>
|
1070 |
<div class="ep-wizard-preview-video-wrapper">
|
1071 |
<iframe src="https://www.youtube.com/embed/live_stream?channel=<?php echo esc_attr($thechannelid) ?>" allowfullscreen="" frameborder="0"></iframe>
|
@@ -1328,7 +1340,7 @@ class YouTubePrefs
|
|
1328 |
</p>
|
1329 |
<ol>
|
1330 |
<li>
|
1331 |
-
Paste in the direct URL of the live stream or premiere below and click Submit. Example: https://www.youtube.com/watch?v=<strong>5qap5aO4i9A</strong>
|
1332 |
</li>
|
1333 |
<li>
|
1334 |
On the next screen, customize or insert your video.
|
@@ -1357,7 +1369,7 @@ class YouTubePrefs
|
|
1357 |
</form>
|
1358 |
<?php echo $step1_livechannel_errors ? '<p class="orange bold">' . $step1_livechannel_errors . '</p>' : ''; ?>
|
1359 |
<p class="smallnote">
|
1360 |
-
<strong class="orange">
|
1361 |
</p>
|
1362 |
</div>
|
1363 |
</div>
|
@@ -1823,6 +1835,7 @@ class YouTubePrefs
|
|
1823 |
ajax_compat: <?php echo self::$alloptions[self::$opt_ajax_compat] == '1' ? 'true' : 'false' ?>,
|
1824 |
ytapi_load: '<?php echo esc_attr(self::$alloptions[self::$opt_ytapi_load]) ?>',
|
1825 |
pause_others: <?php echo self::$alloptions[self::$opt_pause_others] == '1' ? 'true' : 'false' ?>,
|
|
|
1826 |
stopMobileBuffer: <?php echo self::$alloptions[self::$opt_stop_mobile_buffer] == '1' ? 'true' : 'false' ?>
|
1827 |
};</script>
|
1828 |
<?php
|
@@ -1874,7 +1887,7 @@ class YouTubePrefs
|
|
1874 |
$_nocookie = 0;
|
1875 |
$_gb_compat = 1;
|
1876 |
$_facade_mode = 0;
|
1877 |
-
$_facade_autoplay = 1;
|
1878 |
$_gdpr_consent = 0;
|
1879 |
$_gdpr_consent_message = self::$dft_gdpr_consent_message;
|
1880 |
$_gdpr_consent_button = 'Accept YouTube Content';
|
@@ -1924,6 +1937,7 @@ class YouTubePrefs
|
|
1924 |
$_gallery_pagesize = 15;
|
1925 |
$_not_live_content = '';
|
1926 |
$_not_live_on = 0;
|
|
|
1927 |
$_debugmode = 0;
|
1928 |
$_admin_off_scripts = 0;
|
1929 |
$_defer_js = 0;
|
@@ -2022,6 +2036,7 @@ class YouTubePrefs
|
|
2022 |
$_not_live_content = self::tryget($arroptions, self::$opt_not_live_content, $_not_live_content);
|
2023 |
$_not_live_content = empty($_not_live_content) ? $_not_live_content : trim($_not_live_content);
|
2024 |
$_not_live_on = self::tryget($arroptions, self::$opt_not_live_on, empty($_not_live_content) ? 0 : $_not_live_on);
|
|
|
2025 |
$_admin_off_scripts = self::tryget($arroptions, self::$opt_admin_off_scripts, $_admin_off_scripts);
|
2026 |
$_defer_js = self::tryget($arroptions, self::$opt_defer_js, $_defer_js);
|
2027 |
$_defer_jquery = self::tryget($arroptions, self::$opt_defer_jquery, $_defer_jquery);
|
@@ -2117,6 +2132,7 @@ class YouTubePrefs
|
|
2117 |
self::$opt_gallery_pagesize => $_gallery_pagesize,
|
2118 |
self::$opt_not_live_content => $_not_live_content,
|
2119 |
self::$opt_not_live_on => $_not_live_on,
|
|
|
2120 |
self::$opt_debugmode => $_debugmode,
|
2121 |
self::$opt_admin_off_scripts => $_admin_off_scripts,
|
2122 |
self::$opt_defer_js => $_defer_js,
|
@@ -2834,13 +2850,13 @@ class YouTubePrefs
|
|
2834 |
}
|
2835 |
else if (isset($finalparams['list']))
|
2836 |
{
|
2837 |
-
$facade_img_src = ' data-facadeoembed="playlist?list=' . $finalparams['list'] .'" ';
|
2838 |
}
|
2839 |
$acctitle = str_replace('title="', 'alt="', $acctitle);
|
2840 |
$facade_autoplay = $finalparams[self::$opt_facade_autoplay] == 1 ? ' data-epautoplay="1" ' : '';
|
2841 |
$code_iframe1 = '<div ' . $centercode . ' id="_ytid_' . $iframe_id . '" ' . $dim_attrs . ' data-origwidth="' . self::$defaultwidth . '" data-origheight="' . self::$defaultheight . '" ' . $relstop .
|
2842 |
'data-facadesrc="https://www.' . $youtubebaseurl . '.com/embed/' . $videoidoutput . '?';
|
2843 |
-
$code_iframe2 = '" class="__youtube_prefs__ epyt-facade' . ($iscontent ? '' : ' __youtube_prefs_widget__ ') . ($isoverride ? ' epyt-is-override ' : '') . ' no-lazyload"' .
|
2844 |
$voloutput . $galleryid_ifm_data . $facade_autoplay . '><img class="epyt-facade-poster" loading="lazy" ' . $acctitle . $facade_img_src . ' />' .
|
2845 |
'<button class="epyt-facade-play" aria-label="Play"><svg data-no-lazy="1" height="100%" version="1.1" viewBox="0 0 68 48" width="100%"><path class="ytp-large-play-button-bg" d="M66.52,7.74c-0.78-2.93-2.49-5.41-5.42-6.19C55.79,.13,34,0,34,0S12.21,.13,6.9,1.55 C3.97,2.33,2.27,4.81,1.48,7.74C0.06,13.05,0,24,0,24s0.06,10.95,1.48,16.26c0.78,2.93,2.49,5.41,5.42,6.19 C12.21,47.87,34,48,34,48s21.79-0.13,27.1-1.55c2.93-0.78,4.64-3.26,5.42-6.19C67.94,34.95,68,24,68,24S67.94,13.05,66.52,7.74z" fill="#f00"></path><path d="M 45,24 27,14 27,34" fill="#fff"></path></svg></button>' .
|
2846 |
'</div>';
|
@@ -2849,12 +2865,12 @@ class YouTubePrefs
|
|
2849 |
{
|
2850 |
$code_iframe1 = '<iframe ' . $centercode . ' id="_ytid_' . $iframe_id . '" ' . $dim_attrs . ' data-origwidth="' . self::$defaultwidth . '" data-origheight="' . self::$defaultheight . '" ' . $relstop .
|
2851 |
'src="https://www.' . $youtubebaseurl . '.com/embed/' . $videoidoutput . '?';
|
2852 |
-
$code_iframe2 = '" class="__youtube_prefs__ ' . ($iscontent ? '' : ' __youtube_prefs_widget__ ') . ($isoverride ? ' epyt-is-override ' : '') . ' no-lazyload"' .
|
2853 |
-
$voloutput . $acctitle . $galleryid_ifm_data . ' allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen data-no-lazy="1" data-skipgform_ajax_framebjll=""></iframe>';
|
2854 |
}
|
2855 |
-
|
2856 |
-
$code2 = $end_responsive . $end_gb_wrapper;
|
2857 |
-
|
2858 |
$code1 .= $code_iframe1;
|
2859 |
$code2 = $code_iframe2 . $code2;
|
2860 |
|
@@ -3224,7 +3240,7 @@ class YouTubePrefs
|
|
3224 |
$new_pointer_content = '<h3>' . __('New Update') . '</h3>'; // ooopointer
|
3225 |
|
3226 |
$new_pointer_content .= '<p>'; // ooopointer
|
3227 |
-
$new_pointer_content .= "This update adds
|
3228 |
if (self::vi_logged_in())
|
3229 |
{
|
3230 |
$new_pointer_content .= "<br><br><strong>Note:</strong> You are currently logged into the vi intelligence feature. vi support is being deprecated in the next version, so we recommend taking the vi ads down from your site. Please contact ext@embedplus.com for questions.";
|
@@ -3501,14 +3517,14 @@ class YouTubePrefs
|
|
3501 |
display: inline;
|
3502 |
}
|
3503 |
|
3504 |
-
|
3505 |
opacity: .3;
|
3506 |
}
|
3507 |
|
3508 |
-
#not_live_on:checked ~ #
|
3509 |
opacity: 1;
|
3510 |
}
|
3511 |
-
|
3512 |
#facade_mode ~ .box_facade_mode {
|
3513 |
opacity: .3;
|
3514 |
}
|
@@ -3698,192 +3714,192 @@ class YouTubePrefs
|
|
3698 |
</p>
|
3699 |
<?php
|
3700 |
$lang_codes = [
|
3701 |
-
["Abkhazian","аҧсуа бызшәа, аҧсшәа","ab","abk","abk"],
|
3702 |
-
["Afar","Afaraf","aa","aar","aar"],
|
3703 |
-
["Afrikaans","Afrikaans","af","afr","afr"],
|
3704 |
-
["Akan","Akan","ak","aka","aka"],
|
3705 |
-
["Albanian","Shqip","sq","sqi","alb"],
|
3706 |
-
["Amharic","አማርኛ","am","amh","amh"],
|
3707 |
-
["Arabic","العربية","ar","ara","ara"],
|
3708 |
-
["Aragonese","aragonés","an","arg","arg"],
|
3709 |
-
["Armenian","Հայերեն","hy","hye","arm"],
|
3710 |
-
["Assamese","অসমীয়া","as","asm","asm"],
|
3711 |
-
["Avaric","авар мацӀ, магӀарул мацӀ","av","ava","ava"],
|
3712 |
-
["Avestan","avesta","ae","ave","ave"],
|
3713 |
-
["Aymara","aymar aru","ay","aym","aym"],
|
3714 |
-
["Azerbaijani","azərbaycan dili","az","aze","aze"],
|
3715 |
-
["Bambara","bamanankan","bm","bam","bam"],
|
3716 |
-
["Bashkir","башҡорт теле","ba","bak","bak"],
|
3717 |
-
["Basque","euskara, euskera","eu","eus","baq"],
|
3718 |
-
["Belarusian","беларуская мова","be","bel","bel"],
|
3719 |
-
["Bengali","বাংলা","bn","ben","ben"],
|
3720 |
-
["Bihari languages","भोजपुरी","bh","bih","bih"],
|
3721 |
-
["Bislama","Bislama","bi","bis","bis"],
|
3722 |
-
["Bosnian","bosanski jezik","bs","bos","bos"],
|
3723 |
-
["Breton","brezhoneg","br","bre","bre"],
|
3724 |
-
["Bulgarian","български език","bg","bul","bul"],
|
3725 |
-
["Burmese","ဗမာစာ","my","mya","bur"],
|
3726 |
-
["Catalan, Valencian","català, valencià","ca","cat","cat"],
|
3727 |
-
["Chamorro","Chamoru","ch","cha","cha"],
|
3728 |
-
["Chechen","нохчийн мотт","ce","che","che"],
|
3729 |
-
["Chichewa, Chewa, Nyanja","chiCheŵa, chinyanja","ny","nya","nya"],
|
3730 |
-
["Chinese","中文 (Zhōngwén), 汉语, 漢語","zh","zho","chi"],
|
3731 |
-
["Chuvash","чӑваш чӗлхи","cv","chv","chv"],
|
3732 |
-
["Cornish","Kernewek","kw","cor","cor"],
|
3733 |
-
["Corsican","corsu, lingua corsa","co","cos","cos"],
|
3734 |
-
["Cree","ᓀᐦᐃᔭᐍᐏᐣ","cr","cre","cre"],
|
3735 |
-
["Croatian","hrvatski jezik","hr","hrv","hrv"],
|
3736 |
-
["Czech","čeština, český jazyk","cs","ces","cze"],
|
3737 |
-
["Danish","dansk","da","dan","dan"],
|
3738 |
-
["Divehi, Dhivehi, Maldivian","ދިވެހި","dv","div","div"],
|
3739 |
-
["Dutch, Flemish","Nederlands, Vlaams","nl","nld","dut"],
|
3740 |
-
["Dzongkha","རྫོང་ཁ","dz","dzo","dzo"],
|
3741 |
-
["English","English","en","eng","eng"],
|
3742 |
-
["Esperanto","Esperanto","eo","epo","epo"],
|
3743 |
-
["Estonian","eesti, eesti keel","et","est","est"],
|
3744 |
-
["Ewe","Eʋegbe","ee","ewe","ewe"],
|
3745 |
-
["Faroese","føroyskt","fo","fao","fao"],
|
3746 |
-
["Fijian","vosa Vakaviti","fj","fij","fij"],
|
3747 |
-
["Finnish","suomi, suomen kieli","fi","fin","fin"],
|
3748 |
-
["French","français, langue française","fr","fra","fre"],
|
3749 |
-
["Fulah","Fulfulde, Pulaar, Pular","ff","ful","ful"],
|
3750 |
-
["Galician","Galego","gl","glg","glg"],
|
3751 |
-
["Georgian","ქართული","ka","kat","geo"],
|
3752 |
-
["German","Deutsch","de","deu","ger"],
|
3753 |
-
["Greek, Modern (1453–)","ελληνικά","el","ell","gre"],
|
3754 |
-
["Guarani","Avañe'ẽ","gn","grn","grn"],
|
3755 |
-
["Gujarati","ગુજરાતી","gu","guj","guj"],
|
3756 |
-
["Haitian, Haitian Creole","Kreyòl ayisyen","ht","hat","hat"],
|
3757 |
-
["Hausa","(Hausa) هَوُسَ","ha","hau","hau"],
|
3758 |
-
["Hebrew","עברית","he","heb","heb"],
|
3759 |
-
["Herero","Otjiherero","hz","her","her"],
|
3760 |
-
["Hindi","हिन्दी, हिंदी","hi","hin","hin"],
|
3761 |
-
["Hiri Motu","Hiri Motu","ho","hmo","hmo"],
|
3762 |
-
["Hungarian","magyar","hu","hun","hun"],
|
3763 |
-
["Interlingua (International Auxiliary Language Association)","Interlingua","ia","ina","ina"],
|
3764 |
-
["Indonesian","Bahasa Indonesia","id","ind","ind"],
|
3765 |
-
["Interlingue, Occidental","(originally:) Occidental, (after WWII:) Interlingue","ie","ile","ile"],
|
3766 |
-
["Irish","Gaeilge","ga","gle","gle"],
|
3767 |
-
["Igbo","Asụsụ Igbo","ig","ibo","ibo"],
|
3768 |
-
["Inupiaq","Iñupiaq, Iñupiatun","ik","ipk","ipk"],
|
3769 |
-
["Ido","Ido","io","ido","ido"],
|
3770 |
-
["Icelandic","Íslenska","is","isl","ice"],
|
3771 |
-
["Italian","Italiano","it","ita","ita"],
|
3772 |
-
["Inuktitut","ᐃᓄᒃᑎᑐᑦ","iu","iku","iku"],
|
3773 |
-
["Japanese","日本語 (にほんご)","ja","jpn","jpn"],
|
3774 |
-
["Javanese","ꦧꦱꦗꦮ, Basa Jawa","jv","jav","jav"],
|
3775 |
-
["Kalaallisut, Greenlandic","kalaallisut, kalaallit oqaasii","kl","kal","kal"],
|
3776 |
-
["Kannada","ಕನ್ನಡ","kn","kan","kan"],
|
3777 |
-
["Kanuri","Kanuri","kr","kau","kau"],
|
3778 |
-
["Kashmiri","कश्मीरी, كشميري","ks","kas","kas"],
|
3779 |
-
["Kazakh","қазақ тілі","kk","kaz","kaz"],
|
3780 |
-
["Central Khmer","ខ្មែរ, ខេមរភាសា, ភាសាខ្មែរ","km","khm","khm"],
|
3781 |
-
["Kikuyu, Gikuyu","Gĩkũyũ","ki","kik","kik"],
|
3782 |
-
["Kinyarwanda","Ikinyarwanda","rw","kin","kin"],
|
3783 |
-
["Kirghiz, Kyrgyz","Кыргызча, Кыргыз тили","ky","kir","kir"],
|
3784 |
-
["Komi","коми кыв","kv","kom","kom"],
|
3785 |
-
["Kongo","Kikongo","kg","kon","kon"],
|
3786 |
-
["Korean","한국어","ko","kor","kor"],
|
3787 |
-
["Kurdish","Kurdî, کوردی","ku","kur","kur"],
|
3788 |
-
["Kuanyama, Kwanyama","Kuanyama","kj","kua","kua"],
|
3789 |
-
["Latin","latine, lingua latina","la","lat","lat"],
|
3790 |
-
["Luxembourgish, Letzeburgesch","Lëtzebuergesch","lb","ltz","ltz"],
|
3791 |
-
["Ganda","Luganda","lg","lug","lug"],
|
3792 |
-
["Limburgan, Limburger, Limburgish","Limburgs","li","lim","lim"],
|
3793 |
-
["Lingala","Lingála","ln","lin","lin"],
|
3794 |
-
["Lao","ພາສາລາວ","lo","lao","lao"],
|
3795 |
-
["Lithuanian","lietuvių kalba","lt","lit","lit"],
|
3796 |
-
["Luba-Katanga","Kiluba","lu","lub","lub"],
|
3797 |
-
["Latvian","latviešu valoda","lv","lav","lav"],
|
3798 |
-
["Manx","Gaelg, Gailck","gv","glv","glv"],
|
3799 |
-
["Macedonian","македонски јазик","mk","mkd","mac"],
|
3800 |
-
["Malagasy","fiteny malagasy","mg","mlg","mlg"],
|
3801 |
-
["Malay","Bahasa Melayu, بهاس ملايو","ms","msa","may"],
|
3802 |
-
["Malayalam","മലയാളം","ml","mal","mal"],
|
3803 |
-
["Maltese","Malti","mt","mlt","mlt"],
|
3804 |
-
["Maori","te reo Māori","mi","mri","mao"],
|
3805 |
-
["Marathi","मराठी","mr","mar","mar"],
|
3806 |
-
["Marshallese","Kajin M̧ajeļ","mh","mah","mah"],
|
3807 |
-
["Mongolian","Монгол хэл","mn","mon","mon"],
|
3808 |
-
["Nauru","Dorerin Naoero","na","nau","nau"],
|
3809 |
-
["Navajo, Navaho","Diné bizaad","nv","nav","nav"],
|
3810 |
-
["North Ndebele","isiNdebele","nd","nde","nde"],
|
3811 |
-
["Nepali","नेपाली","ne","nep","nep"],
|
3812 |
-
["Ndonga","Owambo","ng","ndo","ndo"],
|
3813 |
-
["Norwegian Bokmål","Norsk Bokmål","nb","nob","nob"],
|
3814 |
-
["Norwegian Nynorsk","Norsk Nynorsk","nn","nno","nno"],
|
3815 |
-
["Norwegian","Norsk","no","nor","nor"],
|
3816 |
-
["Sichuan Yi, Nuosu","ꆈꌠ꒿ Nuosuhxop","ii","iii","iii"],
|
3817 |
-
["South Ndebele","isiNdebele","nr","nbl","nbl"],
|
3818 |
-
["Occitan","occitan, lenga d'òc","oc","oci","oci"],
|
3819 |
-
["Ojibwa","ᐊᓂᔑᓈᐯᒧᐎᓐ","oj","oji","oji"],
|
3820 |
-
["Church Slavic, Old Slavonic, Church Slavonic, Old Bulgarian, Old Church Slavonic","ѩзыкъ словѣньскъ","cu","chu","chu"],
|
3821 |
-
["Oromo","Afaan Oromoo","om","orm","orm"],
|
3822 |
-
["Oriya","ଓଡ଼ିଆ","or","ori","ori"],
|
3823 |
-
["Ossetian, Ossetic","ирон æвзаг","os","oss","oss"],
|
3824 |
-
["Punjabi, Panjabi","ਪੰਜਾਬੀ, پنجابی","pa","pan","pan"],
|
3825 |
-
["Pali","पालि, पाळि","pi","pli","pli"],
|
3826 |
-
["Persian","فارسی","fa","fas","per"],
|
3827 |
-
["Polish","język polski, polszczyzna","pl","pol","pol"],
|
3828 |
-
["Pashto, Pushto","پښتو","ps","pus","pus"],
|
3829 |
-
["Portuguese","Português","pt","por","por"],
|
3830 |
-
["Quechua","Runa Simi, Kichwa","qu","que","que"],
|
3831 |
-
["Romansh","Rumantsch Grischun","rm","roh","roh"],
|
3832 |
-
["Rundi","Ikirundi","rn","run","run"],
|
3833 |
-
["Romanian, Moldavian, Moldovan","Română","ro","ron","rum"],
|
3834 |
-
["Russian","русский","ru","rus","rus"],
|
3835 |
-
["Sanskrit","संस्कृतम्","sa","san","san"],
|
3836 |
-
["Sardinian","sardu","sc","srd","srd"],
|
3837 |
-
["Sindhi","सिन्धी, سنڌي، سندھی","sd","snd","snd"],
|
3838 |
-
["Northern Sami","Davvisámegiella","se","sme","sme"],
|
3839 |
-
["Samoan","gagana fa'a Samoa","sm","smo","smo"],
|
3840 |
-
["Sango","yângâ tî sängö","sg","sag","sag"],
|
3841 |
-
["Serbian","српски језик","sr","srp","srp"],
|
3842 |
-
["Gaelic, Scottish Gaelic","Gàidhlig","gd","gla","gla"],
|
3843 |
-
["Shona","chiShona","sn","sna","sna"],
|
3844 |
-
["Sinhala, Sinhalese","සිංහල","si","sin","sin"],
|
3845 |
-
["Slovak","Slovenčina, Slovenský Jazyk","sk","slk","slo"],
|
3846 |
-
["Slovenian","Slovenski Jezik, Slovenščina","sl","slv","slv"],
|
3847 |
-
["Somali","Soomaaliga, af Soomaali","so","som","som"],
|
3848 |
-
["Southern Sotho","Sesotho","st","sot","sot"],
|
3849 |
-
["Spanish, Castilian","Español","es","spa","spa"],
|
3850 |
-
["Sundanese","Basa Sunda","su","sun","sun"],
|
3851 |
-
["Swahili","Kiswahili","sw","swa","swa"],
|
3852 |
-
["Swati","SiSwati","ss","ssw","ssw"],
|
3853 |
-
["Swedish","Svenska","sv","swe","swe"],
|
3854 |
-
["Tamil","தமிழ்","ta","tam","tam"],
|
3855 |
-
["Telugu","తెలుగు","te","tel","tel"],
|
3856 |
-
["Tajik","тоҷикӣ, toçikī, تاجیکی","tg","tgk","tgk"],
|
3857 |
-
["Thai","ไทย","th","tha","tha"],
|
3858 |
-
["Tigrinya","ትግርኛ","ti","tir","tir"],
|
3859 |
-
["Tibetan","བོད་ཡིག","bo","bod","tib"],
|
3860 |
-
["Turkmen","Türkmen, Түркмен","tk","tuk","tuk"],
|
3861 |
-
["Tagalog","Wikang Tagalog","tl","tgl","tgl"],
|
3862 |
-
["Tswana","Setswana","tn","tsn","tsn"],
|
3863 |
-
["Tonga (Tonga Islands)","Faka Tonga","to","ton","ton"],
|
3864 |
-
["Turkish","Türkçe","tr","tur","tur"],
|
3865 |
-
["Tsonga","Xitsonga","ts","tso","tso"],
|
3866 |
-
["Tatar","татар теле, tatar tele","tt","tat","tat"],
|
3867 |
-
["Twi","Twi","tw","twi","twi"],
|
3868 |
-
["Tahitian","Reo Tahiti","ty","tah","tah"],
|
3869 |
-
["Uighur, Uyghur","ئۇيغۇرچە, Uyghurche","ug","uig","uig"],
|
3870 |
-
["Ukrainian","Українська","uk","ukr","ukr"],
|
3871 |
-
["Urdu","اردو","ur","urd","urd"],
|
3872 |
-
["Uzbek","Oʻzbek, Ўзбек, أۇزبېك","uz","uzb","uzb"],
|
3873 |
-
["Venda","Tshivenḓa","ve","ven","ven"],
|
3874 |
-
["Vietnamese","Tiếng Việt","vi","vie","vie"],
|
3875 |
-
["Volapük","Volapük","vo","vol","vol"],
|
3876 |
-
["Walloon","Walon","wa","wln","wln"],
|
3877 |
-
["Welsh","Cymraeg","cy","cym","wel"],
|
3878 |
-
["Wolof","Wollof","wo","wol","wol"],
|
3879 |
-
["Western Frisian","Frysk","fy","fry","fry"],
|
3880 |
-
["Xhosa","isiXhosa","xh","xho","xho"],
|
3881 |
-
["Yiddish","ייִדיש","yi","yid","yid"],
|
3882 |
-
["Yoruba","Yorùbá","yo","yor","yor"],
|
3883 |
-
["Zhuang, Chuang","Saɯ cueŋƅ, Saw cuengh","za","zha","zha"],
|
3884 |
-
["Zulu","isiZulu","zu","zul","zul"]
|
3885 |
];
|
3886 |
-
|
3887 |
$selected_val = trim($all[self::$opt_cc_lang_pref]);
|
3888 |
?>
|
3889 |
<p>
|
@@ -3896,7 +3912,7 @@ class YouTubePrefs
|
|
3896 |
$iso_code = $lang_row[2];
|
3897 |
$iso_label = $lang_row[0] . ' - ' . $lang_row[1];
|
3898 |
?>
|
3899 |
-
|
3900 |
<?php
|
3901 |
}
|
3902 |
?>
|
@@ -3936,26 +3952,43 @@ class YouTubePrefs
|
|
3936 |
<label for="<?php echo self::$opt_vi_hide_monetize_tab; ?>"><b class="chktitle">Hide "Monetize" Feature:</b> (deprecated) Hide the tab(s) for the deprecated video intelligence feature.</label>
|
3937 |
</p>
|
3938 |
<div id="not_live_content_scroll" class="p">
|
3939 |
-
<
|
3940 |
-
|
3941 |
-
|
3942 |
-
|
3943 |
-
|
3944 |
-
|
3945 |
-
|
3946 |
-
|
3947 |
-
|
3948 |
-
|
3949 |
-
|
3950 |
-
|
3951 |
-
|
3952 |
-
|
3953 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3954 |
</div>
|
3955 |
-
|
3956 |
-
|
3957 |
</div>
|
3958 |
-
|
3959 |
</section>
|
3960 |
<section class="pattern" id="jumpprivacy">
|
3961 |
<h2>Security Options</h2>
|
@@ -3996,15 +4029,15 @@ class YouTubePrefs
|
|
3996 |
<li><label>
|
3997 |
<input type="radio" name="<?php echo self::$opt_ytapi_load ?>" value="never" <?php checked($all[self::$opt_ytapi_load], 'never'); ?> /> <em>Never</em> - Do not load the YouTube API. Note: The "Never" choice may break a few features such as Volume Initialization and Gallery Continuous/Auto Play.
|
3998 |
<div id="boxapinever">
|
3999 |
-
|
4000 |
-
|
4001 |
-
|
4002 |
-
|
4003 |
-
|
4004 |
-
|
4005 |
-
|
4006 |
-
|
4007 |
-
|
4008 |
</label></li>
|
4009 |
<li><label><input type="radio" name="<?php echo self::$opt_ytapi_load ?>" value="always" <?php checked($all[self::$opt_ytapi_load], 'always'); ?> /> <em>Always</em> - Load the API on all pages. In most cases, the "Always" choice is not necessary.</label></li>
|
4010 |
</ul>
|
@@ -4531,12 +4564,12 @@ class YouTubePrefs
|
|
4531 |
</label>
|
4532 |
</div>
|
4533 |
</div>
|
4534 |
-
<p><?php _e('Note: Since the YouTube player is loaded in its own iframe from YouTube\'s servers, browser restrictions prevent this plugin from directly deferring the JS inside the iframe.
|
4535 |
-
<!-- <div style="width: 50%">
|
4536 |
-
|
4537 |
-
|
4538 |
-
|
4539 |
-
|
4540 |
</section>
|
4541 |
|
4542 |
<div class="save-changes-follow"> <?php self::save_changes_button(isset($_POST[$ytprefs_submitted]) && $_POST[$ytprefs_submitted] == 'Y'); ?> </div>
|
@@ -4842,7 +4875,7 @@ class YouTubePrefs
|
|
4842 |
if (!$a.hasClass('href-link'))
|
4843 |
{
|
4844 |
$('.wrap-ytprefs .nav-tab-wrapper a').removeClass('nav-tab-active');
|
4845 |
-
$a.addClass('nav-tab-active');
|
4846 |
$('.wrap-ytprefs section').hide();
|
4847 |
$('.wrap-ytprefs section').filter($a.attr('rel') ? $a.attr('rel') : $a.attr('href')).fadeIn(200);
|
4848 |
return false;
|
@@ -5013,7 +5046,7 @@ class YouTubePrefs
|
|
5013 |
{
|
5014 |
$("input#vol").width(40);
|
5015 |
}
|
5016 |
-
|
5017 |
$('#defer_js').on('change', function ()
|
5018 |
{
|
5019 |
if (!$(this).is(':checked'))
|
@@ -5085,6 +5118,7 @@ class YouTubePrefs
|
|
5085 |
$new_options[self::$opt_dohl] = self::postchecked(self::$opt_dohl) ? 1 : 0;
|
5086 |
$new_options[self::$opt_onboarded] = self::postchecked(self::$opt_onboarded) ? 1 : 0;
|
5087 |
$new_options[self::$opt_not_live_on] = self::postchecked(self::$opt_not_live_on) ? 1 : 0;
|
|
|
5088 |
$new_options[self::$opt_gallery_hideprivate] = self::postchecked(self::$opt_gallery_hideprivate) ? 1 : 0;
|
5089 |
$new_options[self::$opt_gallery_showtitle] = self::postchecked(self::$opt_gallery_showtitle) ? 1 : 0;
|
5090 |
$new_options[self::$opt_gallery_showpaging] = self::postchecked(self::$opt_gallery_showpaging) ? 1 : 0;
|
@@ -5364,6 +5398,7 @@ class YouTubePrefs
|
|
5364 |
$input[self::$opt_gallery_columns] = intval($input[self::$opt_gallery_columns]);
|
5365 |
$input[self::$opt_not_live_content] = wp_kses_post(stripslashes($input[self::$opt_not_live_content]));
|
5366 |
$input[self::$opt_not_live_on] = intval($input[self::$opt_not_live_on]);
|
|
|
5367 |
|
5368 |
if (!in_array($input[self::$opt_ytapi_load], array('always', 'light', 'never')))
|
5369 |
{
|
@@ -5401,6 +5436,7 @@ class YouTubePrefs
|
|
5401 |
self::$opt_gallery_columns => 3,
|
5402 |
self::$opt_not_live_content => '',
|
5403 |
self::$opt_not_live_on => 0,
|
|
|
5404 |
self::$opt_ytapi_load => 'light',
|
5405 |
self::$opt_facade_mode => 0,
|
5406 |
self::$opt_facade_autoplay => 1,
|
@@ -5608,7 +5644,7 @@ class YouTubePrefs
|
|
5608 |
<div class="ytprefs-ob-setting yob-single yob-gallery yob-standalone yob-live">
|
5609 |
<input value="1" name="<?php echo self::$opt_responsive; ?>" id="<?php echo self::$opt_responsive; ?>" <?php checked($all[self::$opt_responsive], 1); ?> type="checkbox" class="checkbox">
|
5610 |
<label for="<?php echo self::$opt_responsive; ?>"><?php _e('<b class="chktitle">Responsive Video Sizing:</b> Make your videos responsive so that they dynamically fit in all screen sizes (smart phone, PC and tablet). NOTE: While this is checked, any custom hardcoded widths and heights you may have set will dynamically change too. <b>Do not check this if your theme already handles responsive video sizing.</b>') ?></label>
|
5611 |
-
<p id="boxresponsive_all">
|
5612 |
<input type="radio" name="<?php echo self::$opt_responsive_all; ?>" id="<?php echo self::$opt_responsive_all; ?>1" value="1" <?php checked($all[self::$opt_responsive_all], 1); ?> >
|
5613 |
<label for="<?php echo self::$opt_responsive_all; ?>1">Responsive for all YouTube videos</label>
|
5614 |
<input type="radio" name="<?php echo self::$opt_responsive_all; ?>" id="<?php echo self::$opt_responsive_all; ?>0" value="0" <?php checked($all[self::$opt_responsive_all], 0); ?> >
|
@@ -5637,21 +5673,41 @@ class YouTubePrefs
|
|
5637 |
Enter how many thumbnails can fit per row. You can later use the embedding wizard to customize this for specific galleries.
|
5638 |
</div>
|
5639 |
<div class="ytprefs-ob-setting yob-live">
|
5640 |
-
<
|
5641 |
-
|
5642 |
-
|
5643 |
-
|
5644 |
-
|
5645 |
-
|
5646 |
-
|
5647 |
-
|
5648 |
-
|
5649 |
-
|
5650 |
-
|
5651 |
-
|
5652 |
-
|
5653 |
-
|
5654 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5655 |
</div>
|
5656 |
|
5657 |
<div class="ytprefs-ob-setting yob-privacy">
|
@@ -5882,6 +5938,7 @@ class YouTubePrefs
|
|
5882 |
'ytapi_load' => self::$alloptions[self::$opt_ytapi_load],
|
5883 |
'pause_others' => self::$alloptions[self::$opt_pause_others] == '1' ? true : false,
|
5884 |
'stopMobileBuffer' => self::$alloptions[self::$opt_stop_mobile_buffer] == '1' ? true : false,
|
|
|
5885 |
'vi_active' => false, // self::$alloptions[self::$opt_vi_active] == '1' ? true : false,
|
5886 |
'vi_js_posttypes' => array() // self::$alloptions[self::$opt_vi_js_posttypes]
|
5887 |
);
|
@@ -8524,7 +8581,6 @@ margin: 0 auto;
|
|
8524 |
);
|
8525 |
|
8526 |
//wp_enqueue_style('__ytprefs_admin__vi_css', plugins_url('styles/ytvi-admin' . self::$min . '.css', __FILE__), array(), self::$version);
|
8527 |
-
|
8528 |
// Tiny MCE
|
8529 |
wp_enqueue_style('__ytprefs_admin__tinymce_css', plugins_url('styles/epyt_mce_wizard_button' . self::$min . '.css', __FILE__), array(), self::$version);
|
8530 |
}
|
1 |
<?php
|
2 |
/*
|
3 |
+
Plugin Name: Embed Plus Plugin for YouTube
|
4 |
Plugin URI: https://www.embedplus.com/dashboard/pro-easy-video-analytics.aspx?ref=plugin
|
5 |
Description: YouTube Embed Plugin. Embed a YouTube channel gallery, playlist gallery, YouTube live stream. Lite embeds with defer JavaScript and facade options
|
6 |
+
Version: 14.1
|
7 |
Author: Embed Plus for YouTube Team
|
8 |
Author URI: https://www.embedplus.com
|
9 |
Requires at least: 4.5
|
10 |
+
Tested up to: 5.9
|
11 |
*/
|
12 |
|
13 |
/*
|
14 |
+
Embed Plus Plugin for YouTube
|
15 |
+
Copyright (C) 2022 EmbedPlus.com
|
16 |
|
17 |
This program is free software: you can redistribute it and/or modify
|
18 |
it under the terms of the GNU General Public License as published by
|
36 |
|
37 |
public static $folder_name = 'youtube-embed-plus';
|
38 |
public static $curltimeout = 30;
|
39 |
+
public static $version = '14.1';
|
40 |
public static $opt_version = 'version';
|
41 |
public static $optembedwidth = null;
|
42 |
public static $optembedheight = null;
|
49 |
public static $opt_debugmode = 'debugmode';
|
50 |
public static $opt_old_script_method = 'old_script_method';
|
51 |
public static $opt_cc_load_policy = 'cc_load_policy';
|
52 |
+
public static $opt_cc_lang_pref = 'cc_lang_pref';
|
53 |
public static $opt_iv_load_policy = 'iv_load_policy';
|
54 |
public static $opt_loop = 'loop';
|
55 |
public static $opt_modestbranding = 'modestbranding';
|
114 |
public static $opt_gallery_customnext = 'gallery_customnext';
|
115 |
public static $opt_not_live_content = 'not_live_content';
|
116 |
public static $opt_not_live_on = 'not_live_on';
|
117 |
+
public static $opt_not_live_on_channel = 'not_live_on_channel';
|
118 |
public static $opt_admin_off_scripts = 'admin_off_scripts';
|
119 |
public static $opt_defer_js = 'defer_js';
|
120 |
public static $opt_defer_jquery = 'defer_jquery';
|
230 |
self::$yt_options = array(
|
231 |
self::$opt_autoplay,
|
232 |
self::$opt_cc_load_policy,
|
233 |
+
self::$opt_cc_lang_pref,
|
234 |
self::$opt_iv_load_policy,
|
235 |
self::$opt_loop,
|
236 |
self::$opt_modestbranding,
|
280 |
add_action("wp_ajax_my_embedplus_gallery_page", array(get_class(), 'my_embedplus_gallery_page'));
|
281 |
add_action("wp_ajax_nopriv_my_embedplus_gallery_page", array(get_class(), 'my_embedplus_gallery_page'));
|
282 |
add_action('admin_enqueue_scripts', array(get_class(), 'admin_enqueue_scripts'), 10, 1);
|
283 |
+
|
284 |
+
if (!empty(self::$alloptions[self::$opt_not_live_on_channel]))
|
285 |
+
{
|
286 |
+
add_action("wp_footer", array(get_class(), 'live_fallback_template'));
|
287 |
+
}
|
288 |
/////////////////////////////////////
|
289 |
include_once(EPYTVI_INCLUDES_PATH . 'vi_actions.php');
|
290 |
include_once(EPYTGB_INCLUDES_PATH . 'gutenberg_hooks.php');
|
301 |
}
|
302 |
}
|
303 |
|
304 |
+
public static function live_fallback_template()
|
305 |
+
{
|
306 |
+
echo '<script type="text/x-template" id="epyt-live-fallback">' . base64_encode(apply_filters('ytprefs_filter_the_content_light', wp_kses_post(self::$alloptions[self::$opt_not_live_content]))) . '</script>';
|
307 |
+
}
|
308 |
+
|
309 |
public static function defer_scripts($tag, $handle, $src)
|
310 |
{
|
311 |
$defer = array(
|
1077 |
<div class="clearboth" style="height: 10px;">
|
1078 |
</div>
|
1079 |
<p>
|
1080 |
+
<?php _e('If you see a black/empty YouTube player, then it likely means that you do not have any currently running or future live streams that are scheduled in your channel, so the plugin isn\'t getting any data from the YouTube API to show. If you want to continue to use the channel based live stream embedding method, we suggest regularly scheduling one or more live streams, or using the live stream fallback content feature, so the player is not black/empty.', 'text_domain'); ?>
|
1081 |
</p>
|
1082 |
<div class="ep-wizard-preview-video-wrapper">
|
1083 |
<iframe src="https://www.youtube.com/embed/live_stream?channel=<?php echo esc_attr($thechannelid) ?>" allowfullscreen="" frameborder="0"></iframe>
|
1340 |
</p>
|
1341 |
<ol>
|
1342 |
<li>
|
1343 |
+
Paste in the direct URL of the live stream or premiere below and click Submit. <br> Example: https://www.youtube.com/watch?v=<strong>5qap5aO4i9A</strong>
|
1344 |
</li>
|
1345 |
<li>
|
1346 |
On the next screen, customize or insert your video.
|
1369 |
</form>
|
1370 |
<?php echo $step1_livechannel_errors ? '<p class="orange bold">' . $step1_livechannel_errors . '</p>' : ''; ?>
|
1371 |
<p class="smallnote">
|
1372 |
+
<strong class="orange">New</strong>: The "Not Live" fallback content feature is now available for channel-based embeds! <a href="<?php echo admin_url('admin.php?page=youtube-my-preferences') ?>#not_live_content_scroll" target="_blank">Try it out here</a>.
|
1373 |
</p>
|
1374 |
</div>
|
1375 |
</div>
|
1835 |
ajax_compat: <?php echo self::$alloptions[self::$opt_ajax_compat] == '1' ? 'true' : 'false' ?>,
|
1836 |
ytapi_load: '<?php echo esc_attr(self::$alloptions[self::$opt_ytapi_load]) ?>',
|
1837 |
pause_others: <?php echo self::$alloptions[self::$opt_pause_others] == '1' ? 'true' : 'false' ?>,
|
1838 |
+
not_live_on_channel: <?php echo self::$alloptions[self::$opt_not_live_on_channel] == '1' ? 'true' : 'false' ?>,
|
1839 |
stopMobileBuffer: <?php echo self::$alloptions[self::$opt_stop_mobile_buffer] == '1' ? 'true' : 'false' ?>
|
1840 |
};</script>
|
1841 |
<?php
|
1887 |
$_nocookie = 0;
|
1888 |
$_gb_compat = 1;
|
1889 |
$_facade_mode = 0;
|
1890 |
+
$_facade_autoplay = 1;
|
1891 |
$_gdpr_consent = 0;
|
1892 |
$_gdpr_consent_message = self::$dft_gdpr_consent_message;
|
1893 |
$_gdpr_consent_button = 'Accept YouTube Content';
|
1937 |
$_gallery_pagesize = 15;
|
1938 |
$_not_live_content = '';
|
1939 |
$_not_live_on = 0;
|
1940 |
+
$_not_live_on_channel = 0;
|
1941 |
$_debugmode = 0;
|
1942 |
$_admin_off_scripts = 0;
|
1943 |
$_defer_js = 0;
|
2036 |
$_not_live_content = self::tryget($arroptions, self::$opt_not_live_content, $_not_live_content);
|
2037 |
$_not_live_content = empty($_not_live_content) ? $_not_live_content : trim($_not_live_content);
|
2038 |
$_not_live_on = self::tryget($arroptions, self::$opt_not_live_on, empty($_not_live_content) ? 0 : $_not_live_on);
|
2039 |
+
$_not_live_on_channel = self::tryget($arroptions, self::$opt_not_live_on_channel, $_not_live_on_channel);
|
2040 |
$_admin_off_scripts = self::tryget($arroptions, self::$opt_admin_off_scripts, $_admin_off_scripts);
|
2041 |
$_defer_js = self::tryget($arroptions, self::$opt_defer_js, $_defer_js);
|
2042 |
$_defer_jquery = self::tryget($arroptions, self::$opt_defer_jquery, $_defer_jquery);
|
2132 |
self::$opt_gallery_pagesize => $_gallery_pagesize,
|
2133 |
self::$opt_not_live_content => $_not_live_content,
|
2134 |
self::$opt_not_live_on => $_not_live_on,
|
2135 |
+
self::$opt_not_live_on_channel => $_not_live_on_channel,
|
2136 |
self::$opt_debugmode => $_debugmode,
|
2137 |
self::$opt_admin_off_scripts => $_admin_off_scripts,
|
2138 |
self::$opt_defer_js => $_defer_js,
|
2850 |
}
|
2851 |
else if (isset($finalparams['list']))
|
2852 |
{
|
2853 |
+
$facade_img_src = ' data-facadeoembed="playlist?list=' . $finalparams['list'] . '" ';
|
2854 |
}
|
2855 |
$acctitle = str_replace('title="', 'alt="', $acctitle);
|
2856 |
$facade_autoplay = $finalparams[self::$opt_facade_autoplay] == 1 ? ' data-epautoplay="1" ' : '';
|
2857 |
$code_iframe1 = '<div ' . $centercode . ' id="_ytid_' . $iframe_id . '" ' . $dim_attrs . ' data-origwidth="' . self::$defaultwidth . '" data-origheight="' . self::$defaultheight . '" ' . $relstop .
|
2858 |
'data-facadesrc="https://www.' . $youtubebaseurl . '.com/embed/' . $videoidoutput . '?';
|
2859 |
+
$code_iframe2 = '" class="__youtube_prefs__ epyt-facade' . (!empty($finalparams['live_stream']) ? ' epyt-live-channel ' : '') . ($iscontent ? '' : ' __youtube_prefs_widget__ ') . ($isoverride ? ' epyt-is-override ' : '') . ' no-lazyload"' .
|
2860 |
$voloutput . $galleryid_ifm_data . $facade_autoplay . '><img class="epyt-facade-poster" loading="lazy" ' . $acctitle . $facade_img_src . ' />' .
|
2861 |
'<button class="epyt-facade-play" aria-label="Play"><svg data-no-lazy="1" height="100%" version="1.1" viewBox="0 0 68 48" width="100%"><path class="ytp-large-play-button-bg" d="M66.52,7.74c-0.78-2.93-2.49-5.41-5.42-6.19C55.79,.13,34,0,34,0S12.21,.13,6.9,1.55 C3.97,2.33,2.27,4.81,1.48,7.74C0.06,13.05,0,24,0,24s0.06,10.95,1.48,16.26c0.78,2.93,2.49,5.41,5.42,6.19 C12.21,47.87,34,48,34,48s21.79-0.13,27.1-1.55c2.93-0.78,4.64-3.26,5.42-6.19C67.94,34.95,68,24,68,24S67.94,13.05,66.52,7.74z" fill="#f00"></path><path d="M 45,24 27,14 27,34" fill="#fff"></path></svg></button>' .
|
2862 |
'</div>';
|
2865 |
{
|
2866 |
$code_iframe1 = '<iframe ' . $centercode . ' id="_ytid_' . $iframe_id . '" ' . $dim_attrs . ' data-origwidth="' . self::$defaultwidth . '" data-origheight="' . self::$defaultheight . '" ' . $relstop .
|
2867 |
'src="https://www.' . $youtubebaseurl . '.com/embed/' . $videoidoutput . '?';
|
2868 |
+
$code_iframe2 = '" class="__youtube_prefs__ ' . (!empty($finalparams['live_stream']) ? ' epyt-live-channel ' : '') . ($iscontent ? '' : ' __youtube_prefs_widget__ ') . ($isoverride ? ' epyt-is-override ' : '') . ' no-lazyload"' .
|
2869 |
+
$voloutput . $acctitle . $galleryid_ifm_data . ' allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen data-no-lazy="1" data-skipgform_ajax_framebjll=""></iframe>';
|
2870 |
}
|
2871 |
+
|
2872 |
+
$code2 = $end_responsive . $end_gb_wrapper;
|
2873 |
+
|
2874 |
$code1 .= $code_iframe1;
|
2875 |
$code2 = $code_iframe2 . $code2;
|
2876 |
|
3240 |
$new_pointer_content = '<h3>' . __('New Update') . '</h3>'; // ooopointer
|
3241 |
|
3242 |
$new_pointer_content .= '<p>'; // ooopointer
|
3243 |
+
$new_pointer_content .= "This update adds the live stream fallback feature to channel-based live stream embeds, for both free and <a target=_blank href=" . self::$epbase . '/dashboard/pro-easy-video-analytics.aspx?ref=frompointer' . ">Pro versions</a>.";
|
3244 |
if (self::vi_logged_in())
|
3245 |
{
|
3246 |
$new_pointer_content .= "<br><br><strong>Note:</strong> You are currently logged into the vi intelligence feature. vi support is being deprecated in the next version, so we recommend taking the vi ads down from your site. Please contact ext@embedplus.com for questions.";
|
3517 |
display: inline;
|
3518 |
}
|
3519 |
|
3520 |
+
.not-live-content {
|
3521 |
opacity: .3;
|
3522 |
}
|
3523 |
|
3524 |
+
#not_live_on:checked ~ .not-live-content, #not_live_on_channel:checked ~ .not-live-content {
|
3525 |
opacity: 1;
|
3526 |
}
|
3527 |
+
|
3528 |
#facade_mode ~ .box_facade_mode {
|
3529 |
opacity: .3;
|
3530 |
}
|
3714 |
</p>
|
3715 |
<?php
|
3716 |
$lang_codes = [
|
3717 |
+
["Abkhazian", "аҧсуа бызшәа, аҧсшәа", "ab", "abk", "abk"],
|
3718 |
+
["Afar", "Afaraf", "aa", "aar", "aar"],
|
3719 |
+
["Afrikaans", "Afrikaans", "af", "afr", "afr"],
|
3720 |
+
["Akan", "Akan", "ak", "aka", "aka"],
|
3721 |
+
["Albanian", "Shqip", "sq", "sqi", "alb"],
|
3722 |
+
["Amharic", "አማርኛ", "am", "amh", "amh"],
|
3723 |
+
["Arabic", "العربية", "ar", "ara", "ara"],
|
3724 |
+
["Aragonese", "aragonés", "an", "arg", "arg"],
|
3725 |
+
["Armenian", "Հայերեն", "hy", "hye", "arm"],
|
3726 |
+
["Assamese", "অসমীয়া", "as", "asm", "asm"],
|
3727 |
+
["Avaric", "авар мацӀ, магӀарул мацӀ", "av", "ava", "ava"],
|
3728 |
+
["Avestan", "avesta", "ae", "ave", "ave"],
|
3729 |
+
["Aymara", "aymar aru", "ay", "aym", "aym"],
|
3730 |
+
["Azerbaijani", "azərbaycan dili", "az", "aze", "aze"],
|
3731 |
+
["Bambara", "bamanankan", "bm", "bam", "bam"],
|
3732 |
+
["Bashkir", "башҡорт теле", "ba", "bak", "bak"],
|
3733 |
+
["Basque", "euskara, euskera", "eu", "eus", "baq"],
|
3734 |
+
["Belarusian", "беларуская мова", "be", "bel", "bel"],
|
3735 |
+
["Bengali", "বাংলা", "bn", "ben", "ben"],
|
3736 |
+
["Bihari languages", "भोजपुरी", "bh", "bih", "bih"],
|
3737 |
+
["Bislama", "Bislama", "bi", "bis", "bis"],
|
3738 |
+
["Bosnian", "bosanski jezik", "bs", "bos", "bos"],
|
3739 |
+
["Breton", "brezhoneg", "br", "bre", "bre"],
|
3740 |
+
["Bulgarian", "български език", "bg", "bul", "bul"],
|
3741 |
+
["Burmese", "ဗမာစာ", "my", "mya", "bur"],
|
3742 |
+
["Catalan, Valencian", "català, valencià", "ca", "cat", "cat"],
|
3743 |
+
["Chamorro", "Chamoru", "ch", "cha", "cha"],
|
3744 |
+
["Chechen", "нохчийн мотт", "ce", "che", "che"],
|
3745 |
+
["Chichewa, Chewa, Nyanja", "chiCheŵa, chinyanja", "ny", "nya", "nya"],
|
3746 |
+
["Chinese", "中文 (Zhōngwén), 汉语, 漢語", "zh", "zho", "chi"],
|
3747 |
+
["Chuvash", "чӑваш чӗлхи", "cv", "chv", "chv"],
|
3748 |
+
["Cornish", "Kernewek", "kw", "cor", "cor"],
|
3749 |
+
["Corsican", "corsu, lingua corsa", "co", "cos", "cos"],
|
3750 |
+
["Cree", "ᓀᐦᐃᔭᐍᐏᐣ", "cr", "cre", "cre"],
|
3751 |
+
["Croatian", "hrvatski jezik", "hr", "hrv", "hrv"],
|
3752 |
+
["Czech", "čeština, český jazyk", "cs", "ces", "cze"],
|
3753 |
+
["Danish", "dansk", "da", "dan", "dan"],
|
3754 |
+
["Divehi, Dhivehi, Maldivian", "ދިވެހި", "dv", "div", "div"],
|
3755 |
+
["Dutch, Flemish", "Nederlands, Vlaams", "nl", "nld", "dut"],
|
3756 |
+
["Dzongkha", "རྫོང་ཁ", "dz", "dzo", "dzo"],
|
3757 |
+
["English", "English", "en", "eng", "eng"],
|
3758 |
+
["Esperanto", "Esperanto", "eo", "epo", "epo"],
|
3759 |
+
["Estonian", "eesti, eesti keel", "et", "est", "est"],
|
3760 |
+
["Ewe", "Eʋegbe", "ee", "ewe", "ewe"],
|
3761 |
+
["Faroese", "føroyskt", "fo", "fao", "fao"],
|
3762 |
+
["Fijian", "vosa Vakaviti", "fj", "fij", "fij"],
|
3763 |
+
["Finnish", "suomi, suomen kieli", "fi", "fin", "fin"],
|
3764 |
+
["French", "français, langue française", "fr", "fra", "fre"],
|
3765 |
+
["Fulah", "Fulfulde, Pulaar, Pular", "ff", "ful", "ful"],
|
3766 |
+
["Galician", "Galego", "gl", "glg", "glg"],
|
3767 |
+
["Georgian", "ქართული", "ka", "kat", "geo"],
|
3768 |
+
["German", "Deutsch", "de", "deu", "ger"],
|
3769 |
+
["Greek, Modern (1453–)", "ελληνικά", "el", "ell", "gre"],
|
3770 |
+
["Guarani", "Avañe'ẽ", "gn", "grn", "grn"],
|
3771 |
+
["Gujarati", "ગુજરાતી", "gu", "guj", "guj"],
|
3772 |
+
["Haitian, Haitian Creole", "Kreyòl ayisyen", "ht", "hat", "hat"],
|
3773 |
+
["Hausa", "(Hausa) هَوُسَ", "ha", "hau", "hau"],
|
3774 |
+
["Hebrew", "עברית", "he", "heb", "heb"],
|
3775 |
+
["Herero", "Otjiherero", "hz", "her", "her"],
|
3776 |
+
["Hindi", "हिन्दी, हिंदी", "hi", "hin", "hin"],
|
3777 |
+
["Hiri Motu", "Hiri Motu", "ho", "hmo", "hmo"],
|
3778 |
+
["Hungarian", "magyar", "hu", "hun", "hun"],
|
3779 |
+
["Interlingua (International Auxiliary Language Association)", "Interlingua", "ia", "ina", "ina"],
|
3780 |
+
["Indonesian", "Bahasa Indonesia", "id", "ind", "ind"],
|
3781 |
+
["Interlingue, Occidental", "(originally:) Occidental, (after WWII:) Interlingue", "ie", "ile", "ile"],
|
3782 |
+
["Irish", "Gaeilge", "ga", "gle", "gle"],
|
3783 |
+
["Igbo", "Asụsụ Igbo", "ig", "ibo", "ibo"],
|
3784 |
+
["Inupiaq", "Iñupiaq, Iñupiatun", "ik", "ipk", "ipk"],
|
3785 |
+
["Ido", "Ido", "io", "ido", "ido"],
|
3786 |
+
["Icelandic", "Íslenska", "is", "isl", "ice"],
|
3787 |
+
["Italian", "Italiano", "it", "ita", "ita"],
|
3788 |
+
["Inuktitut", "ᐃᓄᒃᑎᑐᑦ", "iu", "iku", "iku"],
|
3789 |
+
["Japanese", "日本語 (にほんご)", "ja", "jpn", "jpn"],
|
3790 |
+
["Javanese", "ꦧꦱꦗꦮ, Basa Jawa", "jv", "jav", "jav"],
|
3791 |
+
["Kalaallisut, Greenlandic", "kalaallisut, kalaallit oqaasii", "kl", "kal", "kal"],
|
3792 |
+
["Kannada", "ಕನ್ನಡ", "kn", "kan", "kan"],
|
3793 |
+
["Kanuri", "Kanuri", "kr", "kau", "kau"],
|
3794 |
+
["Kashmiri", "कश्मीरी, كشميري", "ks", "kas", "kas"],
|
3795 |
+
["Kazakh", "қазақ тілі", "kk", "kaz", "kaz"],
|
3796 |
+
["Central Khmer", "ខ្មែរ, ខេមរភាសា, ភាសាខ្មែរ", "km", "khm", "khm"],
|
3797 |
+
["Kikuyu, Gikuyu", "Gĩkũyũ", "ki", "kik", "kik"],
|
3798 |
+
["Kinyarwanda", "Ikinyarwanda", "rw", "kin", "kin"],
|
3799 |
+
["Kirghiz, Kyrgyz", "Кыргызча, Кыргыз тили", "ky", "kir", "kir"],
|
3800 |
+
["Komi", "коми кыв", "kv", "kom", "kom"],
|
3801 |
+
["Kongo", "Kikongo", "kg", "kon", "kon"],
|
3802 |
+
["Korean", "한국어", "ko", "kor", "kor"],
|
3803 |
+
["Kurdish", "Kurdî, کوردی", "ku", "kur", "kur"],
|
3804 |
+
["Kuanyama, Kwanyama", "Kuanyama", "kj", "kua", "kua"],
|
3805 |
+
["Latin", "latine, lingua latina", "la", "lat", "lat"],
|
3806 |
+
["Luxembourgish, Letzeburgesch", "Lëtzebuergesch", "lb", "ltz", "ltz"],
|
3807 |
+
["Ganda", "Luganda", "lg", "lug", "lug"],
|
3808 |
+
["Limburgan, Limburger, Limburgish", "Limburgs", "li", "lim", "lim"],
|
3809 |
+
["Lingala", "Lingála", "ln", "lin", "lin"],
|
3810 |
+
["Lao", "ພາສາລາວ", "lo", "lao", "lao"],
|
3811 |
+
["Lithuanian", "lietuvių kalba", "lt", "lit", "lit"],
|
3812 |
+
["Luba-Katanga", "Kiluba", "lu", "lub", "lub"],
|
3813 |
+
["Latvian", "latviešu valoda", "lv", "lav", "lav"],
|
3814 |
+
["Manx", "Gaelg, Gailck", "gv", "glv", "glv"],
|
3815 |
+
["Macedonian", "македонски јазик", "mk", "mkd", "mac"],
|
3816 |
+
["Malagasy", "fiteny malagasy", "mg", "mlg", "mlg"],
|
3817 |
+
["Malay", "Bahasa Melayu, بهاس ملايو", "ms", "msa", "may"],
|
3818 |
+
["Malayalam", "മലയാളം", "ml", "mal", "mal"],
|
3819 |
+
["Maltese", "Malti", "mt", "mlt", "mlt"],
|
3820 |
+
["Maori", "te reo Māori", "mi", "mri", "mao"],
|
3821 |
+
["Marathi", "मराठी", "mr", "mar", "mar"],
|
3822 |
+
["Marshallese", "Kajin M̧ajeļ", "mh", "mah", "mah"],
|
3823 |
+
["Mongolian", "Монгол хэл", "mn", "mon", "mon"],
|
3824 |
+
["Nauru", "Dorerin Naoero", "na", "nau", "nau"],
|
3825 |
+
["Navajo, Navaho", "Diné bizaad", "nv", "nav", "nav"],
|
3826 |
+
["North Ndebele", "isiNdebele", "nd", "nde", "nde"],
|
3827 |
+
["Nepali", "नेपाली", "ne", "nep", "nep"],
|
3828 |
+
["Ndonga", "Owambo", "ng", "ndo", "ndo"],
|
3829 |
+
["Norwegian Bokmål", "Norsk Bokmål", "nb", "nob", "nob"],
|
3830 |
+
["Norwegian Nynorsk", "Norsk Nynorsk", "nn", "nno", "nno"],
|
3831 |
+
["Norwegian", "Norsk", "no", "nor", "nor"],
|
3832 |
+
["Sichuan Yi, Nuosu", "ꆈꌠ꒿ Nuosuhxop", "ii", "iii", "iii"],
|
3833 |
+
["South Ndebele", "isiNdebele", "nr", "nbl", "nbl"],
|
3834 |
+
["Occitan", "occitan, lenga d'òc", "oc", "oci", "oci"],
|
3835 |
+
["Ojibwa", "ᐊᓂᔑᓈᐯᒧᐎᓐ", "oj", "oji", "oji"],
|
3836 |
+
["Church Slavic, Old Slavonic, Church Slavonic, Old Bulgarian, Old Church Slavonic", "ѩзыкъ словѣньскъ", "cu", "chu", "chu"],
|
3837 |
+
["Oromo", "Afaan Oromoo", "om", "orm", "orm"],
|
3838 |
+
["Oriya", "ଓଡ଼ିଆ", "or", "ori", "ori"],
|
3839 |
+
["Ossetian, Ossetic", "ирон æвзаг", "os", "oss", "oss"],
|
3840 |
+
["Punjabi, Panjabi", "ਪੰਜਾਬੀ, پنجابی", "pa", "pan", "pan"],
|
3841 |
+
["Pali", "पालि, पाळि", "pi", "pli", "pli"],
|
3842 |
+
["Persian", "فارسی", "fa", "fas", "per"],
|
3843 |
+
["Polish", "język polski, polszczyzna", "pl", "pol", "pol"],
|
3844 |
+
["Pashto, Pushto", "پښتو", "ps", "pus", "pus"],
|
3845 |
+
["Portuguese", "Português", "pt", "por", "por"],
|
3846 |
+
["Quechua", "Runa Simi, Kichwa", "qu", "que", "que"],
|
3847 |
+
["Romansh", "Rumantsch Grischun", "rm", "roh", "roh"],
|
3848 |
+
["Rundi", "Ikirundi", "rn", "run", "run"],
|
3849 |
+
["Romanian, Moldavian, Moldovan", "Română", "ro", "ron", "rum"],
|
3850 |
+
["Russian", "русский", "ru", "rus", "rus"],
|
3851 |
+
["Sanskrit", "संस्कृतम्", "sa", "san", "san"],
|
3852 |
+
["Sardinian", "sardu", "sc", "srd", "srd"],
|
3853 |
+
["Sindhi", "सिन्धी, سنڌي، سندھی", "sd", "snd", "snd"],
|
3854 |
+
["Northern Sami", "Davvisámegiella", "se", "sme", "sme"],
|
3855 |
+
["Samoan", "gagana fa'a Samoa", "sm", "smo", "smo"],
|
3856 |
+
["Sango", "yângâ tî sängö", "sg", "sag", "sag"],
|
3857 |
+
["Serbian", "српски језик", "sr", "srp", "srp"],
|
3858 |
+
["Gaelic, Scottish Gaelic", "Gàidhlig", "gd", "gla", "gla"],
|
3859 |
+
["Shona", "chiShona", "sn", "sna", "sna"],
|
3860 |
+
["Sinhala, Sinhalese", "සිංහල", "si", "sin", "sin"],
|
3861 |
+
["Slovak", "Slovenčina, Slovenský Jazyk", "sk", "slk", "slo"],
|
3862 |
+
["Slovenian", "Slovenski Jezik, Slovenščina", "sl", "slv", "slv"],
|
3863 |
+
["Somali", "Soomaaliga, af Soomaali", "so", "som", "som"],
|
3864 |
+
["Southern Sotho", "Sesotho", "st", "sot", "sot"],
|
3865 |
+
["Spanish, Castilian", "Español", "es", "spa", "spa"],
|
3866 |
+
["Sundanese", "Basa Sunda", "su", "sun", "sun"],
|
3867 |
+
["Swahili", "Kiswahili", "sw", "swa", "swa"],
|
3868 |
+
["Swati", "SiSwati", "ss", "ssw", "ssw"],
|
3869 |
+
["Swedish", "Svenska", "sv", "swe", "swe"],
|
3870 |
+
["Tamil", "தமிழ்", "ta", "tam", "tam"],
|
3871 |
+
["Telugu", "తెలుగు", "te", "tel", "tel"],
|
3872 |
+
["Tajik", "тоҷикӣ, toçikī, تاجیکی", "tg", "tgk", "tgk"],
|
3873 |
+
["Thai", "ไทย", "th", "tha", "tha"],
|
3874 |
+
["Tigrinya", "ትግርኛ", "ti", "tir", "tir"],
|
3875 |
+
["Tibetan", "བོད་ཡིག", "bo", "bod", "tib"],
|
3876 |
+
["Turkmen", "Türkmen, Түркмен", "tk", "tuk", "tuk"],
|
3877 |
+
["Tagalog", "Wikang Tagalog", "tl", "tgl", "tgl"],
|
3878 |
+
["Tswana", "Setswana", "tn", "tsn", "tsn"],
|
3879 |
+
["Tonga (Tonga Islands)", "Faka Tonga", "to", "ton", "ton"],
|
3880 |
+
["Turkish", "Türkçe", "tr", "tur", "tur"],
|
3881 |
+
["Tsonga", "Xitsonga", "ts", "tso", "tso"],
|
3882 |
+
["Tatar", "татар теле, tatar tele", "tt", "tat", "tat"],
|
3883 |
+
["Twi", "Twi", "tw", "twi", "twi"],
|
3884 |
+
["Tahitian", "Reo Tahiti", "ty", "tah", "tah"],
|
3885 |
+
["Uighur, Uyghur", "ئۇيغۇرچە, Uyghurche", "ug", "uig", "uig"],
|
3886 |
+
["Ukrainian", "Українська", "uk", "ukr", "ukr"],
|
3887 |
+
["Urdu", "اردو", "ur", "urd", "urd"],
|
3888 |
+
["Uzbek", "Oʻzbek, Ўзбек, أۇزبېك", "uz", "uzb", "uzb"],
|
3889 |
+
["Venda", "Tshivenḓa", "ve", "ven", "ven"],
|
3890 |
+
["Vietnamese", "Tiếng Việt", "vi", "vie", "vie"],
|
3891 |
+
["Volapük", "Volapük", "vo", "vol", "vol"],
|
3892 |
+
["Walloon", "Walon", "wa", "wln", "wln"],
|
3893 |
+
["Welsh", "Cymraeg", "cy", "cym", "wel"],
|
3894 |
+
["Wolof", "Wollof", "wo", "wol", "wol"],
|
3895 |
+
["Western Frisian", "Frysk", "fy", "fry", "fry"],
|
3896 |
+
["Xhosa", "isiXhosa", "xh", "xho", "xho"],
|
3897 |
+
["Yiddish", "ייִדיש", "yi", "yid", "yid"],
|
3898 |
+
["Yoruba", "Yorùbá", "yo", "yor", "yor"],
|
3899 |
+
["Zhuang, Chuang", "Saɯ cueŋƅ, Saw cuengh", "za", "zha", "zha"],
|
3900 |
+
["Zulu", "isiZulu", "zu", "zul", "zul"]
|
3901 |
];
|
3902 |
+
|
3903 |
$selected_val = trim($all[self::$opt_cc_lang_pref]);
|
3904 |
?>
|
3905 |
<p>
|
3912 |
$iso_code = $lang_row[2];
|
3913 |
$iso_label = $lang_row[0] . ' - ' . $lang_row[1];
|
3914 |
?>
|
3915 |
+
<option <?php echo $iso_code == $selected_val ? 'selected' : '' ?> value="<?php echo $iso_code ?>"><?php echo $iso_label ?></option>
|
3916 |
<?php
|
3917 |
}
|
3918 |
?>
|
3952 |
<label for="<?php echo self::$opt_vi_hide_monetize_tab; ?>"><b class="chktitle">Hide "Monetize" Feature:</b> (deprecated) Hide the tab(s) for the deprecated video intelligence feature.</label>
|
3953 |
</p>
|
3954 |
<div id="not_live_content_scroll" class="p">
|
3955 |
+
<p>
|
3956 |
+
<b class="chktitle">Use "Not Live" Fallback Content For Live Streams:</b> (<a href="<?php echo self::$epbase ?>/how-to-embed-a-youtube-livestream-in-wordpress.aspx" target="_blank">More info here</a>)
|
3957 |
+
This feature lets you display alternate content if your live stream or premiere is not currently active. There are 2 flavors of this feature: one that affects <strong>direct link</strong> live streams, and
|
3958 |
+
one that affects <strong>channel</strong> live streams. Each are explained below. They work a little differently, but both use the same "Not Live" Fallback Content that you can edit below.
|
3959 |
+
</p>
|
3960 |
+
<div class="ytindent chx">
|
3961 |
+
<input name="<?php echo self::$opt_not_live_on; ?>" id="<?php echo self::$opt_not_live_on; ?>" <?php checked($all[self::$opt_not_live_on], 1); ?> type="checkbox" class="checkbox">
|
3962 |
+
<label for="<?php echo self::$opt_not_live_on; ?>"><span class="chktitle">Turn on for <b>direct link</b> live streams:</span>
|
3963 |
+
When your direct-link embed is not streaming live or premiering, the YouTube live player usually displays a countdown after the user clicks the play button.
|
3964 |
+
Instead of showing that player, you can display some "coming soon" content in that space for your visitors to see until your video begins to live stream or premiere.
|
3965 |
+
The plugin will automatically switch to your video's live stream or premiere once it's active. In the <em>"Not Live" Fallback Content</em> box below, enter what you would like to appear until then.
|
3966 |
+
You can even insert shortcodes from our plugin into the box below (shortcodes from other plugins may or may not work correctly).
|
3967 |
+
If you just want to show the standard countdown player that YouTube provides, don't use this feature.
|
3968 |
+
<strong>NOTE: Turning this on for direct-link live streams uses a significant amount of your YouTube API quota. We suggest unchecking it if your site has high traffic. If you chose to use this feature, do not put another live stream embed below.</strong>
|
3969 |
+
</label>
|
3970 |
+
<br>
|
3971 |
+
<br>
|
3972 |
+
<input name="<?php echo self::$opt_not_live_on_channel; ?>" id="<?php echo self::$opt_not_live_on_channel; ?>" <?php checked($all[self::$opt_not_live_on_channel], 1); ?> type="checkbox" class="checkbox">
|
3973 |
+
<label for="<?php echo self::$opt_not_live_on_channel; ?>"><span class="chktitle">Turn on for <b>channel</b> live streams:</span> <sup class="orange">beta</sup>
|
3974 |
+
If your live stream embed is channel-based, YouTube might show an error message if there is no upcoming or currently streaming video from your channel.
|
3975 |
+
Instead of showing an error, you can display some "coming soon" content in that space for your visitors to see until you've scheduled a live stream or premiere
|
3976 |
+
(Once you've scheduled something, YouTube will display the usual countdown until the stream happens).
|
3977 |
+
In the <em>"Not Live" Fallback Content</em> box below, enter what you would like to appear when nothing is playing or scheduled to play yet on your channel.
|
3978 |
+
You can even insert shortcodes from our plugin into the box below (shortcodes from other plugins may or may not work correctly).
|
3979 |
+
<strong>NOTE: This feature for channel live streams is experimental, but it will preserve your API quota. We recommend trying this instead of the direct-link option, to see if it works for your site. We hope to improve this feature over time.</strong>
|
3980 |
+
</label>
|
3981 |
+
<div class="p not-live-content">
|
3982 |
+
<p>
|
3983 |
+
<b>"Not Live" Fallback Content:</b>
|
3984 |
+
</p>
|
3985 |
+
<?php
|
3986 |
+
wp_editor(wp_kses_post($all[self::$opt_not_live_content]), self::$opt_not_live_content, array('textarea_rows' => 7));
|
3987 |
+
?>
|
3988 |
+
</div>
|
3989 |
+
</div>
|
3990 |
</div>
|
|
|
|
|
3991 |
</div>
|
|
|
3992 |
</section>
|
3993 |
<section class="pattern" id="jumpprivacy">
|
3994 |
<h2>Security Options</h2>
|
4029 |
<li><label>
|
4030 |
<input type="radio" name="<?php echo self::$opt_ytapi_load ?>" value="never" <?php checked($all[self::$opt_ytapi_load], 'never'); ?> /> <em>Never</em> - Do not load the YouTube API. Note: The "Never" choice may break a few features such as Volume Initialization and Gallery Continuous/Auto Play.
|
4031 |
<div id="boxapinever">
|
4032 |
+
Note: Checking this option may break some features such as the ones listed below:
|
4033 |
+
<ul class="list-ul">
|
4034 |
+
<li>Galleries</li>
|
4035 |
+
<li>Hide related videos at the end of playback</li>
|
4036 |
+
<li>Volume initialization</li>
|
4037 |
+
<li>Simultaneous playback control</li>
|
4038 |
+
<li>Playing video on mobile devices</li>
|
4039 |
+
</ul>
|
4040 |
+
</div>
|
4041 |
</label></li>
|
4042 |
<li><label><input type="radio" name="<?php echo self::$opt_ytapi_load ?>" value="always" <?php checked($all[self::$opt_ytapi_load], 'always'); ?> /> <em>Always</em> - Load the API on all pages. In most cases, the "Always" choice is not necessary.</label></li>
|
4043 |
</ul>
|
4564 |
</label>
|
4565 |
</div>
|
4566 |
</div>
|
4567 |
+
<p><?php _e('Note: Since the YouTube player is loaded in its own iframe from YouTube\'s servers, browser restrictions prevent this plugin from directly deferring the JS inside the iframe. However, if you upgrade to Pro, you can use the lazy loading feature <a href="#jumpupgrade">described here »</a> to further improve your page speeds or try out facade mode.', 'youtube-embed-plus'); ?></p>
|
4568 |
+
<!-- <div style="width: 50%">
|
4569 |
+
<div class="epyt-fitvid">
|
4570 |
+
<iframe allow="encrypted-media" allowfullscreen="" src="https://www.youtube-nocookie.com/embed/?autoplay=0&cc_load_policy=0&iv_load_policy=1&loop=0&modestbranding=0&fs=1&playsinline=0&controls=1&color=red&rel=1&autohide=2&theme=dark&"></iframe>
|
4571 |
+
</div>
|
4572 |
+
</div>-->
|
4573 |
</section>
|
4574 |
|
4575 |
<div class="save-changes-follow"> <?php self::save_changes_button(isset($_POST[$ytprefs_submitted]) && $_POST[$ytprefs_submitted] == 'Y'); ?> </div>
|
4875 |
if (!$a.hasClass('href-link'))
|
4876 |
{
|
4877 |
$('.wrap-ytprefs .nav-tab-wrapper a').removeClass('nav-tab-active');
|
4878 |
+
$a.addClass('nav-tab-active');
|
4879 |
$('.wrap-ytprefs section').hide();
|
4880 |
$('.wrap-ytprefs section').filter($a.attr('rel') ? $a.attr('rel') : $a.attr('href')).fadeIn(200);
|
4881 |
return false;
|
5046 |
{
|
5047 |
$("input#vol").width(40);
|
5048 |
}
|
5049 |
+
|
5050 |
$('#defer_js').on('change', function ()
|
5051 |
{
|
5052 |
if (!$(this).is(':checked'))
|
5118 |
$new_options[self::$opt_dohl] = self::postchecked(self::$opt_dohl) ? 1 : 0;
|
5119 |
$new_options[self::$opt_onboarded] = self::postchecked(self::$opt_onboarded) ? 1 : 0;
|
5120 |
$new_options[self::$opt_not_live_on] = self::postchecked(self::$opt_not_live_on) ? 1 : 0;
|
5121 |
+
$new_options[self::$opt_not_live_on_channel] = self::postchecked(self::$opt_not_live_on_channel) ? 1 : 0;
|
5122 |
$new_options[self::$opt_gallery_hideprivate] = self::postchecked(self::$opt_gallery_hideprivate) ? 1 : 0;
|
5123 |
$new_options[self::$opt_gallery_showtitle] = self::postchecked(self::$opt_gallery_showtitle) ? 1 : 0;
|
5124 |
$new_options[self::$opt_gallery_showpaging] = self::postchecked(self::$opt_gallery_showpaging) ? 1 : 0;
|
5398 |
$input[self::$opt_gallery_columns] = intval($input[self::$opt_gallery_columns]);
|
5399 |
$input[self::$opt_not_live_content] = wp_kses_post(stripslashes($input[self::$opt_not_live_content]));
|
5400 |
$input[self::$opt_not_live_on] = intval($input[self::$opt_not_live_on]);
|
5401 |
+
$input[self::$opt_not_live_on_channel] = intval($input[self::$opt_not_live_on_channel]);
|
5402 |
|
5403 |
if (!in_array($input[self::$opt_ytapi_load], array('always', 'light', 'never')))
|
5404 |
{
|
5436 |
self::$opt_gallery_columns => 3,
|
5437 |
self::$opt_not_live_content => '',
|
5438 |
self::$opt_not_live_on => 0,
|
5439 |
+
self::$opt_not_live_on_channel => 0,
|
5440 |
self::$opt_ytapi_load => 'light',
|
5441 |
self::$opt_facade_mode => 0,
|
5442 |
self::$opt_facade_autoplay => 1,
|
5644 |
<div class="ytprefs-ob-setting yob-single yob-gallery yob-standalone yob-live">
|
5645 |
<input value="1" name="<?php echo self::$opt_responsive; ?>" id="<?php echo self::$opt_responsive; ?>" <?php checked($all[self::$opt_responsive], 1); ?> type="checkbox" class="checkbox">
|
5646 |
<label for="<?php echo self::$opt_responsive; ?>"><?php _e('<b class="chktitle">Responsive Video Sizing:</b> Make your videos responsive so that they dynamically fit in all screen sizes (smart phone, PC and tablet). NOTE: While this is checked, any custom hardcoded widths and heights you may have set will dynamically change too. <b>Do not check this if your theme already handles responsive video sizing.</b>') ?></label>
|
5647 |
+
<p id="boxresponsive_all" class="ytindent">
|
5648 |
<input type="radio" name="<?php echo self::$opt_responsive_all; ?>" id="<?php echo self::$opt_responsive_all; ?>1" value="1" <?php checked($all[self::$opt_responsive_all], 1); ?> >
|
5649 |
<label for="<?php echo self::$opt_responsive_all; ?>1">Responsive for all YouTube videos</label>
|
5650 |
<input type="radio" name="<?php echo self::$opt_responsive_all; ?>" id="<?php echo self::$opt_responsive_all; ?>0" value="0" <?php checked($all[self::$opt_responsive_all], 0); ?> >
|
5673 |
Enter how many thumbnails can fit per row. You can later use the embedding wizard to customize this for specific galleries.
|
5674 |
</div>
|
5675 |
<div class="ytprefs-ob-setting yob-live">
|
5676 |
+
<p>
|
5677 |
+
<b class="chktitle">Use "Not Live" Fallback Content For Live Streams:</b> (<a href="<?php echo self::$epbase ?>/how-to-embed-a-youtube-livestream-in-wordpress.aspx" target="_blank">More info here</a>)
|
5678 |
+
This feature lets you display alternate content if your live stream or premiere is not currently active. There are 2 flavors of this feature: one that affects <strong>direct link</strong> live streams, and
|
5679 |
+
one that affects <strong>channel</strong> live streams. Each are explained below. They work a little differently, but both use the same "Not Live" Fallback Content that you can edit below.
|
5680 |
+
</p>
|
5681 |
+
<div class="ytindent chx">
|
5682 |
+
<input value="1" name="<?php echo self::$opt_not_live_on; ?>" id="<?php echo self::$opt_not_live_on; ?>" <?php checked($all[self::$opt_not_live_on], 1); ?> type="checkbox" class="checkbox">
|
5683 |
+
<label for="<?php echo self::$opt_not_live_on; ?>"><span class="chktitle">Turn on for <b>direct link</b> live streams:</span>
|
5684 |
+
When your direct-link embed is not streaming live or premiering, the YouTube live player usually displays a countdown after the user clicks the play button.
|
5685 |
+
Instead of showing that player, you can display some "coming soon" content in that space for your visitors to see until your video begins to live stream or premiere.
|
5686 |
+
The plugin will automatically switch to your video's live stream or premiere once it's active. In the <em>"Not Live" Fallback Content</em> box below, enter what you would like to appear until then.
|
5687 |
+
You can even insert shortcodes from our plugin into the box below (shortcodes from other plugins may or may not work correctly).
|
5688 |
+
If you just want to show the standard countdown player that YouTube provides, don't use this feature.
|
5689 |
+
<strong>NOTE: Turning this on for direct-link live streams uses a significant amount of your YouTube API quota. We suggest unchecking it if your site has high traffic. If you chose to use this feature, do not put another live stream embed below.</strong>
|
5690 |
+
</label>
|
5691 |
+
<br>
|
5692 |
+
<br>
|
5693 |
+
<input value="1" name="<?php echo self::$opt_not_live_on_channel; ?>" id="<?php echo self::$opt_not_live_on_channel; ?>" <?php checked($all[self::$opt_not_live_on_channel], 1); ?> type="checkbox" class="checkbox">
|
5694 |
+
<label for="<?php echo self::$opt_not_live_on_channel; ?>"><span class="chktitle">Turn on for <b>channel</b> live streams:</span> <sup class="orange">beta</sup>
|
5695 |
+
If your live stream embed is channel-based, YouTube might show an error message if there is no upcoming or currently streaming video from your channel.
|
5696 |
+
Instead of showing an error, you can display some "coming soon" content in that space for your visitors to see until you've scheduled a live stream or premiere
|
5697 |
+
(Once you've scheduled something, YouTube will display the usual countdown until the stream happens).
|
5698 |
+
In the <em>"Not Live" Fallback Content</em> box below, enter what you would like to appear when nothing is playing or scheduled to play yet on your channel.
|
5699 |
+
You can even insert shortcodes from our plugin into the box below (shortcodes from other plugins may or may not work correctly).
|
5700 |
+
<strong>NOTE: This feature for channel live streams is experimental, but it will preserve your API quota. We recommend trying this instead of the direct-link option, to see if it works for your site. We hope to improve this feature over time.</strong>
|
5701 |
+
</label>
|
5702 |
+
<div class="p not-live-content">
|
5703 |
+
<p>
|
5704 |
+
<b>"Not Live" Fallback Content:</b>
|
5705 |
+
</p>
|
5706 |
+
<?php
|
5707 |
+
wp_editor(wp_kses_post($all[self::$opt_not_live_content]), self::$opt_not_live_content, array('textarea_rows' => 7));
|
5708 |
+
?>
|
5709 |
+
</div>
|
5710 |
+
</div>
|
5711 |
</div>
|
5712 |
|
5713 |
<div class="ytprefs-ob-setting yob-privacy">
|
5938 |
'ytapi_load' => self::$alloptions[self::$opt_ytapi_load],
|
5939 |
'pause_others' => self::$alloptions[self::$opt_pause_others] == '1' ? true : false,
|
5940 |
'stopMobileBuffer' => self::$alloptions[self::$opt_stop_mobile_buffer] == '1' ? true : false,
|
5941 |
+
'not_live_on_channel' => self::$alloptions[self::$opt_not_live_on_channel] == '1' ? true : false,
|
5942 |
'vi_active' => false, // self::$alloptions[self::$opt_vi_active] == '1' ? true : false,
|
5943 |
'vi_js_posttypes' => array() // self::$alloptions[self::$opt_vi_js_posttypes]
|
5944 |
);
|
8581 |
);
|
8582 |
|
8583 |
//wp_enqueue_style('__ytprefs_admin__vi_css', plugins_url('styles/ytvi-admin' . self::$min . '.css', __FILE__), array(), self::$version);
|
|
|
8584 |
// Tiny MCE
|
8585 |
wp_enqueue_style('__ytprefs_admin__tinymce_css', plugins_url('styles/epyt_mce_wizard_button' . self::$min . '.css', __FILE__), array(), self::$version);
|
8586 |
}
|