YouTube - Version 14.1

Version Description

Download this release

Release Info

Developer embedplus
Plugin Icon 128x128 YouTube
Version 14.1
Comparing to
See all releases

Code changes from version 14.0.1.4 to 14.1

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: 5.9
7
- Stable tag: 14.0.1.4
8
- License: GPLv3 or later
9
-
10
- YouTube Embed Plugin. Embed a responsive video, YouTube channel gallery, playlist gallery, YouTube live stream. With defer JavaScript options
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, uuse 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
- == Screenshots ==
142
-
143
- 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.
144
- 2. Embed Plus for YouTube WordPress Plugin Screenshot 2: How to get to YouTube's admin settings
145
- 3. Embed Plus for YouTube WordPress Plugin Screenshot 3: Visual YouTube Wizard and Search Tool
146
- 4. Embed Plus for YouTube WordPress Plugin Screenshot 4: Wizard Insert Search Result Screenshot
147
- 5. Embed Plus for YouTube WordPress Plugin Screenshot 5: Wizard Search Results Screenshot
148
- 6. Embed Plus for YouTube WordPress Plugin Screenshot 6: Gallery layout for a playlist or channel
149
- 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.
150
- 8. Embed Plus for YouTube WordPress Plugin Screenshot 8: Localization/internationalization so you can set the player's interface language
151
- 9. Embed Plus for YouTube WordPress Plugin Screenshot 9: Optional YouTube channel subscription button above gallery thumbnails
152
-
153
- == Changelog ==
154
-
155
- = Embed Plus for YouTube WordPress Plugin 14.0.1.4 =
156
- * YouTube Wizard compatibility for WordPress 5.9+
157
-
158
- = Embed Plus for YouTube WordPress Plugin 14.0.1.3 =
159
- * Patch for 14.0.1.2, JS fix for compatibility with jQuery 3.0+
160
-
161
- = Embed Plus for YouTube WordPress Plugin 14.0.1.2 =
162
- * Fix facade playlist embed issue
163
- * Improve compatibility with AJAX themes
164
-
165
- = Embed Plus for YouTube WordPress Plugin 14.0.1.1 =
166
- * Patch for 14.0.1, higher resolution for facade images
167
-
168
- = Embed Plus for YouTube WordPress Plugin 14.0.1 =
169
- * Higher resolution for facade images
170
- * Fix CSS issue with GDPR embeds
171
- * YouTube shorts support
172
-
173
- = Embed Plus for YouTube WordPress Plugin 14.0 =
174
- * New facade mode for lighter and faster page loads (see Performance tab)
175
- * CSS fixes
176
-
177
- = Embed Plus for YouTube WordPress Plugin 13.4.3 =
178
- * 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)
179
- * Better compatibility with cookie compliance plugins that overtake the player with a placeholder
180
-
181
- = Embed Plus for YouTube WordPress Plugin 13.4.2 =
182
- * Compatible with latest jQuery updates
183
- * Compatible with WordPress 5.7+
184
-
185
- = Embed Plus for YouTube WordPress Plugin 13.4.1.2 =
186
- * Allows you to specify the default language (when available) that the player will use to display closed captions
187
-
188
- = Embed Plus for YouTube WordPress Plugin 13.4.1.1 =
189
- * Prevent deprecated notice for wp_make_content_images_responsive filter
190
-
191
- = Embed Plus for YouTube WordPress Plugin 13.4.1 =
192
- * Better compatibility with WordPress 5.5
193
-
194
- = Embed Plus for YouTube WordPress Plugin 13.4 =
195
- * Better compatibility with themes that use the Gutenberg block editor and responsive sizing
196
- * Fix notice on new installs
197
- * Add pagebuilder tips to Wizard tab of the documentation
198
-
199
- = Embed Plus for YouTube WordPress Plugin 13.3.1 =
200
- * Fix simultaneous playback control issue
201
- * Add support for premiere video embedding
202
-
203
- = Embed Plus for YouTube WordPress Plugin 13.2.3 =
204
- * Defer JavaScript for performance
205
- * Compatibility between loop and hide relative videos features
206
- * Simultaneous playback control
207
-
208
- = Embed Plus for YouTube WordPress Plugin 13.2.1 =
209
- * Provides more compatibility with other lazyload plugins and responsive themes
210
-
211
- = Embed Plus for YouTube WordPress Plugin 13.2.0.2 =
212
- * Fixes the "Hide related videos at the end of playback" feature (fixes issue with galleries)
213
-
214
- = Embed Plus for YouTube WordPress Plugin 13.2.0.1 =
215
- * Compatibility with legacy versions of PHP
216
- * Fix Responsive sizing issue with lazyloading plugins
217
-
218
- = Embed Plus for YouTube WordPress Plugin 13.2 =
219
- * Add ability to embed a live stream from a given channel
220
- * Reduction in live stream YouTube API quota usage
221
- * Compatibility with other plugins having tabbed sections (e.g. Yuzo)
222
- * Show YouTube API errors to admins only
223
-
224
- = Embed Plus for YouTube WordPress Plugin 13.1.2.5 =
225
- * Improve responsive sizing aspect ratio in widgets
226
- * Fix issue: some users receive 403 error when saving
227
-
228
- = Embed Plus for YouTube WordPress Plugin 13.1.2.4 =
229
- * Pagination and autonext allow the current video to play
230
- * Pagination on mobile fix
231
- * vi deprecation announcement
232
-
233
- = Embed Plus for YouTube WordPress Plugin 13.1.2.3 =
234
- * gallery thumbnail mobile tap/scroll fix
235
-
236
- = Embed Plus for YouTube WordPress Plugin 13.1.2.2 =
237
- * Wizard open/close fix
238
- * iOS gallery thumbnail click fix
239
- * class-oembed deprecation fix
240
-
241
- = Embed Plus for YouTube WordPress Plugin 13.1.2.1 =
242
- * Compatibility with legacy versions of PHP
243
-
244
- = Embed Plus for YouTube WordPress Plugin 13.1.2 =
245
- * More descriptive plugin name
246
- * Gallery column size and YouTube API message fixes
247
-
248
- = Embed Plus for YouTube WordPress Plugin 13.1.1 =
249
- * Fixes gallery autonext issue
250
- * Fixes deprecated controls parameter
251
- * Fixes "not live" content issue
252
- * Remove deprecated showinfo parameter
253
-
254
- = Embed Plus for YouTube WordPress Plugin 13.1 =
255
- * Brings back the ability to hide related/suggested videos at end of playback
256
- * Allows monetized sites to select multiple IAB categories
257
- * Option to run shortcode in admin (compatibility tab)
258
- * Lowers quota usage for live videos
259
- * Fixes "missing dependencies" block editor CSS reference
260
- * Fixes default dimensions issue
261
-
262
- = Embed Plus for YouTube WordPress Plugin 13.0.1 =
263
- * Clearer instructions
264
- * Feature deprecation (rel, showinfo)
265
-
266
- = Embed Plus for YouTube WordPress Plugin 13.0 =
267
- * Compatible with the new Gutenberg block editor, and stays backwards-compatible with the classic editor
268
- * Marked deprecated features
269
- * Improved wizard instructions
270
-
271
- = Embed Plus for YouTube WordPress Plugin 12.2 =
272
- * Improved ads.txt verification management
273
- * Fixed gallery box-sizing bug
274
- * Remove some deprecated YouTube parameters
275
-
276
- = Embed Plus for YouTube WordPress Plugin 12.1 =
277
- * Improved autoplay compatibility
278
- * Improved sign-up process for the new monetization feature
279
-
280
- = Embed Plus for YouTube WordPress Plugin 12.0.1 =
281
- * Force HTTPS for the YouTube API if the API is enabled
282
- * Makes the wizard's lightbox expand/contract responsively for different size screens
283
-
284
- = Embed Plus for YouTube WordPress Plugin 12.0 =
285
- * Improves the admin interface, and includes a new optional feature for users that want to monetize their sites through contextual video from vi.ai.
286
-
287
- = Embed Plus for YouTube WordPress Plugin 11.9.2 =
288
- * Makes the GDPR consent message display more compatible with other plugins (fixes content filter)
289
-
290
- = Embed Plus for YouTube WordPress Plugin 11.9.1 =
291
- Improved GDPR compliance, with new Privacy section containing:
292
- * GDPR consent mode
293
- * YouTube no cookie
294
- * YouTube API loading restrictions
295
-
296
- = Embed Plus for YouTube WordPress Plugin 11.8.7 =
297
- * Helps with GDPR compliance by allowing you to choose when YouTube.com's API is loaded
298
-
299
- = Embed Plus for YouTube WordPress Plugin 11.8.6.1 =
300
- * Rollback jQuery Updater plugin compatability
301
-
302
- = Embed Plus for YouTube WordPress Plugin 11.8.6 =
303
- * Updated YouTube API key video tutorial
304
- * Improved channel wizard process
305
- * Better compatibility with jQuery Updater plugin
306
-
307
- = Embed Plus for YouTube WordPress Plugin 11.8.5 =
308
- * Adds the YouTube wizard button to the new built-in WordPress text widget
309
- * Fixes a Mac/iOS gallery scrolling issue
310
-
311
- = Embed Plus for YouTube WordPress Plugin 11.8.4 =
312
- * Fixes gallery AJAX issue
313
- * Adds ability to hide fullscreen button
314
- * Adds ability to hide private videos from galleries
315
- * Changes localized script dependency to jquery
316
-
317
- = Embed Plus for YouTube WordPress Plugin 11.8.3 =
318
- * Improved compatability with PHP 7
319
- * Improved compatability with Divi theme
320
- * Improved AJAX compatibility
321
- * Improved accessibility
322
- * Fix gallery scrolling
323
- * Fix "not live" content output
324
- * Modernize and improve wizard interface (Pro)
325
- * Ability to hide thumbnail images from galleries (Pro)
326
-
327
- = Embed Plus for YouTube WordPress Plugin 11.8.2 =
328
- * Fix auto-next gallery issue
329
- * Make settings form more secure
330
-
331
- = Embed Plus for YouTube WordPress Plugin 11.8.1 =
332
- * Fix playlist gallery issue
333
-
334
- = Embed Plus for YouTube WordPress Plugin 11.8 =
335
- * Improved AJAX theme compatability
336
- * Ability to choose which roles can use the editor wizard
337
- * Volume + autoplay fix
338
-
339
- = Embed Plus for YouTube WordPress Plugin 11.7.1 =
340
- * Remove gallery thumbnail translucency
341
- * Various bug fixes for galleries and the wizard
342
-
343
- = Embed Plus for YouTube WordPress Plugin 11.7 =
344
- * Separate Free and Pro codebases
345
- * Remove deprecated features
346
- * Clean up code
347
-
348
- = Embed Plus for YouTube WordPress Plugin 11.6 =
349
- * 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
350
- * New feature: live streaming from a channel
351
- * Optimized player and gallery loading that may improve GTMetrix reports
352
- * Improved compatibility with pagebuilders
353
- * Improved compatibility with later versions of jQuery
354
- * Removed frameborder for W3C validation
355
- * Gallery pagination enhancement
356
- * PHP 7 compatibility testing
357
-
358
- = Embed Plus for YouTube WordPress Plugin 11.5 =
359
- * thumbnail stacking for mobile galleries
360
- * better support for ajax themes
361
- * alt text to images
362
-
363
- = Embed Plus for YouTube WordPress Plugin 11.4 =
364
- * (Free) Improved subscribe button CSS and a new migration option.
365
- * (Pro) Improved accessibility for popup lightbox galleries.
366
-
367
- = Embed Plus for YouTube WordPress Plugin 11.3.1 =
368
- * (Free) improved debug mode messages
369
- * (Pro) autonext for popup lightbox galleries and hide clear cache button option
370
-
371
- = Embed Plus for YouTube WordPress Plugin 11.3 =
372
- * Improved responsive sizing for AJAX-based themes
373
- * Popup lightbox display option for Pro galleries
374
-
375
- = Embed Plus for YouTube WordPress Plugin 11.2 =
376
- * Adds improved wizard and gallery options for Free and Pro users.
377
- * Improved handling of PHP notices.
378
- * Clear cache shortcut added for Pro users.
379
-
380
- = Embed Plus for YouTube WordPress Plugin 11.1 =
381
- * Automatic continuous play for playlist and channel gallery embeds.
382
- * Ability to add a YouTube channel subscription link to all galleries.
383
- * Ability to hide Previous/Next buttons and page numbers.
384
- * Featured images can now be pulled from playlists (using the thumbnail of the first video).
385
-
386
- = Embed Plus for YouTube WordPress Plugin 11.0.1 =
387
- Improves HTTPS support for structured data tags, and HTTPS support in Firefox.
388
-
389
- = Embed Plus for YouTube WordPress Plugin 11.0 =
390
- Improves playlist and gallery embedding functionality.
391
-
392
- = Embed Plus for YouTube WordPress Plugin 10.9 =
393
- This version offers a host of updates: compatibility fixes, higher quality featured images, selective responsive sizing, wizard enhancements, and circular shaped thumbnails.
394
-
395
- = Embed Plus for YouTube WordPress Plugin 10.8 =
396
- This update improves compatibility and adds features to Free and Pro galleries.
397
-
398
- = Embed Plus for YouTube WordPress Plugin 10.7 =
399
- Adds legacy option.
400
-
401
- = Embed Plus for YouTube WordPress Plugin 10.6 =
402
- Enhanced debugging support for galleries.
403
-
404
- = Embed Plus for YouTube WordPress Plugin 10.5 =
405
- Enhanced gallery settings for scrolling, video titles, and thumbnail styling.
406
-
407
- = Embed Plus for YouTube WordPress Plugin 10.4 =
408
- Addresses limitations some users were getting when pasting a YouTube channel and/or playlist gallery.
409
-
410
- = Embed Plus for YouTube WordPress Plugin 10.3 =
411
- 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)
412
-
413
- = Embed Plus for YouTube WordPress Plugin 10.2 =
414
- 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.
415
-
416
- = Embed Plus for YouTube WordPress Plugin 10.1 =
417
- 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.
418
-
419
- = Embed Plus for YouTube WordPress Plugin 10.0 =
420
- This update includes improved tips (Free and Pro) and adds caching to the Pro version for faster page loading.
421
-
422
- = Embed Plus for YouTube WordPress Plugin 9.8 =
423
- Upgraded code to use YouTube API v3.
424
-
425
- = Embed Plus for YouTube WordPress Plugin 9.7 =
426
- Adds improved accessibility for screen readers and video thumbnail as featured image support.
427
-
428
- = Embed Plus for YouTube WordPress Plugin 9.5 =
429
- 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).
430
-
431
- = Embed Plus for YouTube WordPress Plugin 9.4 =
432
- 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)
433
-
434
- = Embed Plus for YouTube WordPress Plugin 9.3 =
435
- 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)
436
-
437
- = Embed Plus for YouTube WordPress Plugin 9.2 =
438
- HTTPS/SSL detection is now fully automatic. The manual checkbox is no longer needed.
439
-
440
- = Embed Plus for YouTube WordPress Plugin 9.1 =
441
- 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.
442
-
443
- = Embed Plus for YouTube WordPress Plugin 9.0 =
444
- Adds automatic localization/internationalization so you can set the player's interface language from English to another.
445
-
446
- = Embed Plus for YouTube WordPress Plugin 8.9 =
447
- Allows volume level initialization.
448
-
449
- = Embed Plus for YouTube WordPress Plugin 8.8 =
450
- * Better embedplus plugin conflict notifications.
451
- * 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).
452
- * Supports latest version of WordPress (3.9.2).
453
-
454
- = Embed Plus for YouTube WordPress Plugin 8.7 =
455
- (PRO) Extends the plugin's existing tagging capabilities by also adding Open Graph markup to enhance Facebook sharing/discovery of your pages.
456
-
457
- = Embed Plus for YouTube WordPress Plugin 8.6 =
458
- Expanded HTTPS/SSL support.
459
-
460
- = Embed Plus for YouTube WordPress Plugin 8.5 =
461
- This update features a new iOS related option for both Free and PRO users. PRO users additionally have the new mobile compatibility checker.
462
-
463
- = Embed Plus for YouTube WordPress Plugin 8.4 =
464
- 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.
465
-
466
- = Embed Plus for YouTube WordPress Plugin 8.3 =
467
- Now compatible with WordPress 3.9.
468
-
469
- = Embed Plus for YouTube WordPress Plugin 8.2 =
470
- An at a glance regex impromevent (all users). Dashboard now warns you of embeds that are blocked from your visitors in other countries (PRO).
471
-
472
- = Embed Plus for YouTube WordPress Plugin 8.1 =
473
- Fixes rare YouTube ID issue.
474
-
475
- = Embed Plus for YouTube WordPress Plugin 8.0 =
476
- Fixes rare ajax issue.
477
-
478
- = Embed Plus for YouTube WordPress Plugin 7.9 =
479
- YouTube searching and inserting now works in Text mode of the editor too.
480
-
481
- = Embed Plus for YouTube WordPress Plugin 7.8 =
482
- "At a Glance" direct access to YouTube posts/pages.
483
-
484
- = Embed Plus for YouTube WordPress Plugin 7.7 =
485
- Fixes black bar issue when no height/width is specified.
486
-
487
- = Embed Plus for YouTube WordPress Plugin 7.6 =
488
- Added notice about Google's HD problem.
489
-
490
- = Embed Plus for YouTube WordPress Plugin 7.5 =
491
- Ability to embed an entire channel as a playlist embed.
492
-
493
- = Embed Plus for YouTube WordPress Plugin 7.3 =
494
- Change the color of the progress bar from red to white.
495
-
496
- = Embed Plus for YouTube WordPress Plugin 7.2 =
497
- Added music video extras to inspire your posts (PRO).
498
-
499
- = Embed Plus for YouTube WordPress Plugin 7.1 =
500
- Added autohide controls feature
501
-
502
- = Embed Plus for YouTube WordPress Plugin 7.0 =
503
- Shortcode support for embedding multiple videos on one line
504
-
505
- = Embed Plus for YouTube WordPress Plugin 6.4 =
506
- Fixes for some users of WordPress 3.8
507
-
508
- = Embed Plus for YouTube WordPress Plugin 6.3 =
509
- Removed possible e_notices.
510
-
511
- = Embed Plus for YouTube WordPress Plugin 6.2 =
512
- Given the increasing focus on privacy, the no-cookies options was added as a free option to all users. Priority support enhancements also made.
513
-
514
- = Embed Plus for YouTube WordPress Plugin 6.1 =
515
- Easier access to general settings and dashboard.
516
-
517
- = Embed Plus for YouTube WordPress Plugin 6.0 =
518
- This version opens up the ability to view Internet video discussions to all wizard users.
519
- **Also, due to numerous users being unable to find the wizard button, we moved it up next to the "Add Media" button.**
520
- Finally, we added Video SEO tags as a PRO option.
521
-
522
- = Embed Plus for YouTube WordPress Plugin 5.1 =
523
- Added ability to set default dimensions.
524
- Enhanced compatibility with SSL sites.
525
-
526
- = Embed Plus for YouTube WordPress Plugin 5.0 =
527
- Built-in YouTube video search, viewing, and insertion right from your editor tab (for all users).
528
- The ability to review the latest web discussions about a video you want to embed before embedding it (PRO users).
529
- Other minor optimizations.
530
-
531
- = Embed Plus for YouTube WordPress Plugin 4.8 =
532
- Works when pasting embed link in sidebar text widgets
533
-
534
- = Embed Plus for YouTube WordPress Plugin 4.7 =
535
- Improved separation of PRO and Free features in the UI
536
-
537
- = Embed Plus for YouTube WordPress Plugin 4.6 =
538
- Added optional responsive video layout to fit all screen sizes. (smart phone, PC and tablet)
539
-
540
- = Embed Plus for YouTube WordPress Plugin 4.5 =
541
- Added support for playlists.
542
- added support for wmode.
543
-
544
- = Embed Plus for YouTube WordPress Plugin 4.1 =
545
- Fixed spacing issue. Also added ability to fall back to old spacing format.
546
-
547
- = Embed Plus for YouTube WordPress Plugin 4.0 =
548
- New features for all users: lazy loading for the flash player by default and the ability to hide player controls for a cleaner look.
549
-
550
- = Embed Plus for YouTube WordPress Plugin 3.7 =
551
- Enhanced deleted video checker for PRO users
552
-
553
- = Embed Plus for YouTube WordPress Plugin 3.5 =
554
- Added ability to try to force HTML5 player to speed up page loading
555
-
556
- = Embed Plus for YouTube WordPress Plugin 3.3 =
557
- HTTPS: Added secure YouTube embedding
558
-
559
- = Embed Plus for YouTube WordPress Plugin 3.2 =
560
- Ensures video-specific height overrides defaults properly
561
-
562
- = Embed Plus for YouTube WordPress Plugin 3.1 =
563
- Fixed obscure height problem
564
-
565
- = Embed Plus for YouTube WordPress Plugin 3.0 =
566
- Added Visual YouTube Wizard for PRO users
567
- Added autologin to analytics for PRO users
568
- Added priority support form for PRO users
569
-
570
- = Embed Plus for YouTube WordPress Plugin 2.6 =
571
- Compatible with WP 3.6
572
-
573
- = Embed Plus for YouTube WordPress Plugin 2.4 =
574
- Added auto HD support
575
- Support for shorthand (i.e. `"https://www.youtu.be"`)
576
- Fixed editor issue
577
-
578
- = Embed Plus for YouTube WordPress Plugin 2.3 =
579
- Start/end time shortcut bug fix
580
-
581
- = Embed Plus for YouTube WordPress Plugin 2.2 =
582
- Minor changes
583
-
584
- = Embed Plus for YouTube WordPress Plugin 2.1 =
585
- By request from several users, we've added easier access to the video analytics dashboard
586
-
587
- = Embed Plus for YouTube WordPress Plugin 2.0 =
588
-
589
- 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:
590
-
591
- * How much are your visitors actually watching the videos you post?
592
- * How does the view activity on your site compare to other sites like it?
593
- * What and when are your best and worst performers?
594
- * How much do the producers of the YouTube videos you embed rely on **your site** for views?
595
-
596
- We think these are all interesting questions; however, note that there's no need to upgrade if you don't.
597
-
598
- = Embed Plus for YouTube WordPress Plugin 1.1 =
599
- Fixed minor bug.
600
-
601
- = Embed Plus for YouTube WordPress Plugin 1.0 =
602
- First release uploaded to the plugin repository.
603
-
604
- == Other Notes ==
605
-
606
- 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).
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 apiVideoId = event.target.getIframe().getAttribute("id");
 
