{"id":3752,"date":"2025-02-15T17:21:03","date_gmt":"2025-02-15T17:21:03","guid":{"rendered":"https:\/\/s-o-s.net\/protected-video\/"},"modified":"2025-02-15T17:21:03","modified_gmt":"2025-02-15T17:21:03","slug":"protected-video","status":"publish","type":"post","link":"https:\/\/s-o-s.net\/en_gb\/protected-video\/","title":{"rendered":"Protected Video"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<article id=\"post-142178\" class=\"alignwide post-142178 plugin type-plugin status-publish hentry plugin_section-block plugin_tags-player plugin_tags-plyr plugin_tags-video plugin_tags-vimeo plugin_tags-youtube plugin_category-media plugin_category-social-and-sharing plugin_contributors-alecrust plugin_business_model-community plugin_committers-alecrust\">\n<div class=\"plugin-banner\" id=\"plugin-banner-protected-video\"><\/div>\n<header class=\"plugin-header\">\n<div class=\"entry-heading-container\">\n<div>\n<div class=\"entry-thumbnail\">\n\t\t\t\t\t<img decoding=\"async\" class=\"plugin-icon\" srcset=\"https:\/\/ps.w.org\/protected-video\/assets\/icon-128x128.png?rev=2930887, https:\/\/ps.w.org\/protected-video\/assets\/icon-256x256.png?rev=2930887 2x\" src=\"https:\/\/ps.w.org\/protected-video\/assets\/icon-256x256.png?rev=2930887\" alt=\"\">\t\t\t\t<\/div>\n<div>\n<h1 class=\"plugin-title\">Protected Video<\/h1>\n<p>\t\t\t\t\t<span class=\"byline\">By <span class=\"author vcard\"><a target=\"_blank\" class=\"url fn n\" href=\"https:\/\/profiles.wordpress.org\/alecrust\/\" rel=\"noopener\">Alec Rust<\/a><\/span><\/span>\n\t\t\t\t<\/div>\n<\/p><\/div>\n<div class=\"plugin-actions\">\n<div class=\"wp-block-button is-small plugin-download download-button\"><a target=\"_blank\" class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/downloads.wordpress.org\/plugin\/protected-video.1.11.6.zip\" rel=\"noopener\">Download<\/a><\/div>\n<div class=\"wp-block-button is-small is-style-outline plugin-preview download-button is-style-outline--9\"><a target=\"_blank\" class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/wordpress.org\/plugins\/protected-video\/?preview=1\" rel=\"noopener\">Live Preview<\/a><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/header>\n<p><!-- .entry-header --><\/p>\n<p>\t<span id=\"description\"><\/span><br \/>\n\t<span id=\"reviews\"><\/span><br \/>\n\t<span id=\"installation\"><\/span><br \/>\n\t<span id=\"developers\"><\/span><br \/>\n\t<span id=\"advanced\" class=\"\"><\/span><br \/>\n\t<span id=\"section-links\"><\/p>\n<ul class=\"tabs clear\">\n<li id=\"tablink-description\"><a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/protected-video\/#description\" rel=\"noopener\">Details<\/a><\/li>\n<li id=\"tablink-reviews\"><a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/protected-video\/#reviews\" rel=\"noopener\">Reviews<\/a><\/li>\n<li id=\"tablink-installation\">\n\t\t\t\t<a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/protected-video\/#installation\" rel=\"noopener\">Installation<\/a>\n\t\t\t<\/li>\n<li id=\"tablink-developers\"><a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/protected-video\/#developers\" rel=\"noopener\">Development<\/a><\/li>\n<\/ul>\n<div id=\"link-support\">\n\t\t\t<a target=\"_blank\" href=\"https:\/\/wordpress.org\/support\/plugin\/protected-video\/\" rel=\"noopener\">Support<\/a>\n\t\t<\/div>\n<p>\t<\/span><br \/>\n\t<script type=\"text\/javascript\">if ( '#changelog' == window.location.hash ) { window.setTimeout( function() { window.location.hash=\"#developers\"; }, 10 ); }<\/script><\/p>\n<div class=\"entry-content\">\n<div id=\"tab-description\" class=\"plugin-description section\">\n<h2 id=\"description-header\">Description<\/h2>\n<p>Gutenberg block and Shortcode for embedding YouTube\/Vimeo videos, in a way that prevents users easily accessing the underlying video.<\/p>\n<p><strong>This is useful for example when embedding an \u201cunlisted\u201d video as premium course content behind a paywall on your site.<\/strong><\/p>\n<p>Features include:<\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/plyr.io\/\" rel=\"nofollow ugc noopener\">Plyr<\/a> player used to overlay default player with custom controls<\/li>\n<li>Player modifications to always prevent clicking the default player<\/li>\n<li>Encodes video ID in HTML to prevent finding it via \u201cView Source\u201d<\/li>\n<li>Settings page to e.g. configure the player theme to match your site<\/li>\n<\/ul>\n<p><a target=\"_blank\" href=\"https:\/\/protected-video.alecrust.com\/\" rel=\"nofollow ugc noopener\">View Player Demo<\/a><\/p>\n<p><strong>Note:<\/strong> This only provides a basic level of protection. Technical users may still be able to access the underlying video.<\/p>\n<p>This plugin is open source and contributions are welcome <a target=\"_blank\" href=\"https:\/\/github.com\/AlecRust\/protected-video\" rel=\"nofollow ugc noopener\">on GitHub<\/a>.<\/p>\n<\/div>\n<div id=\"screenshots\" class=\"plugin-screenshots section\">\n<h2 id=\"screenshots-header\">Screenshots<\/h2>\n<ul class=\"plugin-screenshots\">\n<li>\n<figure><a target=\"_blank\" href=\"https:\/\/ps.w.org\/protected-video\/assets\/screenshot-1.png?rev=2942547\" rel=\"nofollow noopener\"><img decoding=\"async\" class=\"screenshot\" src=\"https:\/\/ps.w.org\/protected-video\/assets\/screenshot-1.png?rev=2942547\" alt=\"\"><\/a><figcaption>Searching for Protected Video in the Block Editor.<\/figcaption><\/figure>\n<\/li>\n<li>\n<figure><a target=\"_blank\" href=\"https:\/\/ps.w.org\/protected-video\/assets\/screenshot-2.png?rev=2942547\" rel=\"nofollow noopener\"><img decoding=\"async\" class=\"screenshot\" src=\"https:\/\/ps.w.org\/protected-video\/assets\/screenshot-2.png?rev=2942547\" alt=\"\"><\/a><figcaption>Protected Video block inserted in the Block Editor.<\/figcaption><\/figure>\n<\/li>\n<li>\n<figure><a target=\"_blank\" href=\"https:\/\/ps.w.org\/protected-video\/assets\/screenshot-3.png?rev=2942547\" rel=\"nofollow noopener\"><img decoding=\"async\" class=\"screenshot\" src=\"https:\/\/ps.w.org\/protected-video\/assets\/screenshot-3.png?rev=2942547\" alt=\"\"><\/a><figcaption>Protected Video displayed on public facing site.<\/figcaption><\/figure>\n<\/li>\n<li>\n<figure><a target=\"_blank\" href=\"https:\/\/ps.w.org\/protected-video\/assets\/screenshot-4.png?rev=3021351\" rel=\"nofollow noopener\"><img decoding=\"async\" class=\"screenshot\" src=\"https:\/\/ps.w.org\/protected-video\/assets\/screenshot-4.png?rev=3021351\" alt=\"\"><\/a><figcaption>Configuration of the global plugin settings.<\/figcaption><\/figure>\n<\/li>\n<li>\n<figure><a target=\"_blank\" href=\"https:\/\/ps.w.org\/protected-video\/assets\/screenshot-5.png?rev=2942547\" rel=\"nofollow noopener\"><img decoding=\"async\" class=\"screenshot\" src=\"https:\/\/ps.w.org\/protected-video\/assets\/screenshot-5.png?rev=2942547\" alt=\"\"><\/a><figcaption>Optional Shortcode embed method also supported.<\/figcaption><\/figure>\n<\/li>\n<\/ul>\n<\/div>\n<div id=\"blocks\" class=\"plugin-blocks section\">\n<h2 id=\"blocks-header\">Blocks<\/h2>\n<p>This plugin provides 1 block.<\/p>\n<ul class=\"plugin-blocks-list\">\n<li class=\"plugin-blocks-list-item has-description\">\n\t\t\t\t\t\t\t\t\t<span class=\"block-icon dashicons dashicons-block-default\"><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"block-title\">Protected Video<\/span><br \/>\n\t\t\t\t\t\t\t\t\t<span class=\"block-description\">Embed YouTube\/Vimeo player that prevents easy sharing of the video.<br \/>\n\t\t\t\t\t\t\t<\/span><\/li>\n<\/ul>\n<\/div>\n<div id=\"tab-installation\" class=\"plugin-installation section\">\n<h2 id=\"installation-header\">Installation<\/h2>\n<ol>\n<li>Install and activate the plugin<\/li>\n<li>Optionally configure player theme at <strong>Settings &gt; Protected Video<\/strong><\/li>\n<li>Search for and use \u201cProtected Video\u201d block in the Block Editor<\/li>\n<li>Alternatively use the Shortcode e.g. <code>[protected_video url=\"https:\/\/youtu.be\/aqz-KE-bpKQ\" service=\"youtube\"]<\/code><\/li>\n<\/ol>\n<\/div>\n<div id=\"faq\" class=\"plugin-faq section\">\n<h2 id=\"faq-header\">FAQ<\/h2>\n<dl>\n<dt id=\"what%20does%20this%20plugin%20do%3F\">\n<h3>What does this plugin do?<\/h3>\n<\/dt>\n<dd>\n<p>Embeds YouTube\/Vimeo videos on your pages and takes steps to prevent users obtaining the e.g. YouTube URL of the video by clicking on the player or viewing the page source.<\/p>\n<p>Watch <a target=\"_blank\" href=\"https:\/\/www.youtube.com\/watch?v=OVL0z9pO60I\" rel=\"nofollow ugc noopener\">this YouTube video<\/a> for an introduction to the plugin and its potential use cases.<\/p>\n<\/dd>\n<dt id=\"how%20secure%20is%20this%20plugin%3F\">\n<h3>How secure is this plugin?<\/h3>\n<\/dt>\n<dd>\n<p>This plugin only provides a basic level of protection against users accessing the default player or otherwise determining the video URL. Technical users may still be able to figure out this information.<\/p>\n<\/dd>\n<dt id=\"does%20this%20plugin%20work%20on%20mobile%3F\">\n<h3>Does this plugin work on mobile?<\/h3>\n<\/dt>\n<dd>\n<p>Yes, the custom player works on mobile browsers and the disabling of access to the default player is still in place even in fullscreen mode.<\/p>\n<\/dd>\n<dt id=\"why%20not%20use%20plain%20plyr%20player%3F\">\n<h3>Why not use plain Plyr player?<\/h3>\n<\/dt>\n<dd>\n<p>The default <a target=\"_blank\" href=\"https:\/\/plyr.io\/\" rel=\"nofollow ugc noopener\">Plyr<\/a> player overlays YouTube\/Vimeo players with its own controls, which prevents access to the underlying video copy\/share buttons under some scenarios, but this is a side-effect of the way it works rather than a feature. The goal of Protected Video is to make this a feature by accounting for more scenarios e.g. when the player is paused, and providing additional features such as obfuscation of the underlying video ID in the HTML.<\/p>\n<p>If you don\u2019t care about your users sharing the video or actually want them to, a plugin like <a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/wp-youtube-lyte\/\" rel=\"ugc noopener\">WP YouTube Lyte<\/a> is probably more suitable.<\/p>\n<\/dd>\n<dt id=\"how%20can%20i%20style%20the%20player%20with%20css%3F\">\n<h3>How can I style the player with CSS?<\/h3>\n<\/dt>\n<dd>\n<p>The main color of the player can be configured at <strong>Settings &gt; Protected Video<\/strong>. If you\u2019d like to style the player further, you can provide your own CSS to override <a target=\"_blank\" href=\"https:\/\/github.com\/sampotts\/plyr#customizing-the-css\" rel=\"nofollow ugc noopener\">the player\u2019s CSS variables<\/a>:<\/p>\n<pre><code>&lt;style&gt;\n  :root {\n    --plyr-badge-background: #000;\n    --plyr-control-radius: 5px;\n  }\n&lt;\/style&gt;\n<\/code><\/pre>\n<\/dd>\n<dt id=\"can%20the%20youtube%20watermark%2Fcontrols%20be%20hidden%3F\">\n<h3>Can the YouTube watermark\/controls be hidden?<\/h3>\n<\/dt>\n<dd>\n<p>Unfortunately not. This plugin loads the standard YouTube player behind the overlay, which we have no control over. These aspects of the YouTube player cannot be disabled.<\/p>\n<\/dd>\n<dt id=\"can%20you%20add%20feature%20x%20to%20the%20player%3F\">\n<h3>Can you add feature X to the player?<\/h3>\n<\/dt>\n<dd>\n<p>This plugin embeds the <a target=\"_blank\" href=\"https:\/\/plyr.io\/\" rel=\"nofollow ugc noopener\">Plyr<\/a> player in a particular way and adds modifications to prevent access to the underlying video player. This plugin cannot provide additional features to the player itself beyond what is provided by Plyr. If you\u2019d like to see a feature added to the player, please <a target=\"_blank\" href=\"https:\/\/github.com\/sampotts\/plyr\/issues\" rel=\"nofollow ugc noopener\">open an issue on Plyr\u2019s GitHub<\/a>.<\/p>\n<\/dd>\n<dt id=\"can%20i%20load%20my%20own%20videos%20into%20the%20player%3F\">\n<h3>Can I load my own videos into the player?<\/h3>\n<\/dt>\n<dd>\n<p>Currently this plugin only supports YouTube and Vimeo embeds. You can upload your videos to YouTube or Vimeo and then embed them using this plugin. Support for loading your own video file directly from a server is a potential future feature.<\/p>\n<\/dd>\n<dt id=\"why%20is%20there%20a%20shortcode%20as%20well%20as%20gutenberg%20block%3F\">\n<h3>Why is there a Shortcode as well as Gutenberg block?<\/h3>\n<\/dt>\n<dd>\n<p>The Shortcode is provided as an alternative embed method that still provides the same level of protection. Some people need the Shortcode for use with 3rd party page builders (Elementor etc.) and others simply prefer using a Shortcode over Gutenberg blocks.<\/p>\n<\/dd>\n<dt id=\"how%20do%20i%20use%20the%20shortcode%20embed%20method%3F\">\n<h3>How do I use the Shortcode embed method?<\/h3>\n<\/dt>\n<dd>\n<p>This is the format to use if you\u2019d like to use the Shortcode embed method:<\/p>\n<pre><code>[protected_video url=\"https:\/\/youtu.be\/aqz-KE-bpKQ\" service=\"youtube\"]\n<\/code><\/pre>\n<p>A <code>service<\/code> of either <code>youtube<\/code> or <code>vimeo<\/code> must be specified when using the Shortcode embed method.<\/p>\n<\/dd>\n<dt id=\"how%20can%20i%20set%20the%20dimensions%20of%20the%20player%3F\">\n<h3>How can I set the dimensions of the player?<\/h3>\n<\/dt>\n<dd>\n<p>The <a target=\"_blank\" href=\"https:\/\/plyr.io\/\" rel=\"nofollow ugc noopener\">Plyr<\/a> player is responsive by default and will grow to fill the container it is placed in. If you\u2019d like to restrict these dimensions, place the block or Shortcode within a container that has your desired dimensions. See <a target=\"_blank\" href=\"https:\/\/wordpress.org\/support\/topic\/video-size-on-page\/\" rel=\"ugc noopener\">this support topic<\/a> for more.<\/p>\n<\/dd>\n<dt id=\"the%20display%20of%20the%20player%20is%20broken%2Fit%20doesn%27t%20work\">\n<h3>The display of the player is broken\/it doesn\u2019t work<\/h3>\n<\/dt>\n<dd>\n<p>If the player is not looking or behaving like <a target=\"_blank\" href=\"https:\/\/protected-video.alecrust.com\/\" rel=\"nofollow ugc noopener\">the demo<\/a> on your site, this usually indicates another theme or plugin is interfering with Protected Video.<\/p>\n<p>Please try disabling all other plugins one by one and switching to a default theme, to isolate which plugin or theme is causing the issue.<\/p>\n<p>For performance reasons, Protected Video only loads its associated JS and CSS when it detects that a Gutenberg block or Shortcode is present on the page. If you insert a video in a non-standard way this detection may fail.<\/p>\n<\/dd>\n<\/dl>\n<\/div>\n<div id=\"tab-reviews\" class=\"plugin-reviews section\">\n<h2 id=\"reviews-header\">Reviews<\/h2>\n<div class=\"plugin-reviews\">\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/f9fe147d39a2d43b8a6c4b3235b5c950be665706acbe2142473bb20bbe283ff3?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/f9fe147d39a2d43b8a6c4b3235b5c950be665706acbe2142473bb20bbe283ff3?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/works-2179\/\" rel=\"noopener\">works<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/davidrepairqik\/\" title=\"Posts by davidrepairqik\" rel=\"author noopener\">davidrepairqik<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">July 15, 2024<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">15 july 24, Simple and is working correctly. Thanks<\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/a1f198fcb989fabfeb42a79608cb023df483797840697026885f74b51fc1c421?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/a1f198fcb989fabfeb42a79608cb023df483797840697026885f74b51fc1c421?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/it-does-what-its-supposed-to-do-11\/\" rel=\"noopener\">It does what it\u2019s supposed to do<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/maryak2512\/\" title=\"Posts by maryak2512\" rel=\"author noopener\">maryak2512<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">February 7, 2024<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">Many, many, many\u2026.. thanks\u2026..!!!!!!!<\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/b568321ae5386383892e8dca8621e84c894bfd305d55d92bd14e340fff2bf606?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/b568321ae5386383892e8dca8621e84c894bfd305d55d92bd14e340fff2bf606?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/how-to-force-subtitles\/\" rel=\"noopener\">How to Force Subtitles<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/johnmoen\/\" title=\"Posts by John Moen\" rel=\"author noopener\">John Moen<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">January 23, 2024<\/span><br \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"review-replies\">1 reply<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">Is it possible to force subtitles to be turned on?<\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/8a158b9e79f6497260607581f8ae2db2d9be03f6a6f7a5aa00d4625cc1f35825?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/8a158b9e79f6497260607581f8ae2db2d9be03f6a6f7a5aa00d4625cc1f35825?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/great-plugin-38203\/\" rel=\"noopener\">Great plugin<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/honlapdavid\/\" title=\"Posts by honlapdavid\" rel=\"author noopener\">honlapdavid<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">December 27, 2023<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">Thank you!<\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/a2dd6eb715580c2b6afbd2e7fe0736846a0cd88525fa03d820b1235d02389f4a?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/a2dd6eb715580c2b6afbd2e7fe0736846a0cd88525fa03d820b1235d02389f4a?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/very-nice-plugin-a-big-yes\/\" rel=\"noopener\">Very nice plugin! A big YES!<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/hathaihaojp\/\" title=\"Posts by David Ha\" rel=\"author noopener\">David Ha<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">December 22, 2023<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">Hi Alec!<\/p>\n<p>Thank you so much for generously bringing such an incredibly wonderful Video player plugin to the thriving and vibrant WordPress community! This astounding plugin, with its impeccable functionality and seamless performance, truly never fails to impress. Not only is it remarkably efficient, but it also boasts a remarkable simplicity that allows even the most novice users to effortlessly navigate its numerous features. And what\u2019s even more remarkable is the fact that it achieves such impressive results without even relying on the use of jQuery! As if that weren\u2019t enough, I must also commend your impeccable taste in recognizing the brilliance of Plyr js, a truly outstanding player that perfectly complements your exceptional plugin. Keep up the phenomenal work!<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/a5c5759d2ffb27e0b52958e13b80dcba441a2426eb7d0782e138bdfde9a169dd?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/a5c5759d2ffb27e0b52958e13b80dcba441a2426eb7d0782e138bdfde9a169dd?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/el-mejor-plugin-para-video\/\" rel=\"noopener\">El mejor plugin para video<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/nayamoshi83\/\" title=\"Posts by nayamoshi83\" rel=\"author noopener\">nayamoshi83<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">November 13, 2023<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">Este plugin sencillo pero con mucha inteligencia me ha resuelto mil situaciones, sin duda lo recomiendo, por ejemplo para p\u00e1ginas de aterrizaje donde se incruste un video protegido e incluso para lecciones online. Excelente trabajo!<\/div>\n<\/p><\/div>\n<\/article><\/div>\n<p>\t\t<a target=\"_blank\" class=\"reviews-link\" href=\"https:\/\/wordpress.org\/support\/plugin\/protected-video\/reviews\/\" rel=\"noopener\"><br \/>\n\t\t\tRead all 14 reviews\t\t<\/a><\/div>\n<div id=\"tab-developers\" class=\"plugin-developers section\">\n<h2 id=\"developers-header\">Contributors &amp; Developers<\/h2>\n<div class=\"plugin-contributors\">\n<p>\u201cProtected Video\u201d is open source software. The following people have contributed to this plugin.<\/p>\n<p><span class=\"screen-reader-text\">Contributors<\/span><\/p>\n<ul id=\"contributors-list\" class=\"contributors-list\">\n<li>\n\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/19b13cc052a33cbb8916a0b24030021c824b0ff6aff2dc5383afe46d52fda9d8?s=32&amp;d=mm&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/19b13cc052a33cbb8916a0b24030021c824b0ff6aff2dc5383afe46d52fda9d8?s=64&amp;d=mm&amp;r=g 2x\" class=\"avatar avatar-32 photo\" height=\"32\" width=\"32\">\t\t\t\t<a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/alecrust\/\" rel=\"noopener\"><br \/>\n\t\t\t\t\tAlec Rust\t\t\t\t<\/a>\n\t\t\t<\/li>\n<\/ul><\/div>\n<div class=\"plugin-development\">\n<p>\u201cProtected Video\u201d has been translated into 3 locales. Thank you to <a target=\"_blank\" href=\"https:\/\/translate.wordpress.org\/projects\/wp-plugins\/protected-video\/contributors\" rel=\"noopener\">the translators<\/a> for their contributions.<\/p>\n<p><a target=\"_blank\" href=\"https:\/\/translate.wordpress.org\/projects\/wp-plugins\/protected-video\" rel=\"noopener\">Translate \u201cProtected Video\u201d into your language.<\/a><\/p>\n<h3>Interested in development?<\/h3>\n<p><a target=\"_blank\" href=\"https:\/\/plugins.trac.wordpress.org\/browser\/protected-video\/\" rel=\"noopener\" class=\"broken_link\">Browse the code<\/a>, check out the <a target=\"_blank\" href=\"https:\/\/plugins.svn.wordpress.org\/protected-video\/\" rel=\"noopener\">SVN repository<\/a>, or subscribe to the <a target=\"_blank\" href=\"https:\/\/plugins.trac.wordpress.org\/log\/protected-video\/\" rel=\"noopener\" class=\"broken_link\">development log<\/a> by <a target=\"_blank\" href=\"https:\/\/plugins.trac.wordpress.org\/log\/protected-video\/?limit=100&amp;mode=stop_on_copy&amp;format=rss\" rel=\"noopener\" class=\"broken_link\">RSS<\/a>.<\/p>\n<\/div>\n<\/div>\n<div id=\"tab-changelog\" class=\"plugin-changelog section\">\n<h2 id=\"changelog-header\">Changelog<\/h2>\n<h4>1.11.6 \u2013 2024-07-06<\/h4>\n<ul>\n<li>Update WordPress \u201cTested up to\u201d to 6.6<\/li>\n<li>Bump dependencies<\/li>\n<li>Remove Node script to simplify build process<\/li>\n<li>Improve workflow name<\/li>\n<li>Rename workflow<\/li>\n<li>Add weekly \u201cTested up to\u201d CI check<\/li>\n<li>Set permissions for deploy plugin workflow<\/li>\n<li>Remove \u201cv\u201d prefix from git-cliff commands<\/li>\n<li>Improve tag deletion SVN commit message<\/li>\n<li>Simplify changelog config<\/li>\n<li>Tidy comments<\/li>\n<\/ul>\n<h4>1.11.5 \u2013 2024-04-10<\/h4>\n<ul>\n<li>Increase PHPStan level<\/li>\n<li>Use consistent example YouTube ID<\/li>\n<li>Apply WPCS auto fixes<\/li>\n<li>Change PHP files to use tabs<\/li>\n<li>Enable PHPMD linting<\/li>\n<li>Improve file naming<\/li>\n<li>Remove @prettier\/plugin-php, use WP Prettier config<\/li>\n<li>Tweak order in .distignore<\/li>\n<li>Include composer.json in plugin dist<\/li>\n<li>Prefix public function<\/li>\n<li>Sort changelogs consistently<\/li>\n<\/ul>\n<h4>1.11.4 \u2013 2024-04-07<\/h4>\n<ul>\n<li>Remove @access tags<\/li>\n<li>Enable PHPStan<\/li>\n<li>Simplify setting of plugin version<\/li>\n<li>Use latest version of all development Composer packages<\/li>\n<li>Add plugin Blueprint file<\/li>\n<li>Improve variable names<\/li>\n<\/ul>\n<h4>1.11.3 \u2013 2024-04-05<\/h4>\n<ul>\n<li>Remove linting step from release<\/li>\n<li>Bump dependencies<\/li>\n<li>Add Composer and GrumPHP for PHP linting<\/li>\n<li>Switch to git-cliff for changelog building<\/li>\n<li>Bump actions\/configure-pages from 4 to 5<\/li>\n<li>Bump dependencies<\/li>\n<li>Tidy comments<\/li>\n<li>Add missing \u201cCan I load my own videos into the player?\u201d FAQ<\/li>\n<\/ul>\n<h4>1.11.2 \u2013 2024-03-13<\/h4>\n<ul>\n<li>Change PHP code to 4 spaces indentation<\/li>\n<li>Add translators comment<\/li>\n<li>Improve HTML escaping<\/li>\n<li>Bump dependencies<\/li>\n<li>Add \u201cCan I load my own videos into the player?\u201d FAQ<\/li>\n<li>Tidy copy<\/li>\n<li>Increase var name length<\/li>\n<li>Tidy @link comments<\/li>\n<li>Tidy comments<\/li>\n<li>Reduce plugin tags to 5<\/li>\n<li>Add development requirements to README<\/li>\n<li>Add Plugin Check to development plugins<\/li>\n<\/ul>\n<h4>1.11.1 \u2013 2024-03-02<\/h4>\n<ul>\n<li>Update \u201cTested up to\u201d to 6.5<\/li>\n<li>Bump dependencies<\/li>\n<li>Upgrade get-video-id to v4<\/li>\n<li>Upgrade husky to v9<\/li>\n<li>Simplify some PHP code<\/li>\n<li>Misc tidy<\/li>\n<li>Bump Prettier version<\/li>\n<li>Set default value for protected_video_player_theme_color option<\/li>\n<li>Improve consistency of option fields rendering<\/li>\n<li>Include protected_video_disable_right_click option in plugin uninstall<\/li>\n<\/ul>\n<h4>1.11.0 \u2013 2024-01-13<\/h4>\n<ul>\n<li>Add \u201cDisable right-click\u201d plugin option<\/li>\n<li>Use LTS Node version in CI workflows<\/li>\n<li>Bump dependencies<\/li>\n<li>Bump actions\/upload-pages-artifact from 2 to 3<\/li>\n<li>Bump actions\/deploy-pages from 3 to 4<\/li>\n<\/ul>\n<h4>1.10.10 \u2013 2023-12-19<\/h4>\n<ul>\n<li>Bump dependencies<\/li>\n<li>Remove unnecessary comment<\/li>\n<li>Bump actions\/deploy-pages from 2 to 3<\/li>\n<li>Bump actions\/configure-pages from 3 to 4<\/li>\n<\/ul>\n<h4>1.10.9 \u2013 2023-11-07<\/h4>\n<ul>\n<li>Automate deletion of old plugin SVN tags<\/li>\n<li>Bump dependencies<\/li>\n<li>Bump actions\/setup-node from 3 to 4<\/li>\n<\/ul>\n<h4>1.10.8 \u2013 2023-10-27<\/h4>\n<ul>\n<li>Bump dependencies<\/li>\n<li>Update \u201cTested up to\u201d to 6.4<\/li>\n<\/ul>\n<h4>1.10.7 \u2013 2023-10-17<\/h4>\n<ul>\n<li>Load assets if post uses custom page template<\/li>\n<li>Bump dependencies<\/li>\n<li>Improve FAQ<\/li>\n<\/ul>\n<h4>1.10.6 \u2013 2023-09-12<\/h4>\n<ul>\n<li>Bump dependencies<\/li>\n<li>Bump actions\/checkout from 3 to 4<\/li>\n<li>Specify Prettier PHP plugin in config<\/li>\n<\/ul>\n<h4>1.10.5 \u2013 2023-08-18<\/h4>\n<ul>\n<li>Bump dependencies<\/li>\n<li>Use GitHub CLI to upload release asset<\/li>\n<li>Further refine demo page<\/li>\n<li>Refactor demo page<\/li>\n<li>Tidy some CSS<\/li>\n<li>Refine demo page<\/li>\n<\/ul>\n<h4>1.10.4 \u2013 2023-07-27<\/h4>\n<ul>\n<li>Use Notice component for displaying error message<\/li>\n<li>Refactor rendering of video thumbnail<\/li>\n<li>Tidy comments formatting<\/li>\n<li>Refactor color input render code<\/li>\n<li>Improve method names consistency<\/li>\n<li>Load JS in head with defer, instead of end of body<\/li>\n<li>Remove unused do_shortcode fallback<\/li>\n<\/ul>\n<h4>1.10.3 \u2013 2023-07-25<\/h4>\n<ul>\n<li>Switch to @release-it\/bumper plugin for bumping version in files<\/li>\n<li>Use sanitize_hex_color for sanitizing player color value<\/li>\n<li>Refactor plugin init code<\/li>\n<\/ul>\n<h4>1.10.2 \u2013 2023-07-25<\/h4>\n<ul>\n<li>Move lint-staged config to its own file<\/li>\n<li>Remove unnecessary index.php files<\/li>\n<li>Change some methods to be private<\/li>\n<li>Simplify file names<\/li>\n<li>Move registering of Gutenberg block to admin class<\/li>\n<li>Refactor away \u201chooks loader\u201d abstraction<\/li>\n<li>Fix CI badge in README<\/li>\n<li>Improve CI job names<\/li>\n<\/ul>\n<h4>1.10.1 \u2013 2023-07-24<\/h4>\n<ul>\n<li>Add \u201cMemberPress Courses\u201d plugin custom filter to allow styles to load<\/li>\n<li>Split up CI workflows<\/li>\n<\/ul>\n<h4>1.10.0 \u2013 2023-07-24<\/h4>\n<ul>\n<li>Improve plugin screenshots<\/li>\n<li>Fix issue causing duplicate references to assets in HTML<\/li>\n<li>Disable right-clicking anywhere on a page containing a Protected Video<\/li>\n<li>Refactor getVideoThumb() function<\/li>\n<li>Simplify file names<\/li>\n<li>Tidy Shortcode fall back check<\/li>\n<li>Move demo webpack config to demo dir<\/li>\n<li>Fix README CI badge<\/li>\n<li>Consolidate CI workflows<\/li>\n<li>Inject JS at end of  in demo to match plugin<\/li>\n<li>Add cache busting to demo page<\/li>\n<li>Improve comment<\/li>\n<\/ul>\n<h4>1.9.1 \u2013 2023-07-23<\/h4>\n<ul>\n<li>Improve checking for Shortcode usage<\/li>\n<li>Add plugin banner to repo README<\/li>\n<li>Fix case where public CSS fails to load<\/li>\n<li>Add support for @wordpress\/env Docker dev environment<\/li>\n<li>Tidy plugin metadata<\/li>\n<li>Refactor Shortcode output HTML to use sprintf<\/li>\n<li>Simplify PHP utility functions<\/li>\n<li>Simplify dir structure of PHP files<\/li>\n<li>Exclude webpack.demo.js from plugin dist<\/li>\n<\/ul>\n<h4>1.9.0 \u2013 2023-07-22<\/h4>\n<ul>\n<li>Fix duplicate enqueuing of public JS<\/li>\n<li>Fix demo webpack config filename<\/li>\n<li>Move get-video-id to main dependencies<\/li>\n<li>Remove now-unnecessary Browserslist config<\/li>\n<li>Use wp-scripts to build all block assets<\/li>\n<li>Move block build directory from \/admin\/js to \/build<\/li>\n<li>Switch from Yarn to npm, downgrade Prettier to fix prettier-php incompatibility<\/li>\n<li>Add \u201cplayer\u201d to block.json keywords<\/li>\n<li>Update plugin \u201cTested up to\u201d to WordPress 6.3<\/li>\n<li>Add keywords to block.json<\/li>\n<li>Tidy package.json<\/li>\n<\/ul>\n<h4>1.8.6 \u2013 2023-07-20<\/h4>\n<ul>\n<li>Add custom SVG as block icon<\/li>\n<li>Improve function name<\/li>\n<\/ul>\n<h4>1.8.5 \u2013 2023-07-20<\/h4>\n<ul>\n<li>Bump release-it version<\/li>\n<li>Fix class names<\/li>\n<li>Remove unnecessary cannotEmbed block attribute<\/li>\n<li>Improve robustness of block editor CSS<\/li>\n<li>Add support for block preview when browsing<\/li>\n<\/ul>\n<h4>1.8.4 \u2013 2023-07-20<\/h4>\n<ul>\n<li>Move thumbUrl() out of main block code<\/li>\n<li>Use destructuring<\/li>\n<li>Bump dependencies<\/li>\n<li>Implement useBlockProps() to support block.json apiVersion 3<\/li>\n<li>Set editorScript in block.json<\/li>\n<\/ul>\n<h4>1.8.3 \u2013 2023-07-19<\/h4>\n<ul>\n<li>Bump dependencies<\/li>\n<li>Store block metadata in block.json<\/li>\n<li>Exclude public CSS from Prettier<\/li>\n<li>Tidy license comments<\/li>\n<li>Bump semver from 5.7.1 to 5.7.2<\/li>\n<li>Bump actions\/upload-pages-artifact from 1 to 2<\/li>\n<li>Separate lint and format scripts<\/li>\n<li>Run Prettier on all possible file extensions<\/li>\n<\/ul>\n<h4>1.8.2 \u2013 2023-06-26<\/h4>\n<ul>\n<li>Bump dependencies<\/li>\n<li>Improve plugin icon<\/li>\n<li>Remove unnecessary CNAME file from demo<\/li>\n<li>Improve CI and demo deploy<\/li>\n<li>Bump dependencies<\/li>\n<\/ul>\n<h4>1.8.1 \u2013 2023-04-16<\/h4>\n<ul>\n<li>Use better wp_add_inline_style() for loading inline styles<\/li>\n<li>Use plugin_dir_url consistently over plugins_url<\/li>\n<li>Bump build dependencies<\/li>\n<li>Load player assets on custom post type pages<\/li>\n<\/ul>\n<h4>1.8.0 \u2013 2023-04-01<\/h4>\n<ul>\n<li>Switch YouTube embeds to use \u201cno cookie\u201d domain for GDPR support<\/li>\n<li>Simplify JS for decoding HTML<\/li>\n<li>Add \u201cCan you add feature X to the player?\u201d FAQ<\/li>\n<li>Bump dependencies including Plyr 3.7.7 -&gt; 3.7.8<\/li>\n<\/ul>\n<h4>1.7.22 \u2013 2023-03-20<\/h4>\n<ul>\n<li>Add link to Plyr\u2019s styling documentation on plugin settings page<\/li>\n<li>Add \u201cHow can I style the player how I like?\u201d FAQ<\/li>\n<li>Add \u201cThe display of the player is broken\/it doesn\u2019t work\u201d FAQ<\/li>\n<li>Bump dependencies including Plyr 3.7.6 -&gt; 3.7.7<\/li>\n<li>Update plugin \u201cTested up to\u201d to WordPress 6.2<\/li>\n<\/ul>\n<h4>1.7.21 \u2013 2023-03-10<\/h4>\n<ul>\n<li>Bump dependencies including Plyr 3.7.3 -&gt; 3.7.6<\/li>\n<\/ul>\n<h4>1.7.20 \u2013 2023-02-19<\/h4>\n<ul>\n<li>Improve \u201cWhy is there a Shortcode as well as Gutenberg block?\u201d FAQ<\/li>\n<li>Bump dependencies<\/li>\n<\/ul>\n<h4>1.7.19 \u2013 2022-11-18<\/h4>\n<ul>\n<li>Bump dependencies inc Plyr player v3.7.3<\/li>\n<li>Fix FAQ wrapping<\/li>\n<li>Update plugin \u201cTested up to\u201d version<\/li>\n<\/ul>\n<h4>1.7.18 \u2013 2022-11-06<\/h4>\n<ul>\n<li>Add FAQ<\/li>\n<li>Tidy readmes<\/li>\n<li>Bump dependencies<\/li>\n<li>Fix readme typo<\/li>\n<\/ul>\n<h4>1.7.17 \u2013 2022-08-14<\/h4>\n<ul>\n<li>Add readme link to video that explains plugin<\/li>\n<li>Add \u201cHow do I use the Shortcode embed method?\u201d to FAQs<\/li>\n<li>Bump dependencies<\/li>\n<li>Add missing $this-&gt;shortcodes placeholder variable<\/li>\n<\/ul>\n<h4>1.7.16 \u2013 2022-07-24<\/h4>\n<ul>\n<li>Bump dependencies<\/li>\n<li>Switch to official WordPress Babel preset<\/li>\n<li>Improve plugin information<\/li>\n<li>Switch to official WordPress Browserslist<\/li>\n<\/ul>\n<h4>1.7.15 \u2013 2022-07-08<\/h4>\n<ul>\n<li>Bump dependencies<\/li>\n<li>Fix CI badge in README.md<\/li>\n<\/ul>\n<h4>1.7.14 \u2013 2022-05-28<\/h4>\n<ul>\n<li>Move readme.txt into repository<\/li>\n<\/ul>\n<h4>1.7.13 \u2013 2022-05-28<\/h4>\n<ul>\n<li>Fix changelog building<\/li>\n<\/ul>\n<h4>1.7.12 \u2013 2022-05-28<\/h4>\n<ul>\n<li>Ignore casing of \u201cservice\u201d value in Shortcode<\/li>\n<li>Bump dependencies<\/li>\n<li>Split up CI workflows<\/li>\n<\/ul>\n<h4>1.7.11 \u2013 2022-05-08<\/h4>\n<ul>\n<li>Update \u201cTested up to\u201d to WordPress 6<\/li>\n<li>Bump dependencies<\/li>\n<\/ul>\n<h4>1.7.10 \u2013 2022-04-20<\/h4>\n<ul>\n<li>Bump dependencies<\/li>\n<li>Bump Plyr player version 3.6.12 -&gt; 3.7.2<\/li>\n<\/ul>\n<h4>1.7.9 \u2013 2022-04-10<\/h4>\n<ul>\n<li>Bump dependencies<\/li>\n<li>Improve README<\/li>\n<\/ul>\n<h4>1.7.8 \u2013 2022-03-06<\/h4>\n<ul>\n<li>Upgrade download\/upload artifact GitHub Actions to v3<\/li>\n<li>Upgrade \u201cCheckout\u201d GitHub Action to v3<\/li>\n<li>Bump dependencies<\/li>\n<li>Remove unnecessary settings_errors call<\/li>\n<li>Automate keeping GitHub Actions up to date<\/li>\n<li>Allow errors to display at top of plugin settings page<\/li>\n<li>Refactor fetching of default player theme color option<\/li>\n<li>Tidy<\/li>\n<\/ul>\n<h4>1.7.7 \u2013 2022-02-26<\/h4>\n<ul>\n<li>Bump dependencies<\/li>\n<li>Store plugin option (theme color) as string instead of object<\/li>\n<\/ul>\n<h4>1.7.6 \u2013 2022-02-14<\/h4>\n<ul>\n<li>Bump dependencies<\/li>\n<\/ul>\n<h4>1.7.5 \u2013 2022-02-05<\/h4>\n<ul>\n<li>Bump dependencies<\/li>\n<li>Remove unnecessary postcss-nested plugin<\/li>\n<li>Improve public CSS webpack configs<\/li>\n<li>Remove invalid CSS from demo<\/li>\n<li>Update author notes<\/li>\n<li>Include .yml files in linting<\/li>\n<\/ul>\n<h4>1.7.4 \u2013 2022-01-25<\/h4>\n<ul>\n<li>Prevent interaction with <\/li>\n<\/ul>\n<p>&lt;<\/p>\n<p>iframe&gt; if poster removed in Dev Tools<br \/>\n* Fix Vimeo thumbnail in blocks editor<br \/>\n* Bump mini-css-extract-plugin version<br \/>\n* Exclude \/demo from Prettier<br \/>\n* Improve WordPress vs standalone player dev experience<br \/>\n* Simplify Demo CI<br \/>\n* Tidy<br \/>\n* Fix lint<br \/>\n* Add missing demo src files<br \/>\n* Build player demo assets with webpack<\/p>\n<h4>1.7.3 \u2013 2022-01-24<\/h4>\n<ul>\n<li>Bump webpack-cli version<\/li>\n<li>Update URL to player demo<\/li>\n<li>Create CNAME<\/li>\n<li>Refactor\/simplify public JS<\/li>\n<li>Fix excluding webpack-public.js from plugin dist<\/li>\n<\/ul>\n<h4>1.7.2 \u2013 2022-01-23<\/h4>\n<ul>\n<li>Bump dependencies<\/li>\n<li>Set Browserslist value in package.json<\/li>\n<li>Build public CSS with PostCSS<\/li>\n<\/ul>\n<h4>1.7.1 \u2013 2022-01-23<\/h4>\n<ul>\n<li>Update plugin \u201cTested up to\u201d to WordPress 5.9<\/li>\n<\/ul>\n<h4>1.7.0 \u2013 2022-01-22<\/h4>\n<ul>\n<li>Optimize and minify public JS<\/li>\n<li>Bundle Plyr in plugin JS\/CSS instead of loading from CDN<\/li>\n<li>Optimize and minify public CSS<\/li>\n<li>Build public CSS with webpack<\/li>\n<li>Bump dependencies<\/li>\n<\/ul>\n<h4>1.6.2 \u2013 2022-01-16<\/h4>\n<ul>\n<li>Fix syntax in readme FAQ<\/li>\n<\/ul>\n<h4>1.6.1 \u2013 2022-01-16<\/h4>\n<ul>\n<li>Bump dependencies<\/li>\n<li>Add FAQ about setting player dimensions<\/li>\n<li>Switch from Rollup to webpack for building public JS<\/li>\n<li>Bump dependencies<\/li>\n<li>Bump follow-redirects from 1.14.6 to 1.14.7<\/li>\n<\/ul>\n<h4>1.6.0 \u2013 2022-01-02<\/h4>\n<ul>\n<li>Bump dependencies to add support for YouTube Shorts<\/li>\n<li>Fix error when fetching post content when not on a post<\/li>\n<\/ul>\n<h4>1.5.2 \u2013 2021-12-23<\/h4>\n<ul>\n<li>Remove unused globals from ESLint config<\/li>\n<li>Remove unused get_loader() utility function<\/li>\n<li>Extract \u201ccheck if video on page\u201d check into function<\/li>\n<li>Bump linting dependencies<\/li>\n<li>Improve README\/documentation<\/li>\n<li>Tidy README<\/li>\n<\/ul>\n<h4>1.5.1 \u2013 2021-12-16<\/h4>\n<ul>\n<li>Upgrade Plyr version 3.6.11 -&gt; 3.6.12<\/li>\n<\/ul>\n<h4>1.5.0 \u2013 2021-12-16<\/h4>\n<ul>\n<li>Upgrade Plyr player 3.6.9 -&gt; 3.6.11<\/li>\n<li>Bump dependencies<\/li>\n<li>Fix Shortcode-only usage not loading assets<\/li>\n<li>Adjust formatting in readme.txt<\/li>\n<\/ul>\n<h4>1.4.0 \u2013 2021-11-17<\/h4>\n<ul>\n<li>Add Shortcode as alternative embed method<\/li>\n<li>Fix installation steps order<\/li>\n<li>Optimise banner image PNG<\/li>\n<li>Bump dependencies<\/li>\n<\/ul>\n<h4>1.3.1 \u2013 2021-11-14<\/h4>\n<ul>\n<li>Upgrade get-video-id to improve YouTube URL matching<\/li>\n<li>Fix typo in plugin description<\/li>\n<\/ul>\n<h4>1.3.0 \u2013 2021-10-13<\/h4>\n<ul>\n<li>Update Plyr version 3.6.8 -&gt; 3.6.9<\/li>\n<li>Update npm dependencies<\/li>\n<\/ul>\n<h4>1.2.10 \u2013 2021-09-18<\/h4>\n<ul>\n<li>Bump dependencies<\/li>\n<li>Bump tar from 6.1.6 to 6.1.11<\/li>\n<\/ul>\n<h4>1.2.9 \u2013 2021-09-05<\/h4>\n<ul>\n<li>Bump dependencies<\/li>\n<\/ul>\n<h4>1.2.8 \u2013 2021-08-06<\/h4>\n<ul>\n<li>Update dependencies<\/li>\n<\/ul>\n<h4>1.2.7 \u2013 2021-07-11<\/h4>\n<ul>\n<li>Bump sub-dependencies to resolve security vulnerabilities<\/li>\n<\/ul>\n<h4>1.2.6 \u2013 2021-07-11<\/h4>\n<ul>\n<li>Update plugin banner and icon<\/li>\n<li>Use \u201cblock editor\u201d instead of \u201cblocks editor\u201d in readme<\/li>\n<li>Tidy readme.txt<\/li>\n<li>Update \u201cTested up to\u201d to WordPress 5.8<\/li>\n<li>Update dependencies<\/li>\n<\/ul>\n<h4>1.2.5 \u2013 2021-07-03<\/h4>\n<ul>\n<li>Mention \/docs in local development instructions<\/li>\n<li>Remove unnecessary .husky\/.gitignore<\/li>\n<li>Bump dependencies<\/li>\n<li>Disable weekly Dependabot PRs<\/li>\n<li>Bump release-it from 14.8.0 to 14.9.0<\/li>\n<li>Remove links to PRs in readme.txt changelog<\/li>\n<li>Improve readme<\/li>\n<\/ul>\n<h4>1.2.4 \u2013 2021-06-12<\/h4>\n<ul>\n<li>Merge pull request #1 from AlecRust\/dependabot\/npm_and_yarn\/rollup-2.51.2<\/li>\n<li>Bump rollup from 2.51.1 to 2.51.2<\/li>\n<li>Improve readmes<\/li>\n<li>Depend on Plyr player CSS for custom CSS<\/li>\n<li>Improve dependency naming<\/li>\n<li>Automate dependency PRs<\/li>\n<li>Remove unnecessary wp_enqueue_style option<\/li>\n<li>Support translation of more settings UI strings<\/li>\n<\/ul>\n<h4>1.2.3 \u2013 2021-06-11<\/h4>\n<ul>\n<li>Improve readme.txt<\/li>\n<li>Exclude \/docs from plugin dist<\/li>\n<\/ul>\n<h4>1.2.2 \u2013 2021-06-11<\/h4>\n<ul>\n<li>Link to demo in readmes<\/li>\n<li>Add demo of player<\/li>\n<\/ul>\n<h4>1.2.1 \u2013 2021-06-11<\/h4>\n<ul>\n<li>Improve README.md<\/li>\n<li>Simplify readme.txt<\/li>\n<\/ul>\n<h4>1.2.0 \u2013 2021-06-11<\/h4>\n<ul>\n<li>Add obfuscation of provider and video ID in HTML<\/li>\n<li>Improve FAQ<\/li>\n<li>Improve readmes<\/li>\n<li>Remove check-licenses<\/li>\n<li>Tidy CI<\/li>\n<li>Add license checking to lint<\/li>\n<li>Add CI badge to README<\/li>\n<\/ul>\n<h4>1.1.12 \u2013 2021-06-10<\/h4>\n<ul>\n<li>Simplify CI workflow<\/li>\n<li>Improve readme<\/li>\n<li>Update block screenshot<\/li>\n<\/ul>\n<h4>1.1.11 \u2013 2021-06-10<\/h4>\n<ul>\n<li>Remove readme CI badge for now<\/li>\n<li>Show error notice when no video ID found<\/li>\n<li>Improve block copy<\/li>\n<li>Add placeholder to embed input<\/li>\n<li>Use \u201cyarn start\u201d instead of \u201cyarn watch\u201d<\/li>\n<li>Replace \u201creplace\u201d with \u201creplace-in-files\u201d<\/li>\n<li>Improve plugin banner\/icon<\/li>\n<\/ul>\n<h4>1.1.10 \u2013 2021-06-10<\/h4>\n<ul>\n<li>Run separate lint workflow only on PRs<\/li>\n<li>Fix readme.txt changelog<\/li>\n<\/ul>\n<h4>1.1.9 \u2013 2021-06-10<\/h4>\n<ul>\n<li>Split up deployment workflow<\/li>\n<li>Exclude release commits from changelogs<\/li>\n<li>Add CI badge to README<\/li>\n<li>Improve plugin banner image<\/li>\n<\/ul>\n<h4>1.1.8 \u2013 2021-06-09<\/h4>\n<ul>\n<li>Exclude release commit from temp changelog<\/li>\n<li>Remove unnecessary \u2013oneline flag<\/li>\n<\/ul>\n<h4>1.1.7 \u2013 2021-06-09<\/h4>\n<ul>\n<li>Exclude Lint workflow from tag pushes<\/li>\n<li>Improve order of CI steps<\/li>\n<li>Improve date output in changelog<\/li>\n<\/ul>\n<h4>1.1.6 \u2013 2021-06-09<\/h4>\n<ul>\n<li>Write to temporary file with git log<\/li>\n<li>Simplify git log output<\/li>\n<li>Exclude temp-changelog.txt from dist<\/li>\n<\/ul>\n<h4>1.1.5 \u2013 2021-06-09<\/h4>\n<ul>\n<li>Fix output savings<\/li>\n<\/ul>\n<h4>1.1.4 \u2013 2021-06-09<\/h4>\n<ul>\n<li>Save current tag as output<\/li>\n<li>Merge branch \u2018master\u2019 of github.com:AlecRust\/protected-video<\/li>\n<li>Fix build<\/li>\n<li>Fix GitHub release<\/li>\n<\/ul>\n<h4>1.1.2 \u2013 2021-06-09<\/h4>\n<ul>\n<li>Add fetch-depth<\/li>\n<\/ul>\n<h4>1.1.1 \u2013 2021-06-09<\/h4>\n<ul>\n<li>Fix changelog generating<\/li>\n<\/ul>\n<h4>1.1.0 \u2013 2021-06-09<\/h4>\n<ul>\n<li>Move GitHub release to CI<\/li>\n<li>Add link to plugin settings on Plugins page<\/li>\n<li>Add FAQ<\/li>\n<li>Improve readmes<\/li>\n<\/ul>\n<h4>1.0.8 \u2013 2021-06-09<\/h4>\n<ul>\n<li>Add CHANGELOG.md<\/li>\n<li>Add check flag to Prettier in CI<\/li>\n<li>Rename readme<\/li>\n<li>Add Lint workflow<\/li>\n<li>Bump npm deps<\/li>\n<li>Improve readme<\/li>\n<li>Tidy workflow<\/li>\n<li>Improve readme<\/li>\n<\/ul>\n<h4>1.0.7 \u2013 2021-06-09<\/h4>\n<ul>\n<li>Add missing admin\/index.php<\/li>\n<li>Exclude files from plugin deployment<\/li>\n<\/ul>\n<h4>1.0.6 \u2013 2021-06-09<\/h4>\n<ul>\n<li>Set up plugin deploy<\/li>\n<li>Specify minimum PHP version<\/li>\n<li>Remove unnecessary @since comments<\/li>\n<li>Update license in package.json<\/li>\n<li>Improve README<\/li>\n<li>Improve README<\/li>\n<li>Improve plugin description<\/li>\n<\/ul>\n<h4>1.0.5 \u2013 2021-06-06<\/h4>\n<ul>\n<li>Add admin stylesheet<\/li>\n<li>Register block on enqueue_block_editor_assets instead of init<\/li>\n<\/ul>\n<h4>1.0.4 \u2013 2021-06-06<\/h4>\n<ul>\n<li>Fix version not being updated in plugin header<\/li>\n<\/ul>\n<h4>1.0.3 \u2013 2021-06-06<\/h4>\n<ul>\n<li>Add GitHub Plugin URI to plugin header<\/li>\n<li>Improve README installation instructions<\/li>\n<\/ul>\n<h4>1.0.2 \u2013 2021-06-06<\/h4>\n<ul>\n<li>Bump release-it version<\/li>\n<li>Add plugin banner\/icon assets<\/li>\n<li>Add Rollup build process for public JS<\/li>\n<li>Tweak readme<\/li>\n<\/ul>\n<h4>1.0.1 \u2013 2021-06-05<\/h4>\n<ul>\n<li>Add release-it<\/li>\n<\/ul>\n<h4>1.0.0 \u2013 2021-06-05<\/h4>\n<ul>\n<li>Initial commit<\/li>\n<\/ul>\n<\/div><\/div>\n<p><!-- .entry-content --><\/p>\n<p>\t<!-- .entry-meta --><br \/>\n<\/article>\n<p><br \/>\n<br \/><a href=\"https:\/\/wordpress.org\/plugins\/protected-video\/\" target=\"_blank\" rel=\"noopener\">Source link <\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Protected Video By Alec Rust Download Live Preview Details Reviews Installation Development Support Description Gutenberg block and Shortcode for embedding YouTube\/Vimeo videos, in a way that prevents users easily accessing the underlying video. This is useful for example when embedding an \u201cunlisted\u201d video as premium course content behind a paywall on your site. Features include: [&hellip;]<\/p>","protected":false},"author":172,"featured_media":3753,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"give_campaign_id":0,"footnotes":""},"categories":[1933,39,40],"tags":[2554,2058],"class_list":["post-3752","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-community-plugin","category-lite-version","category-wp-plugin-solution","tag-protected","tag-video"],"acf":[],"fifu_image_url":"https:\/\/ps.w.org\/protected-video\/assets\/banner-772x250.png?rev=2930887","_links":{"self":[{"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/posts\/3752","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/users\/172"}],"replies":[{"embeddable":true,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/comments?post=3752"}],"version-history":[{"count":0,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/posts\/3752\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/media\/3753"}],"wp:attachment":[{"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/media?parent=3752"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/categories?post=3752"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/tags?post=3752"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}