[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fEhpNCO1ybERUTbPzrl7m6j38DL5NiInWHKSqno7Vums":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":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":25,"download_link":26,"security_score":27,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30,"vulnerabilities":31,"developer":32,"crawl_stats":29,"alternatives":39,"analysis":126,"fingerprints":242},"wpr-general-posts-widget","WPR General Posts","1.3.0","aryanduntley","https:\u002F\u002Fprofiles.wordpress.org\u002Fdunar21\u002F","\u003Cp>With the general posts widget, you can place a list of posts into your widget areas based on any query parameters available in WP_QUERY.  You can generate the latest posts, popular posts (given you have some method of tracking post hits), post types, filter by category or other taxonomy, filter by post meta, etc…  If it’s available in WP_QUERY it’s available to you in the widget.  If there are customizations that the interface does not allow for, there are a number of hooks that allow you to edit and control pretty much any part of the widget from adjusting the query to adjusting the output.\u003C\u002Fp>\n\u003Ch4>Please Note\u003C\u002Fh4>\n\u003Cp>There is no styling associated with this plugin.  If you wish to style the output, assign a class and\u002For an ID to the widget and style appropriately in your style.css file.\u003C\u002Fp>\n\u003Cblockquote>\n\u003Ch4>Available Hooks\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ccode>add_filter( 'widget_title', 'my_Func'); function my_Func($title){return $title;}\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>add_filter('wpr_adjust_genposts_query','my_Func', 10, 3); function my_Func( $queryargs, $widgetargs, $instance){return $queryargs}\u003C\u002Fcode>\u003Cbr \u002F>\n  \u003Ccode>$widgetargs\u003C\u002Fcode> contains things like \u003Ccode>before_widget\u003C\u002Fcode> and \u003Ccode>after_widget\u003C\u002Fcode>.  \u003Ccode>$instance\u003C\u002Fcode> contains the widget params you added in the UI.\u003C\u002Fli>\n\u003Cli>\u003Ccode>add_filter('wpr_genposts_titlefilter', 'my_Func', 10, 6); function my_Func($fintitle, $before_title, $title, $after_title, $instance){return $fintitle}\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>add_filter\u003C\u002Fcode>(‘wpr_genposts_listloop’, ‘my_Func’, 10, 5); function my_Func($thisprint, $found_posts, $post, $count, $instance){return $thisprint;}\u003Cbr \u002F>\n  This filter is within the loop that prints the \u003Ccode>\u003Cli>'s\u003C\u002Fcode>.  \u003Ccode>$thisprint\u003C\u002Fcode> is the final string containing all the html including the \u003Ccode>\u003Cli>\u003C\u002Fcode> opening and closing tags. This filter will likely be the one used the most.  By default, this outputs the featured image (if one exists) and the title.  That’s all.  In order to edit the output of the loop, you would want to edit your my_Func function to something else, utilizing the $post variable which contains all the post information (title, excerpt, content, permalink, ect…).  This is up to you to customize however you wish.  I’m sure the support area will fill up with questions in regards to outputting the lists in a certain fashion.  Most people will not read or understand this that I wrote here and many examples will likely sprout up in the support section, so stay tuned and read through those (unless you are the very first to ask for support) before posting a support question.  This plugin is free and support should not be expected.  I will have a general support license available at a later time, for all WPR plugins, but for now, don’t expect, but be grateful if I do answer.  I’m usually good about it though.\u003C\u002Fli>\n\u003Cli>\u003Ccode>add_filter('wpr_genposts_addtoend', 'my_Func', 10, 2); function my_Func($readingon, $instance){return $readingon;}\u003C\u002Fcode>\u003Cbr \u002F>\n  This filter allows you to customize the read more link that is shown after all the posts are displayed.  The final text\u002Fhtml is the \u003Ccode>$readingon\u003C\u002Fcode> variable and the \u003Ccode>$instance\u003C\u002Fcode> provides you with all the widget instance params you supplied in the widget interface.\u003C\u002Fli>\n\u003Cli>\u003Ccode>add_filter('wpr_genposts_list_print', 'my_Func', 10, 6); function my_Func($finalprint, $openprint, $toprint, $closeprint, $instance, $wpQuery){return $finalprint;}\u003C\u002Fcode>\u003Cbr \u002F>\n  This supplies the final list with the container divs and everything else.  \u003Ccode>$openprint\u003C\u002Fcode> contains the opening div with the id and class supplied by the widget interface.  It also includes the openieng \u003Ccode>\u003Cul>\u003C\u002Fcode> tag.  \u003Ccode>$closeprint\u003C\u002Fcode> contains all the closure tags for the \u003Ccode>$openprint\u003C\u002Fcode> as well as the readmore link\u002Ftext.  \u003Ccode>$toprint\u003C\u002Fcode> contains everything in between (the result of the query contained in \u003Ccode>\u003Cli>\u003C\u002Fcode> tags). \u003Ccode>$wpQuery\u003C\u002Fcode> contains the WP_Query instance, which can be used for pagination or anything else where the data provided could be useful. To add pagination, something like this would work:\u003Cbr \u002F>\n  \u003Ccode>function homeAddPages($finalprint, $openprint, $toprint, $closeprint, $instance, $postsQ){\u003Cbr \u002F>\n  $big = 999999999;\u003Cbr \u002F>\n  $cpage = get_query_var('paged')?get_query_var('paged'):0;\u003Cbr \u002F>\n  if(!isset($cpage) || $cpage == \"\" || $cpage === 0){\u003Cbr \u002F>\n      $cpage = get_query_var('page')?get_query_var('page'):1;\u003Cbr \u002F>\n  }\u003Cbr \u002F>\n  $addclose = paginate_links( array(\u003Cbr \u002F>\n      'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),\u003Cbr \u002F>\n      'format' => '?paged=%#%',\u003Cbr \u002F>\n      'current' => max( 1, $cpage),\u003Cbr \u002F>\n      'total' => $postsQ->max_num_pages\u003Cbr \u002F>\n  ) );\u003Cbr \u002F>\n  return $openprint . $toprint . $closeprint . '\u003Cdiv class=\"hpaginator\">' . $addclose . '\u003C\u002Fdiv>';\u003Cbr \u002F>\n  }\u003Cbr \u002F>\n  add_filter('wpr_genposts_list_print', 'homeAddPages', 10, 6);\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>add_filter('wpr_adjust_genposts_beforewidget', 'my_Func', 10, 3); function my_Func($before_widget, $post_widgeid, $post_widgeclass){return $before_widget;}\u003C\u002Fcode>\u003Cbr \u002F>\n  This allows you to modify the before widget string which contains the wrapper div with id and class. You have access to the ID and Class you defined within the widget in order to tell instances apart from each other.\u003Cbr \u002F>\n  \u003Ccode>unction wpr_changeBeforeWidget($before_widget, $post_widgeid, $post_widgeclass){\u003Cbr \u002F>\n  if($post_widgeid == 'theothers'){\u003Cbr \u002F>\n      return str_replace('class=\"', 'class=\"theothersblock ', $before_widget);\u003Cbr \u002F>\n  }\u003Cbr \u002F>\n  if($post_widgeid == 'thefeatured'){\u003Cbr \u002F>\n      return str_replace('class=\"', 'class=\"thefeaturedblock ', $before_widget);\u003Cbr \u002F>\n  }\u003Cbr \u002F>\n  return $before_widget;\u003Cbr \u002F>\n  }\u003Cbr \u002F>\n  add_filter('wpr_adjust_genposts_beforewidget', 'wpr_changeBeforeWidget', 10, 3);\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>add_filter('wpr_adjust_genposts_afterwidget', 'my_Func', 10, 3); function my_Func($after_widget, $post_widgeid, $post_widgeclass){return $after_widget;}\u003C\u002Fcode>\u003Cbr \u002F>\n  This is identical to the wpr_adjust_genposts_beforewidget hook except this one allows you to modify the after widget string. These last two allow you direct control over each individual widget container. These before and after strings are set in the register_sidebar function when creating the sidebars, but they are generic for all widgets in that sidebar and WP does not offer any hooks to modify this directly. There is a workaround to add the action for register_sidebar, get the sidebar object and then adjust the $wp_registered_sidebars global, but in order to do this, you would have to know the order id number of the specific widget. Doing it that way can be problematic.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fblockquote>\n\u003Cblockquote>\n\u003Ch4>Instance Variables\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ccode>$title = apply_filters( 'widget_title', $instance['title'] );\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>$post_amount = $instance['show'];\u003C\u002Fcode> This is the posts per page (total posts to show)\u003C\u002Fli>\n\u003Cli>\u003Ccode>$post_orderby = $instance['orderby'];\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>$post_order = $instance['order'];\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>$post_catin = $instance['catin'];\u003C\u002Fcode> Category In\u003C\u002Fli>\n\u003Cli>\u003Ccode>$post_catout = $instance['catout'];\u003C\u002Fcode> Category Exclude\u003C\u002Fli>\n\u003Cli>\u003Ccode>$pagecount = $instance['pagecount'];\u003C\u002Fcode> Numer of Posts to show (not used, this is so you can define total posts to query and number to show per tabbed interface which is not implemented in the plugin, but available for hooking)\u003C\u002Fli>\n\u003Cli>\u003Ccode>$post_taxis = $instance['taxis'];\u003C\u002Fcode> Taxonamy slug\u003C\u002Fli>\n\u003Cli>\u003Ccode>$post_taxterm = $instance['taxterm'];\u003C\u002Fcode> Taxonomy term ids, comma separated list\u003C\u002Fli>\n\u003Cli>\u003Ccode>$post_typed = $instance['ptipe'];\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>$post_metakey = $instance['metakey'];\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>$post_metavalue = $instance['metavalue'];\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>$post_comparison = $instance['metacompare'];\u003C\u002Fcode> Meta comparison operator\u003C\u002Fli>\n\u003Cli>\u003Ccode>$post_widgeid = $instance['widgetidentifier'];\u003C\u002Fcode> Widget Container ID\u003C\u002Fli>\n\u003Cli>\u003Ccode>$post_widgeclass = $instance['widgetclassifier'];\u003C\u002Fcode> Widget Container Class\u003C\u002Fli>\n\u003Cli>\u003Ccode>$post_readmoretitle = $instance['readmoretitle'];\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>$post_readmorelink = $instance['readmorelink'];\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fblockquote>\n\u003Cp>Plugin site: \u003Ca href=\"http:\u002F\u002Fworldpressrevolution.com\u002Fwpr_myplugins\u002Fwpr-general-posts-widget\u002F\" title=\"Aryan Duntley's Worldpress Revolution wordpress tutorials\" rel=\"nofollow ugc\">WorldpressRevolution\u003C\u002Fa>\u003C\u002Fp>\n","Gives you full control of a post listing widget.",10,2054,100,1,"2018-04-09T17:27:00.000Z","4.9.29","3.0.1","",[20,21,22,23,24],"popular-posts","posts-widget","recent-post","recent-posts","recent-posts-widget","http:\u002F\u002Fworldpressrevolution.com\u002Fwpr_myplugins\u002Fwpr-general-posts-widget\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwpr-general-posts-widget.zip",85,0,null,"2026-03-15T15:16:48.613Z",[],{"slug":33,"display_name":7,"profile_url":8,"plugin_count":34,"total_installs":35,"avg_security_score":27,"avg_patch_time_days":36,"trust_score":37,"computed_at":38},"dunar21",3,120,30,84,"2026-04-04T16:46:24.937Z",[40,61,78,94,109],{"slug":41,"name":42,"version":43,"author":44,"author_profile":45,"description":46,"short_description":47,"active_installs":48,"downloaded":49,"rating":50,"num_ratings":51,"last_updated":52,"tested_up_to":53,"requires_at_least":54,"requires_php":18,"tags":55,"homepage":59,"download_link":60,"security_score":27,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"tw-recent-posts-widget","TW Recent Posts Widget","1.0.5","tweetysha","https:\u002F\u002Fprofiles.wordpress.org\u002Ftweetysha\u002F","\u003Cp>TW Recent Posts Widget is advanced version of the WordPress Recent Posts widget allowing increased customization to display recent posts from category you define.\u003C\u002Fp>\n\u003Cp>Output will depend on your settings, and you may define to set post title, post date, featured image and post excerpt.\u003C\u002Fp>\n\u003Cp>If you set to display featured image, than you will be able to define image width and height in px.\u003C\u002Fp>\n\u003Cp>If you set to display excerpt, than you will be able to define how many characters to print and also you may add custom \u003Ccode>read more\u003C\u002Fcode> text.\u003C\u002Fp>\n","A simple and flexible widget for WordPress which will show recent posts from selected category allowing increased customization to display recent post &hellip;",1000,69153,88,15,"2017-11-28T16:18:00.000Z","4.4.34","3.0",[56,57,58,23,24],"advanced-recent-posts","advanced-recent-posts-widget","category","http:\u002F\u002Fvuckovic.biz\u002Fwordpress-plugins\u002Ftw-recent-posts-widget","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ftw-recent-posts-widget.zip",{"slug":62,"name":63,"version":64,"author":65,"author_profile":66,"description":67,"short_description":68,"active_installs":13,"downloaded":69,"rating":13,"num_ratings":70,"last_updated":71,"tested_up_to":53,"requires_at_least":17,"requires_php":18,"tags":72,"homepage":76,"download_link":77,"security_score":27,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"pro-recent-post-widget","Pro Recent Post Widget","1.1","Shambhu Patnaik","https:\u002F\u002Fprofiles.wordpress.org\u002Fshambhu-patnaik\u002F","\u003Cp>Pro Recent Post Widget plugin.You have choice to specific category recent post show.exclude any category,exclude any post\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Features\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Col>\n\u003Cli>You have choice to specific category recent post show.\u003C\u002Fli>\n\u003Cli>exclude any post.\u003C\u002Fli>\n\u003Cli>exclude any category.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>More Detail : http:\u002F\u002Fsocialcms.wordpress.com\u002F\u003C\u002Fp>\n","Pro Recent Post Widget plugin.You have choice to specific category recent post show.exclude any category,exclude any post",5284,2,"2015-12-18T13:17:00.000Z",[57,73,74,62,75],"custom-recent-post","exclude-post","widget","http:\u002F\u002Fsocialcms.wordpress.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpro-recent-post-widget.zip",{"slug":79,"name":80,"version":81,"author":82,"author_profile":83,"description":84,"short_description":85,"active_installs":13,"downloaded":86,"rating":13,"num_ratings":87,"last_updated":88,"tested_up_to":81,"requires_at_least":81,"requires_php":18,"tags":89,"homepage":92,"download_link":93,"security_score":27,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"service-boxes-widgets-text-icon","Service Boxes Widgets Text Icon","1.0.1","Mahabub Hasan","https:\u002F\u002Fprofiles.wordpress.org\u002Fmahabub-hasan\u002F","\u003Cp>Basically it just a WordPress “Service Boxes Text Widget” but with additional icon font selector based on \u003Ca href=\"http:\u002F\u002Ffortawesome.github.io\u002FFont-Awesome\u002F\" rel=\"nofollow ugc\">FontAwesome\u003C\u002Fa>. The Icon will display Top, bottom, Left, Right to widget title.\u003Cbr \u002F>\nFont Awesome is my favorite of the free font icon sets.All of the 220 pixel perfect icons,have great cross-browser support and are easy to use.\u003Cbr \u002F>\nI wanted to be able to use the icons without having to rely on my current theme, so I created a simple WordPress widget Text plugin.\u003C\u002Fp>\n\u003Cp>Easy to configure CSS\u003C\u002Fp>\n\u003Cp>Credits\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Author URI: http:\u002F\u002Fbdwebteam.com\u003C\u002Fli>\n\u003Cli>Support Email: m.manik01@gmail.com\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Implement\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Go to the wp admin Widget page.\u003C\u002Fli>\n\u003Cli>Drag and drop “Service Boxes Widgets Text Icon” into active sidebar.\u003C\u002Fli>\n\u003C\u002Fol>\n","Service Boxes Widgets Text Icon will display Top, bottom, Left, Right for widget title.",11783,4,"2015-06-29T19:47:00.000Z",[56,57,90,91,75],"fontawesome","icons","http:\u002F\u002Fplugin.bdwebteam.com\u002Fservice-boxes-widgets-text-icon\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fservice-boxes-widgets-text-icon.zip",{"slug":95,"name":96,"version":97,"author":82,"author_profile":83,"description":98,"short_description":99,"active_installs":100,"downloaded":101,"rating":13,"num_ratings":70,"last_updated":102,"tested_up_to":103,"requires_at_least":81,"requires_php":18,"tags":104,"homepage":107,"download_link":108,"security_score":27,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"responsive-posts-widget","Responsive Posts Widget","1.0.3","\u003Cp>Responsive Posts Widget is advanced version of the WordPress Recent Responsive Posts  widget allowing increased customization to display recent posts from category,Order by,time limit you define.\u003Cbr \u002F>\nOutput will depend on your settings, and you may define to set post title,post title url, post date, featured image ,post excerpt and read more,post author,post comments.\u003Cbr \u002F>\nIf you set to display title, than you will be able to define how many characters to print.\u003Cbr \u002F>\nIf you set to display featured image, than you will be able to define image width and height in px.\u003Cbr \u002F>\nIf you set to display excerpt, than you will be able to define how many characters to print and also you may add custom read more text.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>You can create custom titles\u003C\u002Fli>\n\u003Cli>You can create titles url\u003C\u002Fli>\n\u003Cli>You can create titles & content limit\u003C\u002Fli>\n\u003Cli>You can set how many posts you wish to display  \u003C\u002Fli>\n\u003Cli>You can select any category \u003C\u002Fli>\n\u003Cli>You can choose from predefined image sizes,or set custom width and height\u003C\u002Fli>\n\u003Cli>You can choose to define the featured image\u003C\u002Fli>\n\u003Cli>You can run as many instances of the widget that you want to!\u003C\u002Fli>\n\u003Cli>You can order your posts randomly   \u003C\u002Fli>\n\u003Cli>You can order your posts time\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Easy to configure CSS\u003Cbr \u002F>\nYou can check demo on following pages.\u003Cbr \u002F>\nhttp:\u002F\u002Fplugin.bdwebteam.com\u002Fresponsive-posts-widget\u002F\u003C\u002Fp>\n\u003Cp>Credits\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Author URI: http:\u002F\u002Fbdwebteam.com\u003C\u002Fli>\n\u003Cli>Support Email: m.manik01@gmail.com\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Recommended WordPress Plugins\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fservice-boxes-widgets-text-icon\u002F\" rel=\"ugc\">Service Boxes Widgets Text Icon\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fbdwebteam-recent-post-tabs-widget\u002F\" rel=\"ugc\">bdwebteam recent post tabs widget\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Implement\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Go to the wp admin Widget page.\u003C\u002Fli>\n\u003Cli>Drag and drop “Responsive Posts Widget” into active sidebar.\u003C\u002Fli>\n\u003C\u002Fol>\n","Adds a widget that shows the most recent posts of your site with excerpt, featured image, date by sorting & ordering feature",60,5370,"2015-10-19T09:15:00.000Z","4.2.39",[56,57,58,105,106],"post-plugins","posts","http:\u002F\u002Fplugin.bdwebteam.com\u002Fresponsive-posts-widget","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fresponsive-posts-widget.1.0.3.zip",{"slug":110,"name":111,"version":112,"author":113,"author_profile":114,"description":115,"short_description":116,"active_installs":117,"downloaded":118,"rating":13,"num_ratings":70,"last_updated":119,"tested_up_to":120,"requires_at_least":121,"requires_php":18,"tags":122,"homepage":124,"download_link":125,"security_score":27,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"pm-truncated-recent-posts","Truncate Recent Posts Titles","1.0","pmclain","https:\u002F\u002Fprofiles.wordpress.org\u002Fpmclain\u002F","\u003Cp>Maintain layout formatting when post titles are too long. Plugin allows admin to set maximum title characters and define truncation padding.\u003C\u002Fp>\n","Recent Posts Widget with truncated post titles.",20,1694,"2016-11-30T05:36:00.000Z","4.7.32","4.3.1",[24,123],"truncate","https:\u002F\u002Fpmclain.com\u002Ftruncated-recent-posts-widget-for-wordpress.html","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpm-truncated-recent-posts.zip",{"attackSurface":127,"codeSignals":141,"taintFlows":234,"riskAssessment":235,"analyzedAt":241},{"hooks":128,"ajaxHandlers":137,"restRoutes":138,"shortcodes":139,"cronEvents":140,"entryPointCount":28,"unprotectedCount":28},[129,135],{"type":130,"name":131,"callback":132,"file":133,"line":134},"action","widgets_init","garden_register_general_posts_widget","1.3.0\\wpr-general-posts.php",305,{"type":130,"name":131,"callback":132,"file":136,"line":134},"wpr-general-posts.php",[],[],[],[],{"dangerousFunctions":142,"sqlUsage":143,"outputEscaping":145,"fileOperations":28,"externalRequests":28,"nonceChecks":28,"capabilityChecks":28,"bundledLibraries":233},[],{"prepared":28,"raw":28,"locations":144},[],{"escaped":146,"rawEcho":100,"locations":147},40,[148,151,153,155,157,159,161,163,165,166,168,170,172,174,175,177,179,181,183,185,186,188,190,191,193,194,196,198,199,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232],{"file":133,"line":149,"context":150},97,"raw output",{"file":133,"line":152,"context":150},158,{"file":133,"line":154,"context":150},160,{"file":133,"line":156,"context":150},219,{"file":133,"line":158,"context":150},221,{"file":133,"line":160,"context":150},223,{"file":133,"line":162,"context":150},226,{"file":133,"line":164,"context":150},231,{"file":133,"line":164,"context":150},{"file":133,"line":167,"context":150},239,{"file":133,"line":169,"context":150},240,{"file":133,"line":171,"context":150},243,{"file":133,"line":173,"context":150},247,{"file":133,"line":173,"context":150},{"file":133,"line":176,"context":150},254,{"file":133,"line":178,"context":150},260,{"file":133,"line":180,"context":150},262,{"file":133,"line":182,"context":150},264,{"file":133,"line":184,"context":150},269,{"file":133,"line":184,"context":150},{"file":133,"line":187,"context":150},276,{"file":133,"line":189,"context":150},280,{"file":133,"line":189,"context":150},{"file":133,"line":192,"context":150},282,{"file":133,"line":192,"context":150},{"file":133,"line":195,"context":150},285,{"file":133,"line":197,"context":150},289,{"file":133,"line":197,"context":150},{"file":133,"line":200,"context":150},294,{"file":133,"line":202,"context":150},296,{"file":136,"line":149,"context":150},{"file":136,"line":152,"context":150},{"file":136,"line":154,"context":150},{"file":136,"line":156,"context":150},{"file":136,"line":158,"context":150},{"file":136,"line":160,"context":150},{"file":136,"line":162,"context":150},{"file":136,"line":164,"context":150},{"file":136,"line":164,"context":150},{"file":136,"line":167,"context":150},{"file":136,"line":169,"context":150},{"file":136,"line":171,"context":150},{"file":136,"line":173,"context":150},{"file":136,"line":173,"context":150},{"file":136,"line":176,"context":150},{"file":136,"line":178,"context":150},{"file":136,"line":180,"context":150},{"file":136,"line":182,"context":150},{"file":136,"line":184,"context":150},{"file":136,"line":184,"context":150},{"file":136,"line":187,"context":150},{"file":136,"line":189,"context":150},{"file":136,"line":189,"context":150},{"file":136,"line":192,"context":150},{"file":136,"line":192,"context":150},{"file":136,"line":195,"context":150},{"file":136,"line":197,"context":150},{"file":136,"line":197,"context":150},{"file":136,"line":200,"context":150},{"file":136,"line":202,"context":150},[],[],{"summary":236,"deductions":237},"The \"wpr-general-posts-widget\" plugin, version 1.3.0, exhibits a strong security posture based on the provided static analysis. The absence of any identified attack surface points, such as unprotected AJAX handlers, REST API routes, shortcodes, or cron events, is a significant strength. Furthermore, the code demonstrates good practices by avoiding dangerous functions, file operations, and external HTTP requests. The fact that all SQL queries utilize prepared statements is commendable and mitigates risks of SQL injection.  However, a notable concern is the output escaping, with only 40% of outputs being properly escaped. This leaves room for potential Cross-Site Scripting (XSS) vulnerabilities if user-controlled data is directly outputted without sufficient sanitization in the remaining 60% of cases.  The plugin's vulnerability history is clean, with no known CVEs, which suggests a history of secure development or infrequent security scrutiny. While the lack of historical vulnerabilities is positive, it does not negate the potential risks identified in the current static analysis regarding output escaping. The overall security is good due to the limited attack surface and secure database practices, but the partial output escaping is a weakness that requires attention.",[238],{"reason":239,"points":240},"Incomplete output escaping",6,"2026-03-17T00:56:29.192Z",{"wat":243,"direct":250},{"assetPaths":244,"generatorPatterns":247,"scriptPaths":248,"versionParams":249},[245,246],"\u002Fwp-content\u002Fplugins\u002Fwpr-general-posts-widget\u002Fwpr-general-posts-widget.js","\u002Fwp-content\u002Fplugins\u002Fwpr-general-posts-widget\u002Fwpr-general-posts-widget.css",[],[245],[],{"cssClasses":251,"htmlComments":256,"htmlAttributes":257,"restEndpoints":259,"jsGlobals":260,"shortcodeOutput":262},[252,253,254,255],"list-post-widget-home","genposts_linktitle","widget-area-imbed","wpr_genpost_readmore",[],[258],"id=\"postwidg",[],[261],"window.wpr_genposts_args",[]]