[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fP0CVhdX461YvtbgTXmVJgHNHCBzEXRAqRdwwn_OheDQ":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":13,"last_updated":14,"tested_up_to":15,"requires_at_least":16,"requires_php":14,"tags":17,"homepage":19,"download_link":20,"security_score":21,"vuln_count":13,"unpatched_count":13,"last_vuln_date":22,"fetched_at":23,"vulnerabilities":24,"developer":25,"crawl_stats":22,"alternatives":32,"analysis":97,"fingerprints":174},"youtube-video-feed","YouTube Feed","1.1","plumwd","https:\u002F\u002Fprofiles.wordpress.org\u002Fplumwd\u002F","\u003Cp>YouTube Feed allows for easy placement of a YouTube video feed anywhere on your posts, pages, or widgets using a shortcode.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Specify the YouTube video feed\u003C\u002Fli>\n\u003Cli>Specify the number of videos to display\u003C\u002Fli>\n\u003Cli>Set the display to horizonal or vertical\u003C\u002Fli>\n\u003Cli>Set the thumbnail size\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Shortcode Usage\u003C\u002Fh3>\n\u003Col>\n\u003Cli>To add a YouTube feed to your posts, pages, or widgets use the following code:\u003Cbr \u002F>\n[plumwd_youtube_display]\u003C\u002Fli>\n\u003Cli>To add the YouTube Feed plugin to your WordPress theme use the following code inside your template: \u003Ccode>echo do_shortcode('[plumwd_youtube_display]');\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>The plugin also supports several attributes for the shortcode, below is a listing of the attributes and what their purpose is:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\n\u003Cp>channel -> this must be set or the feed will not display Usage:\u003Cbr \u002F>\n[plumwd_youtube_display channel=”plumwd”]\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>videonum -> The number of videos to display. Will return the most recent videos uploaded to the feed. Usage:\u003Cbr \u002F>\n[plumwd_youtube_display channel=”plumwd” videonum=”4″]\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>display -> accepts two different options: horizontal or vertical. Usage:\u003Cbr \u002F>\n[plumwd_youtube_display channel=”plumwd” display=”horizonal”]\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>size -> Choose from four different size options xsmall, small, medium, large. Usage:\u003Cbr \u002F>\n[plumwd_youtube_display channel=”plumwd” size=”small”]\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Fol>\n","YouTube Feed allows for easy placement of a YouTube video feed anywhere on your posts, pages, or widgets using a shortcode.",10,3388,0,"","3.5.2","2.0.2",[18,4],"youtube-shortcode","http:\u002F\u002Fwww.plumeriawebdesign.com\u002Fyoutube-feed-plugin\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fyoutube-video-feed.zip",100,null,"2026-03-15T10:48:56.248Z",[],{"slug":7,"display_name":7,"profile_url":8,"plugin_count":26,"total_installs":27,"avg_security_score":28,"avg_patch_time_days":29,"trust_score":30,"computed_at":31},4,130,83,30,82,"2026-04-04T18:42:27.800Z",[33,57,78],{"slug":34,"name":35,"version":36,"author":37,"author_profile":38,"description":39,"short_description":40,"active_installs":41,"downloaded":42,"rating":21,"num_ratings":43,"last_updated":44,"tested_up_to":45,"requires_at_least":46,"requires_php":47,"tags":48,"homepage":53,"download_link":54,"security_score":55,"vuln_count":13,"unpatched_count":13,"last_vuln_date":22,"fetched_at":56},"insert-video-with-schemaorg-ivws","Insert Video with Schema.org (IVS)","3.1.7","Artem Abramovich","https:\u002F\u002Fprofiles.wordpress.org\u002Fartabr\u002F","\u003Cp>The plugin allows to speed up and simplify the process of partitioning a video from YouTube about writing articles.\u003Cbr \u002F>\nClick on the button and fill in all fields. Click on the “Ok” button and you’re done.\u003Cbr \u002F>\nFor the correct operation of the microdata, all the fields in the Add microdata section are mandatory for filling\u003C\u002Fp>\n\u003Ch4>Demo video\u003C\u002Fh4>\n\u003Cp>\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FSSesEP5-9rM?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch4>Bundled translations:\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Russian\u003C\u002Fli>\n\u003Cli>English\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Donate link:\u003C\u002Fh4>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.paypal.me\u002Fartabr\" rel=\"nofollow ugc\">https:\u002F\u002Fwww.paypal.me\u002Fartabr\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch4>Got a bug or suggestion?\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwpruse.ru\u002F?p=67\" rel=\"nofollow ugc\">Documentation\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fwpruse.ru\u002F?p=50\" rel=\"nofollow ugc\">Contact author\u003C\u002Fa> (please \u003Cem>DO NOT\u003C\u002Fem> use this form for support requests)\u003C\u002Fli>\n\u003C\u002Ful>\n","Plugin created shortcode to insert YouTube videos with microdate on Schema.org for rich snippet",300,5060,3,"2018-11-14T18:03:00.000Z","5.0.25","4.0","5.6",[49,50,51,52,18],"schema-org","schemaorg","shortcode","shortcodes","https:\u002F\u002Fru.wordpress.org\u002Fplugins\u002Finsert-video-with-schemaorg-ivws\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Finsert-video-with-schemaorg-ivws.3.1.7.zip",85,"2026-03-15T15:16:48.613Z",{"slug":58,"name":59,"version":60,"author":61,"author_profile":62,"description":63,"short_description":64,"active_installs":65,"downloaded":66,"rating":67,"num_ratings":68,"last_updated":69,"tested_up_to":70,"requires_at_least":71,"requires_php":14,"tags":72,"homepage":76,"download_link":77,"security_score":55,"vuln_count":13,"unpatched_count":13,"last_vuln_date":22,"fetched_at":56},"wp-theater","WP Theater","1.2.3","kentfarst","https:\u002F\u002Fprofiles.wordpress.org\u002Fkentfarst\u002F","\u003Cp>WP Theater provides shortcodes for integrating \u003Cstrong>YouTube\u003C\u002Fstrong> and \u003Cstrong>Vimeo\u003C\u002Fstrong> video embeds and feeds into your posts or widgets. Some options include traditional embedding, single video previews, a wrapped “Theater” embed, and video listings from playlists, channels, albums and groups.  WP Theater was built with developers in mind, those who need flexibility. With that said, great effort was put into making sure this plugin stayed simple.\u003C\u002Fp>\n\u003Ch4>Requirements\u003C\u002Fh4>\n\u003Col>\n\u003Cli>Current version tested on WordPress version 3.9 and later.\u003C\u002Fli>\n\u003Cli>PHP 5.3 or later with cURL\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>Usage\u003C\u002Fh4>\n\u003Cp>For parameters and their usage please visit:\u003C\u002Fp>\n\u003Cp>http:\u002F\u002Fredshiftstudio.com\u002Fwp-theater\u002F\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Boring Embed\u003C\u002Fstrong> – The classic\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C!--YouTube Error: bad URL entered-->\n\u003C!-- vimeo error: not a vimeo video -->\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Preview\u003C\u002Fstrong> – Thumbnail and title of a single video\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C!--YouTube Error: bad URL entered-->\n\u003C!-- vimeo error: not a vimeo video -->\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Theater\u003C\u002Fstrong> – Traditional embed that’s wrapped for styling, has optional Lower Lights and Full Window buttons, and is responsive.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C!--YouTube Error: bad URL entered-->\n\u003C!-- vimeo error: not a vimeo video -->\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cem>The following contain a “theater” by default\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>User\u003C\u002Fstrong> – Listing of a user’s videos\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C!--YouTube Error: bad URL entered-->\n\u003C!-- vimeo error: not a vimeo video -->\n\u002F\u002F for YouTube's v3 API see FAQ about user uploads vs playlists.\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Channel\u003C\u002Fstrong> – Listing of videos from a specific channel\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C!-- vimeo error: not a vimeo video -->\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Playlist\u003C\u002Fstrong> – Listing of videos from a user’s playlist\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C!--YouTube Error: bad URL entered-->\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Album\u003C\u002Fstrong> – Listing of videos from a specific album\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C!-- vimeo error: not a vimeo video -->\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Group\u003C\u002Fstrong> – Listing of videos from a specific group\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C!-- vimeo error: not a vimeo video -->\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Developer FAQ\u003C\u002Fh3>\n\u003Ch4>How can I customize the output\u003C\u002Fh4>\n\u003Cp>Filters exist that can handle complete customization of the output.  Written as “Filter_Hook” ($callback_params … )\u003C\u002Fp>\n\u003Cp>Display — Override built in output\u003C\u002Fp>\n\u003Cul>\n\u003Cli>“wp_theater-pre_video_shortcode” ( FALSE, $feed, $atts )\u003C\u002Fli>\n\u003Cli>“wp_theater-pre_theater” ( FALSE, $atts, $content, $tag )\u003C\u002Fli>\n\u003Cli>“wp_theater-pre_video_preview” ( FALSE, $video, $atts, $selected )\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Attributes\u003C\u002Fp>\n\u003Cul>\n\u003Cli>“wp_theater-format_params” ( $atts, $content, $tag )\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>API Feeds — Override built in api request and parsing.  NOTE: Keep in mind that these filters will only be called when the transient cache is updated.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>“wp_theater-pre_get_request_url” ( FALSE, $atts, $request, $output )\u003C\u002Fli>\n\u003Cli>“wp_theater-parse_{$service}_response” ( $out, $response, $atts) \u002F\u002F v1.1.3\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Content\u003C\u002Fp>\n\u003Cul>\n\u003Cli>“wp_theater-section_title” ( $title )\u003C\u002Fli>\n\u003Cli>“wp_theater-video_title” ( $title )\u003C\u002Fli>\n\u003Cli>“wp_theater-{$service}_more_url” ( FALSE, $atts, $data ) \u002F\u002F v1.1.4\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Presets\u003C\u002Fp>\n\u003Cul>\n\u003Cli>“wp_theater-get_preset” ( $name )\u003C\u002Fli>\n\u003Cli>“wp_theater-set_preset” ( $arr, $name )\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>How do I add my own preset?\u003C\u002Fh4>\n\u003Cp>The following code will create a preset named “my_preset”.  We do not currently, but are planning to, offer a method of saving presets to the database so that they stick around between theme’s.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function my_preset_init ($presets) {\n    $presets->set_preset( 'my_preset', shortcode_atts( $presets->get_preset( 'youtube' ), array(\n        'embed_width' => 342,\n        'embed_height' => 192,\n        'max' => 9,\n    ) ) );\n    add_shortcode( 'my_preset', array( WP_Theater::$shortcodes, 'video_shortcode' ) );\n}\nadd_action('wp_theater-shortcodes_init', 'my_preset_init');\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>What values can I define in presets\u003C\u002Fh4>\n\u003Cp>Listed below are all of the possible settings you can define in a preset with their base values\u003C\u002Fp>\n\u003Cpre>\u003Ccode>array(\n    \u002F\u002F general options\n    'preset' => '',\n    'service' => '',\n    'mode' => 'embed',\n    'id' => '',\n    'embed_width' => FALSE,\n    'embed_height' => FALSE,\n    'class' => '',\n    'cache' => FALSE,\n\n    \u002F\u002F preview & listing options\n    'img_size' => 'medium',\n    'columns' => 3,\n    'max' => 12,\n    'autoplay_onclick' => TRUE,\n\n    \u002F\u002F Title options\n    'show_title' => TRUE,\n    'show_video_title' => TRUE,\n    'title' => '',\n\n    \u002F\u002F More link options\n    'show_more_link' => TRUE,\n    'more_url' => FALSE,\n    'more_text' => FALSE,\n\n    \u002F\u002F Theater options\n    'show_theater' => TRUE,\n    'theater_id' => FALSE,\n    'show_fullwindow' => FALSE,\n    'show_lowerlights' => FALSE,\n    'keep_ratio' => TRUE,\n    'iframe_placeholder' = > TRUE            \u002F\u002F since 1.2.0\n\n    \u002F\u002F can only be defined in presets\n    'modes' => array(), \u002F\u002F the modes array with matching link formats\n    'classes' => array( \u002F\u002F the classes to apply to their respective elements\n        'section' => 'entry-section wp-theater-section %service%',\n        'theater' => 'wp-theater-bigscreen',\n        'embed' => 'wp-theater-iframe',\n        'list' => 'wp-theater-listing',\n        'preview' => 'video-preview'\n    )\n);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>How can I modify the embed url?\u003C\u002Fh4>\n\u003Cp>Each preset requires a modes array to store the different link formats used.  You can directly access and modify these yourself through a theme’s functions.php.\u003Cbr \u002F>\ne.g.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002F\u002F make youtube embed with https and youtube-nocookie.com\nfunction my_preset_init ($presets) {\n    $youtube_preset = $presets->get_preset( 'youtube' );\n    $youtube_preset['modes']['embed'] = 'https:\u002F\u002Fwww.youtube-nocookie.com\u002Fembed\u002F%id%?wmode=transparent&autohide=1';\n    $presets->set_preset( 'youtube', $youtube_preset );\n}\nadd_action('wp_theater-shortcodes_init', 'my_preset_init');\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>NOTE:  Each mode URL must have %id% in the place of the id.  And, it’s a bit dumb but, for now you must include at least one query parameter in an embed’s url.\u003C\u002Fp>\n\u003Ch4>What do the formatted feeds look like?\u003C\u002Fh4>\n\u003Cp>Vimeo’s feed will return exactly what their API states except we merge their info and video requests into one and clone values to help normalize the feeds.  Youtube on the other hand is almost completely reformatted into a format based on Vimeo’s\u003C\u002Fp>\n\u003Cp>You can count on the full feeds returning the following content with an exception being that single preview feeds do not have the feed title or url.\u003C\u002Fp>\n\u003Cp>Also, with YouTube’s v3 API enabled, rating, likeCount and viewCount will always be empty strings since you must use OAuth2 and be a verified content owner:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>object\n    'title' => string\n    'url' => string\n    'videos' => array\n        0 => object\n            'title' => string\n            'id' => string\n            'url' => string\n            'upload_date' => string\n            'description' => string\n            'category' => string\n            'duration' => string\n            'rating' => string\n            'likeCount' => string\n            'viewCount' => string\n            'width' => string\n            'height' => string\n            'thumbnails' => array\n                'small' => string\n                'medium' => string\n                'large' => string\n                'cover' => string       \u002F\u002F since 1.2.0 -- set to the largest available image.\n\u003C\u002Fcode>\u003C\u002Fpre>\n","Shortcodes for YouTube and Vimeo. Includes embeds, \"Theater\" embed, thumbed previews, playlist, channel, user uploads and groups.",200,14124,92,5,"2015-04-26T16:18:00.000Z","4.2.39","3.6",[73,51,74,75,18],"embed","video","vimeo-shortcode","http:\u002F\u002Fredshiftstudio.com\u002Fwp-theater\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-theater.1.2.3.zip",{"slug":79,"name":80,"version":81,"author":82,"author_profile":83,"description":84,"short_description":85,"active_installs":11,"downloaded":86,"rating":13,"num_ratings":13,"last_updated":87,"tested_up_to":88,"requires_at_least":89,"requires_php":90,"tags":91,"homepage":95,"download_link":96,"security_score":21,"vuln_count":13,"unpatched_count":13,"last_vuln_date":22,"fetched_at":56},"display-dynamic-shorts-for-youtube-with-shortcode","Display Dynamic Shorts for YouTube With Shortcode","1.0.0","tolue","https:\u002F\u002Fprofiles.wordpress.org\u002Ftolue\u002F","\u003Cp>Display YouTube Shorts directly on your WordPress site with a clean, responsive layout that works on all devices. Simply add your channel handle, customize the appearance, and use the shortcode to showcase shorts anywhere. The plugin automatically caches video data to improve loading speed, provides mobile-optimized views, and lets you control exactly which elements appear (titles, view counts, durations, etc.) to match your site’s design.\u003C\u002Fp>\n\u003Ch4>Key Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Channel Integration\u003C\u002Fstrong>: Display Shorts from any YouTube channel using the channel handle\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Responsive Design\u003C\u002Fstrong>: Optimized grid layout for desktop and smooth slider for mobile devices\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Customizable Display\u003C\u002Fstrong>: Show or hide video titles, view counts, timestamps, and more\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Caching System\u003C\u002Fstrong>: Built-in caching to optimize performance and reduce API calls\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Easy Implementation\u003C\u002Fstrong>: Simple shortcode to add Shorts anywhere on your site\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom Styling\u003C\u002Fstrong>: Adjust colors and layout to match your website’s design\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Lightweight & Fast\u003C\u002Fstrong>: Optimized code for quick loading times\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Use Cases\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Content creators showcasing their latest Shorts\u003C\u002Fli>\n\u003Cli>Businesses featuring product demonstrations or testimonials\u003C\u002Fli>\n\u003Cli>Educators displaying educational content\u003C\u002Fli>\n\u003Cli>Event websites highlighting event clips\u003C\u002Fli>\n\u003Cli>Bloggers enhancing posts with relevant video content\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>How to Use\u003C\u002Fh4>\n\u003Cp>Simply use the \u003Ccode>[dyshorts]\u003C\u002Fcode> shortcode to display Shorts on any page or post. You can customize the display using various shortcode attributes:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[dyshorts channel=\"ChannelName\" max=\"10\" columns=\"4\" cache=\"3600\"]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Requirements\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>WordPress 5.0 or higher\u003C\u002Fli>\n\u003Cli>PHP 7.0 or higher\u003C\u002Fli>\n\u003Cli>YouTube API Key (for accessing channel data)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Shortcode Parameters\u003C\u002Fh3>\n\u003Cp>The plugin supports the following shortcode parameters:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>channel\u003C\u002Fcode> – Channel handle without the @ symbol (e.g., “yourchannelname”)\u003C\u002Fli>\n\u003Cli>\u003Ccode>max\u003C\u002Fcode> – Number of Shorts to display (1-50)\u003C\u002Fli>\n\u003Cli>\u003Ccode>columns\u003C\u002Fcode> – Number of columns on desktop (2-6)\u003C\u002Fli>\n\u003Cli>\u003Ccode>cache\u003C\u002Fcode> – Cache duration in seconds (minimum 300)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Display Options\u003C\u002Fh3>\n\u003Cp>From the settings page, you can control these display elements:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Show\u002Fhide video title\u003C\u002Fli>\n\u003Cli>Show\u002Fhide view count\u003C\u002Fli>\n\u003Cli>Show\u002Fhide time ago\u003C\u002Fli>\n\u003Cli>Show\u002Fhide duration overlay\u003C\u002Fli>\n\u003Cli>Show\u002Fhide “Watch on YouTube” link\u003C\u002Fli>\n\u003Cli>Show\u002Fhide channel header section\u003C\u002Fli>\n\u003Cli>Show\u002Fhide channel avatar\u003C\u002Fli>\n\u003Cli>Show\u002Fhide channel name and subtitle\u003C\u002Fli>\n\u003Cli>Show\u002Fhide “Visit Channel” button\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Colors and layout can also be customized to match your website’s design.\u003C\u002Fp>\n\u003Ch3>External Services\u003C\u002Fh3>\n\u003Cp>This plugin connects to the YouTube Data API v3 to retrieve video data from YouTube channels. This API connection is necessary to display YouTube Shorts on your WordPress site.\u003C\u002Fp>\n\u003Ch4>YouTube Data API v3\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Service Purpose\u003C\u002Fstrong>: The plugin uses YouTube Data API v3 to search for channels, retrieve video lists, and get detailed information about YouTube Shorts videos.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>When API Calls Happen\u003C\u002Fstrong>: API requests are made when:\n\u003Cul>\n\u003Cli>A page containing the shortcode is loaded and the cached data has expired\u003C\u002Fli>\n\u003Cli>Plugin settings are updated (to refresh the data)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Data Sent\u003C\u002Fstrong>:\n\u003Cul>\n\u003Cli>YouTube channel handles\u002FIDs provided in the plugin settings or shortcode\u003C\u002Fli>\n\u003Cli>API key (provided by you in the plugin settings)\u003C\u002Fli>\n\u003Cli>Standard API request parameters as required by YouTube API\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Data Retrieved\u003C\u002Fstrong>:\n\u003Cul>\n\u003Cli>Channel information (title, thumbnail URL)\u003C\u002Fli>\n\u003Cli>Video details (title, duration, view count, publish date)\u003C\u002Fli>\n\u003Cli>No personal user data is collected or transmitted\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Terms of Service and Privacy\u003C\u002Fstrong>:\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdevelopers.google.com\u002Fterms\u002F\" rel=\"nofollow ugc\">Google APIs Terms of Service\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fpolicies.google.com\u002Fprivacy\" rel=\"nofollow ugc\">Google Privacy Policy\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The plugin caches all requests to minimize API usage and improve performance. The cache duration is configurable in the plugin settings.\u003C\u002Fp>\n\u003Cp>Note: You will need to create your own Google API key with YouTube Data API v3 enabled to use this plugin. The plugin includes fallback data if no API key is provided, but live data from YouTube channels requires a valid API key.\u003C\u002Fp>\n","Display YouTube Shorts from any channel in a responsive grid or slider layout with customizable options and dynamic loading.",412,"2025-05-31T20:20:00.000Z","6.8.5","5.0","7.0",[92,74,93,18,94],"dynamic-youtube","youtube","youtube-shorts-carousel","https:\u002F\u002Ftolue.net\u002Fplugins\u002Fshorts-for-youtube","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fdisplay-dynamic-shorts-for-youtube-with-shortcode.1.0.0.zip",{"attackSurface":98,"codeSignals":143,"taintFlows":162,"riskAssessment":163,"analyzedAt":173},{"hooks":99,"ajaxHandlers":134,"restRoutes":135,"shortcodes":136,"cronEvents":141,"entryPointCount":142,"unprotectedCount":13},[100,106,110,115,119,122,126,130],{"type":101,"name":102,"callback":103,"file":104,"line":105},"action","admin_menu","plumwd_youtube_feed_menu","index.php",16,{"type":101,"name":107,"callback":108,"file":104,"line":109},"init","plumwd_youtube_shortcodes",66,{"type":111,"name":112,"callback":113,"file":104,"line":114},"filter","mce_external_plugins","add_plugin_sc_plumwd_youtube",144,{"type":111,"name":116,"callback":117,"file":104,"line":118},"mce_buttons","register_button_sc_plumwd_youtube",145,{"type":101,"name":107,"callback":120,"file":104,"line":121},"add_button_sc_plumwd_youtube",147,{"type":101,"name":123,"callback":124,"file":104,"line":125},"wp_enqueue_scripts","plumwd_yt_enqueue_scripts",169,{"type":111,"name":127,"callback":128,"file":104,"line":129},"admin_footer_text","plumwd_youtube_feed_admin_footer_text",178,{"type":101,"name":131,"callback":132,"file":104,"line":133},"admin_enqueue_scripts","plumwd_youtube_feed_enqueue_scripts",189,[],[],[137],{"tag":138,"callback":139,"file":104,"line":140},"plumwd_youtube_display","display_plumwd_youtube_feed",64,[],1,{"dangerousFunctions":144,"sqlUsage":145,"outputEscaping":147,"fileOperations":160,"externalRequests":142,"nonceChecks":13,"capabilityChecks":13,"bundledLibraries":161},[],{"prepared":13,"raw":13,"locations":146},[],{"escaped":13,"rawEcho":68,"locations":148},[149,152,154,156,158],{"file":104,"line":150,"context":151},45,"raw output",{"file":104,"line":153,"context":151},131,{"file":104,"line":155,"context":151},133,{"file":104,"line":157,"context":151},134,{"file":104,"line":159,"context":151},135,2,[],[],{"summary":164,"deductions":165},"The \"youtube-video-feed\" v1.1 plugin exhibits a mixed security posture.  On the positive side, it has no recorded vulnerabilities in its history, no dangerous functions, and all SQL queries utilize prepared statements. The attack surface is minimal, with only one shortcode and no AJAX handlers or REST API routes that are unprotected.\n\nHowever, several significant security concerns are present in the static analysis. The most critical finding is that 0% of the outputs are properly escaped. This means that any data displayed by the plugin, particularly if it originates from user input or external sources, is vulnerable to Cross-Site Scripting (XSS) attacks.  The absence of nonce checks and capability checks on its entry points, while currently minimal, leaves the door open for potential unauthorized actions or privilege escalation if the attack surface were to grow or if vulnerabilities were introduced in the future.\n\nGiven the clean vulnerability history, it's possible the plugin's current limited functionality and lack of complex data handling have prevented known vulnerabilities. However, the unescaped output is a significant and actionable risk that needs immediate attention. The plugin would benefit from implementing proper output sanitization to mitigate XSS risks and considering nonces and capability checks for future development, even with a small attack surface.",[166,169,171],{"reason":167,"points":168},"All outputs are unescaped, posing XSS risk.",15,{"reason":170,"points":68},"No nonce checks on entry points.",{"reason":172,"points":68},"No capability checks on entry points.","2026-03-16T23:19:46.717Z",{"wat":175,"direct":184},{"assetPaths":176,"generatorPatterns":180,"scriptPaths":181,"versionParams":183},[177,178,179],"\u002Fwp-content\u002Fplugins\u002Fyoutube-video-feed\u002Fcss\u002Fyoutubestyle.css","\u002Fwp-content\u002Fplugins\u002Fyoutube-video-feed\u002Fcss\u002Fadmin-style.css","\u002Fwp-content\u002Fplugins\u002Fyoutube-video-feed\u002Fscripts\u002Fshortcode.js",[],[182],"\u002Fyoutube-video-feed\u002Fscripts\u002Fshortcode.js",[],{"cssClasses":185,"htmlComments":189,"htmlAttributes":190,"restEndpoints":194,"jsGlobals":195,"shortcodeOutput":196},[186,187,188],"youtube-feed-welcome","youtubefeed","credit",[],[191,192,193],"id=\"youtubeh1\"","id=\"wrap\"","id=\"youtube_feed\"",[],[],[197,198],"[plumwd_youtube_display]","echo do_shortcode('[plumwd_youtube_display]');"]