91
  window._EPYT_.apiVideos[apiVideoId] = event.target;
 
 
 
 
 
 
 
 
92
  }
93
- catch (idErr)
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
- border-left: 5px solid #cccccc;
 
 
 
 
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;padding-left:10px;margin-top:10px;pointer-events:all;border-left:5px solid #ccc}.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}
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, with YouTube Gallery, Channel, Playlist, Live Stream, Facade
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.0.1.4
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, with YouTube Gallery, Channel, Playlist, Live Stream, Facade
14
- Copyright (C) 2021 EmbedPlus.com
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.0.1.4';
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">Note</strong>: For now, the "Not Live" custom content feature is not available for channel-based embeds. YouTube's standard countdown will appear in the video until the scheduled stream goes live.
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 compatibility to the YouTube Wizard in WordPress 5.9 for both free and <a target=_blank href=" . self::$epbase . '/dashboard/pro-easy-video-analytics.aspx?ref=frompointer' . ">Pro versions</a>.";
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
- #not_live_on ~ #wp-not_live_content-wrap {
3505
  opacity: .3;
3506
  }
3507
 
3508
- #not_live_on:checked ~ #wp-not_live_content-wrap {
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
- <option <?php echo $iso_code == $selected_val ? 'selected' : '' ?> value="<?php echo $iso_code ?>"><?php echo $iso_label ?></option>
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
- <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">
3940
- <label for="<?php echo self::$opt_not_live_on; ?>">
3941
- <b class="chktitle">Default "Not Live" Content:</b> (For direct-link video streams and premieres, <em>not</em> channel streams. <a href="<?php echo self::$epbase ?>/how-to-embed-a-youtube-livestream-in-wordpress.aspx" target="_blank">More info here</a>)
3942
- When your video is not streaming live or premiering, the YouTube live player will simply display a countdown after the user clicks the play button (Note: turning on auto-play will display the countdown without any user action)..
3943
- 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.
3944
- The plugin will automatically switch to your video's live stream or premiere once it's active.
3945
- Below, enter what you would like to appear until then.
3946
- If you just want to show the standard countdown player that YouTube provides, uncheck this option.
3947
- <strong class="check-note"><span class="orange">NOTE:</span> This feature 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>
3948
- </label>
3949
- <br>
3950
- <br>
3951
- <?php
3952
- wp_editor(wp_kses_post($all[self::$opt_not_live_content]), self::$opt_not_live_content, array('textarea_rows' => 7));
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
- Note: Checking this option may break some features such as the ones listed below:
4000
- <ul class="list-ul">
4001
- <li>Galleries</li>
4002
- <li>Hide related videos at the end of playback</li>
4003
- <li>Volume initialization</li>
4004
- <li>Simultaneous playback control</li>
4005
- <li>Playing video on mobile devices</li>
4006
- </ul>
4007
- </div>
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. However, if you upgrade to Pro, you can use the lazy loading feature <a href="#jumpupgrade">described here &raquo;</a> to further improve your page speeds.', 'youtube-embed-plus'); ?></p>
4535
- <!-- <div style="width: 50%">
4536
- <div class="epyt-fitvid">
4537
- <iframe allow="encrypted-media" allowfullscreen="" src="https://www.youtube-nocookie.com/embed/?autoplay=0&amp;cc_load_policy=0&amp;iv_load_policy=1&amp;loop=0&amp;modestbranding=0&amp;fs=1&amp;playsinline=0&amp;controls=1&amp;color=red&amp;rel=1&amp;autohide=2&amp;theme=dark&amp;"></iframe>
4538
- </div>
4539
- </div>-->
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> &nbsp;&nbsp;
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
- <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">
5641
- <label for="<?php echo self::$opt_not_live_on; ?>">
5642
- <b class="chktitle">Default "Not Live" Content:</b> (For direct-link video streams and premieres, <em>not</em> channel streams. <a href="<?php echo self::$epbase ?>/how-to-embed-a-youtube-livestream-in-wordpress.aspx" target="_blank">More info here</a>)
5643
- When your video is not streaming live or premiering, the YouTube live player will simply display a countdown after the user clicks the play button (Note: turning on auto-play will display the countdown without any user action)..
5644
- 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.
5645
- The plugin will automatically switch to your video's live stream or premiere once it's active.
5646
- Below, enter what you would like to appear until then.
5647
- If you just want to show the standard countdown player that YouTube provides, uncheck this option.
5648
- <strong class="check-note"><span class="orange">NOTE:</span> This feature 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>
5649
- </label>
5650
- <br>
5651
- <br>
5652
- <?php
5653
- wp_editor(wp_kses_post($all[self::$opt_not_live_content]), self::$opt_not_live_content, array('textarea_rows' => 7));
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 &raquo;</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&amp;cc_load_policy=0&amp;iv_load_policy=1&amp;loop=0&amp;modestbranding=0&amp;fs=1&amp;playsinline=0&amp;controls=1&amp;color=red&amp;rel=1&amp;autohide=2&amp;theme=dark&amp;"></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> &nbsp;&nbsp;
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
  }