[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fPYkLQcUhrNrkxOLdVByrfBE_W5jfAxqzSRwWmYCeUtk":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":15,"tags":18,"homepage":22,"download_link":23,"security_score":24,"vuln_count":25,"unpatched_count":25,"last_vuln_date":26,"fetched_at":27,"vulnerabilities":28,"developer":29,"crawl_stats":26,"alternatives":33,"analysis":147,"fingerprints":414},"scuba-logger","Scuba Logger","0.1.8","wp_aengus","https:\u002F\u002Fprofiles.wordpress.org\u002Fwp_aengus\u002F","\u003Cp>The Scuba Logger plugin extends the functionality of wordpress so that it becomes an online interactive dive log. From the admin section, details of scuba dives can be entered. Once they have been entered, dive summaries can be easily included in blog posts using shortcodes (e.g. [scubalogger type=”dive” divenum=”1″]). In addition, a shortcode can be used to generate a ‘Query Page’ from which the dive log can be searched. You can search for ‘all dives greater than 30 metres on a wreck’ for example. Finally, shortcodes can be used to include statistics of your dive log in blog posts. For example, you can include the total number of minutes spent underwater using [scubalogger type=”logstat” detail=”timeunderwater”].\u003C\u002Fp>\n","This plugin turns a wordpress blog into an interactive online scuba dive log.",10,1660,80,1,"","3.9.40","3.0.1",[19,20,21],"dive","log","scuba","http:\u002F\u002Fwww.am-process.org\u002Fscuba\u002F?page_id=974","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fscuba-logger.0.1.8.zip",100,0,null,"2026-03-15T10:48:56.248Z",[],{"slug":7,"display_name":7,"profile_url":8,"plugin_count":14,"total_installs":11,"avg_security_score":24,"avg_patch_time_days":30,"trust_score":31,"computed_at":32},30,94,"2026-04-05T17:24:33.623Z",[34,60,81,103,123],{"slug":35,"name":36,"version":37,"author":38,"author_profile":39,"description":40,"short_description":41,"active_installs":42,"downloaded":43,"rating":44,"num_ratings":45,"last_updated":46,"tested_up_to":47,"requires_at_least":48,"requires_php":49,"tags":50,"homepage":55,"download_link":56,"security_score":57,"vuln_count":14,"unpatched_count":25,"last_vuln_date":58,"fetched_at":59},"divelogs-widget","Divelogs Widget","1.6","klemmkeil","https:\u002F\u002Fprofiles.wordpress.org\u002Fklemmkeil\u002F","\u003Cp>Displays your latest dive from divelogs.de \u002F divelogs.org in a widget.\u003Cbr \u002F>\nCurrently german, english, french, dutch, spanish, italian and hebrew are supported.\u003Cbr \u002F>\nYou can choose if you also want to display your dive’s profile graph.\u003Cbr \u002F>\nAlso provides a shortcode to display your latest dive or any specific dive in a page\u003C\u002Fp>\n","Displays your latest dive from divelogs.de in a widget",20,2883,66,3,"2025-12-10T20:33:00.000Z","6.9.4","5.0","7.4",[51,52,53,54,21],"divelogs","diving","latest-dive","logbook","https:\u002F\u002Fdivelogs.de\u002Fwordpress_plugin.php","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fdivelogs-widget.zip",99,"2025-12-11 14:46:32","2026-03-15T15:16:48.613Z",{"slug":61,"name":62,"version":63,"author":64,"author_profile":65,"description":66,"short_description":67,"active_installs":30,"downloaded":68,"rating":69,"num_ratings":70,"last_updated":71,"tested_up_to":72,"requires_at_least":73,"requires_php":15,"tags":74,"homepage":15,"download_link":80,"security_score":24,"vuln_count":25,"unpatched_count":25,"last_vuln_date":26,"fetched_at":59},"tootpress","TootPress","0.5","unmus","https:\u002F\u002Fprofiles.wordpress.org\u002Funmus\u002F","\u003Cp>TootPress copies your toots from Mastodon to WordPress continuously. The toots can be displayed chronologically in the blog, making your timeline accessible to other people outside of Mastodon. In addition, you regain ownership of your own data back.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Copy your toots back\u003C\u002Fli>\n\u003Cli>Copy your tooted images back\u003C\u002Fli>\n\u003Cli>Display your toots on the blog\u003C\u002Fli>\n\u003Cli>Retrieve your complete timeline\u003C\u002Fli>\n\u003Cli>Languague: English, German (only FrontEnd)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Live Demo\u003C\u002Fh4>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.unmus.de\u002Ftroets\u002F\" rel=\"nofollow ugc\">Here!\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Setup Manual\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Install the Plugin in WordPress\u003C\u002Fli>\n\u003Cli>Create an Application on your Mastodon Instance to get API Access (under Settings\u002FDevelopment)\u003C\u002Fli>\n\u003Cli>Restrict the Authorization of the created Application to Read (all data)\u003C\u002Fli>\n\u003Cli>Maintain Mastodon Instance and Access Token in the TootPress Settings\u003C\u002Fli>\n\u003Cli>Retrieve your Account ID (in WordPress under Tools\u002FToots)\u003C\u002Fli>\n\u003Cli>Maintain the Account ID in the TootPress Settings\u003C\u002Fli>\n\u003Cli>Create a new WordPress Page and add the Page to your Menu\u003C\u002Fli>\n\u003Cli>Maintain the Page ID in the TootPress Settings (you find the Page ID in URL of the Browser when editing the Page in WordPress)\u003C\u002Fli>\n\u003Cli>Run Mastodon API Request once (in WordPress under Tools\u002FToots)\u003C\u002Fli>\n\u003Cli>Activate Steady Fetch\u003C\u002Fli>\n\u003Cli>That’s it!\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Instructions for Use\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>You find TootPress in WordPress in the area of Settings and Tools\u003C\u002Fli>\n\u003Cli>Steady Fetch activates the automatic and regular load of new toots\u003C\u002Fli>\n\u003Cli>First API Request will copy your last 40 toots\u003C\u002Fli>\n\u003Cli>New toots will be loaded every 15 minutes (customizable)\u003C\u002Fli>\n\u003Cli>You can load your complete timeline into WordPress with the eponymous function\u003C\u002Fli>\n\u003Cli>Loading your complete timeline can take several hours depending of the amount of toots\u003C\u002Fli>\n\u003Cli>480 toots are loaded per hour as maximum\u003C\u002Fli>\n\u003Cli>You can run a Mastodon API Request everytime at your own with the eponymous function\u003C\u002Fli>\n\u003Cli>There is no prescribed order for the execution of Steady Fetch, Complete Timeline or manual requests\u003C\u002Fli>\n\u003Cli>If problems occur, TootPress provides a Healthy Check\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Further Information\u003C\u002Fh3>\n\u003Ch4>Supported Toot Objects\u003C\u002Fh4>\n\u003Cp>Following toot objects are supported.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Text\u003C\u002Fli>\n\u003Cli>Images\u003C\u002Fli>\n\u003Cli>Galleries\u003C\u002Fli>\n\u003Cli>URLs\u003C\u002Fli>\n\u003Cli>Hashtags\u003C\u002Fli>\n\u003Cli>Mentions\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Not supported Toot Objects\u003C\u002Fh4>\n\u003Cp>Following toot objects are not supported.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Audio\u003C\u002Fli>\n\u003Cli>Video\u003C\u002Fli>\n\u003Cli>Poll\u003C\u002Fli>\n\u003Cli>Teaser\u003C\u002Fli>\n\u003Cli>Quotes\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Excluded Toot Types\u003C\u002Fh4>\n\u003Cp>Following toot types are excluded from the data transfer.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Boosts\u003C\u002Fli>\n\u003Cli>Replys\u003C\u002Fli>\n\u003Cli>Private Toots\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Architecture\u003C\u002Fh4>\n\u003Cp>Data storage and process logic is separated from the WordPress Framework. The toots are not saved in the table wp_posts. And TootPress is not registering a custom post type for the toots as well.\u003C\u002Fp>\n\u003Ch4>CSS classes\u003C\u002Fh4>\n\u003Cp>TootPress comes with basic CSS Styles. For best fit it is required to add additional styles in your theme. All TootPress UI elements can be addressed with individual CSS selectors. Please use the browser development tools to find the right classes.\u003C\u002Fp>\n\u003Ch4>Data & Files\u003C\u002Fh4>\n\u003Cp>TootPress creates 2 folders within the WordPress Uploads Directory.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>tootpress-mastodonapidata = Archive of the received Mastodon API data\u003C\u002Fli>\n\u003Cli>tootpress-images = Toot Image Folder \u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>wpCrons\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Steady Fetch (every 15 minutes, customizable)\u003C\u002Fli>\n\u003Cli>Load Complete Timeline (every 5 minutes)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>TootPress API\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Action: tootpress_toots_update\u003C\u002Fstrong>\u003Cbr \u002F>\nIt will be fired after toot update to execute custom post-processing.\u003Cbr \u002F>\nYou can use the following code.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function tootpress_toots_update_postprocessing() {\n\n    \u002F\u002F Add your code to be executed here\n\n}\nadd_action('tootpress_toots_update', 'tootpress_toots_update_postprocessing');\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Filter: tootpress_preamble_filter\u003C\u002Fstrong>\u003Cbr \u002F>\nIt outputs html content before the toot loop.\u003Cbr \u002F>\nYou can use the following code.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function tootpress_preamble_add( $preamble ) {\n\n    \u002F\u002F Add your filter code here\n    \u002F\u002F Example: $preamble='\u003Cp>Hello World.\u003C\u002Fp>';\n\n    return $preamble;\n\n}\nadd_filter( 'tootpress_preamble_filter', 'tootpress_preamble_add', 10, 1 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Filter: tootpress_closing_filter\u003C\u002Fstrong>\u003Cbr \u002F>\nIt outputs html content after the last toot loop.\u003Cbr \u002F>\nYou can use the following code.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function tootpress_closing_add( $content ) {\n\n    \u002F\u002F Add your filter code here\n    \u002F\u002F Example: $content='\u003Cp>Hello World.\u003C\u002Fp>';\n\n    return $content;\n\n}\nadd_filter( 'tootpress_closing_filter', 'tootpress_closing_add', 10, 1 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Filter: tootpress_menu_forward_label\u003C\u002Fstrong>\u003Cbr \u002F>\nThis filter overwrites the forward label in the bottom navigation.\u003Cbr \u002F>\nYou can use the following code.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function tootpress_menu_forward_label_change( $label ) {\n\n    \u002F\u002F Add your filter code here\n    \u002F\u002F Example: $label='Newer Posts';\n\n    return $label;\n\n}\nadd_filter( 'tootpress_menu_forward_label', 'tootpress_menu_forward_label_change', 10, 1 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Filter: tootpress_menu_backward_label\u003C\u002Fstrong>\u003Cbr \u002F>\nThis filter overwrites the backward label in the bottom navigation.\u003Cbr \u002F>\nYou can use the following code.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function tootpress_menu_backward_label_change( $label ) {\n\n    \u002F\u002F Add your filter code here\n    \u002F\u002F Example: $label='Older Posts';\n\n    return $label;\n\n}\nadd_filter( 'tootpress_menu_backward_label', 'tootpress_menu_backward_label_change', 10, 1 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Filter: tootpress_beforeloop_filter\u003C\u002Fstrong>\u003Cbr \u002F>\nThis filter outputs content before the toot loop (on all tootpress pages).\u003Cbr \u002F>\nYou can use the following code.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function tootpress_beforeloop_filter_add( $content, $page_number ) {\n\n    \u002F\u002F Add your filter code here\n    \u002F\u002F Example: $content='\u003Cp>Page '.$page_number.'\u003C\u002Fp>';\n\n    return $label;\n\n}\nadd_filter( 'tootpress_beforeloop_filter', 'tootpress_beforeloop_filter_add', 10, 2 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Filter: tootpress_afterloop_filter\u003C\u002Fstrong>\u003Cbr \u002F>\nThis filter outputs content after the toot loop (on all tootpress pages).\u003Cbr \u002F>\nYou can use the following code.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function tootpress_afterloop_add( $content, $current_page_number, $last_page_number ) {\n\n    \u002F\u002F Add your filter code here\n    \u002F\u002F Example: $content='\u003Cp>Page '.$current_page_number.' of '.$last_page_number.'\u003C\u002Fp>';\n\n    return $content;\n\n}\nadd_filter( 'tootpress_afterloop_filter', 'tootpress_afterloop_add', 10, 3 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Filter: tootpress_mastodon_logo_filter\u003C\u002Fstrong>\u003Cbr \u002F>\nThis filter overwrites the Mastodon Logo with Custom Logo.\u003Cbr \u002F>\nYou can use the following code.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function tootpress_mastodon_logo_change ( $img ) {\n\n    \u002F\u002F Standard Value\n    \u002F\u002F \u003Cimg class=\"toot-symbol\" src=\"FILE-URL\" alt=\"Toot Symbol\" width=\"35\" height=\"37\"\u002F>\n\n    \u002F\u002F Add your filter code here\n    \u002F\u002F Example: $img='\u003Cimg class=\"toot-symbol\" src=\"FILE-URL\" alt=\"Custom Toot Symbol\" width=\"32\" height=\"32\"\u002F>';\n\n    return $img;\n\n}\nadd_filter( 'tootpress_mastodon_logo_filter', 'tootpress_mastodon_logo_change', 10, 1 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Filter: tootpress_between_filter\u003C\u002Fstrong>\u003Cbr \u002F>\nThis filter adds custom HTML between the toots.\u003Cbr \u002F>\nYou can use the following code.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function tootpress_create_element_between ( $content ) {\n\n    \u002F\u002F Add your filter code here\n    \u002F\u002F $content='\u003Chr\u002F>';\n\n    return $content;\n\n}\nadd_filter( 'tootpress_between_filter', 'tootpress_create_element_between', 10, 1 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Filter: tootpress_toot_content_filter\u003C\u002Fstrong>\u003Cbr \u002F>\nThis filter can be used to manipulate the toot content.\u003Cbr \u002F>\nYou can use the following code.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function tootpress_manipulate_content ( $content ) {\n\n    \u002F\u002F Add your filter code here\n    \u002F\u002F $content=str_replace('href=','target=\"_blank\" href=',$content); \n\n    return $content;\n\n}\nadd_filter( 'tootpress_toot_content_filter', 'tootpress_manipulate_content', 10, 1 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Filter: tootpress_date_filter\u003C\u002Fstrong>\u003Cbr \u002F>\nThis filter overwrites the date output with custom format.\u003Cbr \u002F>\nYou can use the following code.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function tootpress_date_custom_format ( $date, $year, $month, $day, $hour, $minute, $second ) {\n\n    \u002F\u002F $date = 2023-05-30 22:40:28\n    \u002F\u002F $year = 2023\n    \u002F\u002F $month = 05\n    \u002F\u002F $day = 30\n    \u002F\u002F $hour = 22\n    \u002F\u002F $minute = 40\n    \u002F\u002F $second = 28\n\n    \u002F\u002F Add your filter code here\n    \u002F\u002F $date=$day.'.'.$month.'.'.$year.' '.$hour.':'.$minute.':'.$second;\n\n    return $date;\n\n}\nadd_filter( 'tootpress_date_filter', 'tootpress_date_custom_format', 10, 7 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Filter: tootpress_image_filter\u003C\u002Fstrong>\u003Cbr \u002F>\nThis filter can be used to manipulate image tags.\u003Cbr \u002F>\nYou can use the following code.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function tootpress_image_manipulate ($img_tag,$filename,$description,$width,$height,$image_directory_path,$amount_of_images,$image_number) {\n\n    \u002F\u002F Amount of Images\n    \u002F\u002F ----------------\n    \u002F\u002F 1 = Single Image\n    \u002F\u002F >1 = Gallery + Size of Gallery\n\n    \u002F\u002F Image Number\n    \u002F\u002F ------------\n    \u002F\u002F This number indicates position within the gallery\n\n    \u002F\u002F Add your filter code here\n    \u002F\u002F $img_tag=str_replace('alt=','class=\"tootpress-image\" alt=',$img_tag);\n\n    return $img_tag;\n\n}\nadd_filter( 'tootpress_image_filter', 'tootpress_image_manipulate', 1, 8 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Related Links\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fcircuscode\u002Ftootpress\" rel=\"nofollow ugc\">Source Code @ GitHub\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.unmus.de\u002Ftootpress\u002F\" rel=\"nofollow ugc\">Official Plugin Page\u003C\u002Fa> (German)\u003C\u002Fli>\n\u003C\u002Ful>\n","TootPress copies your toots from Mastodon to WordPress.",3017,90,4,"2025-07-19T17:43:00.000Z","6.8.5","6.1",[75,76,77,78,79],"blog","fediverse","mastodon","microblogging","toots","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ftootpress.0.5.zip",{"slug":82,"name":83,"version":84,"author":85,"author_profile":86,"description":87,"short_description":88,"active_installs":11,"downloaded":89,"rating":25,"num_ratings":25,"last_updated":90,"tested_up_to":91,"requires_at_least":92,"requires_php":93,"tags":94,"homepage":100,"download_link":101,"security_score":102,"vuln_count":25,"unpatched_count":25,"last_vuln_date":26,"fetched_at":59},"nautilus-trips","Nautilus Trips","1.0.9","nautilusadam","https:\u002F\u002Fprofiles.wordpress.org\u002Fnautilusadam\u002F","\u003Cp>The Nautilus Trips plugin shows available trips aboard the Nautilus Liveaboards vessels and allows people to book a trip\u003Cbr \u002F>\nright on your website.\u003C\u002Fp>\n\u003Cp>*An approved Nautilus Dealers account and API Key are required for proper operation of this plugin!\u003Cbr \u002F>\nIf you are not already a Nautilus Dealer you can apply on the Nautilus Dealers contact form https:\u002F\u002Fnautilusdealers.com\u002Fcontact.\u003C\u002Fp>\n\u003Cp>Choose a subset of trips, destinations, vessels, or allow all available trips to be displayed on your website.\u003Cbr \u002F>\nGuests can see details of destinations and book a trip right into Nautilus Liveaboards systems under your Dealer Account.\u003C\u002Fp>\n\u003Cp>This plugin accesses an external API from Nautilus Liveaboards to obtain real-time trip availability data. To do so, the\u003Cbr \u002F>\nwebsite must be able to perform server-to-server communication. A valid Dealer API key is required for these API requests.\u003C\u002Fp>\n","List, Display, and Book Nautilus Liveaboards scuba diving trips directly on your website. Nautilus Dealer account required.",2764,"2023-09-07T07:04:00.000Z","5.6.17","4.6","5.2.4",[95,96,97,98,99],"dive-travel","liveaboard","nautilus-liveaboards","scuba-diving","travel","https:\u002F\u002Fnautilusdealers.com\u002Fmarketing\u002Fnautilus_trips_plugin\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fnautilus-trips.1.0.9.zip",85,{"slug":104,"name":104,"version":105,"author":106,"author_profile":107,"description":108,"short_description":109,"active_installs":25,"downloaded":110,"rating":25,"num_ratings":25,"last_updated":111,"tested_up_to":112,"requires_at_least":48,"requires_php":113,"tags":114,"homepage":120,"download_link":121,"security_score":122,"vuln_count":25,"unpatched_count":25,"last_vuln_date":26,"fetched_at":59},"zingfrog_ai","1.3","zingfrogai","https:\u002F\u002Fprofiles.wordpress.org\u002Fzingfrogai\u002F","\u003Cp>ZingFrog.ai takes blog articles and creates a short summary of the story.  The summaries are called Zings.  The Zings have a text component and diverse audio avatars that read the content for those who prefer audio.  Zings are under 100 words and usually are read in under a minute.   Our analytics show that over a third of legitimate site viewers interact with the Zings by either reading the summary or listening to the audio.  ZingFrog uses WordPress to get the text of the posts as well as write the Zings back to the WordPress website so they can be displayed.  Sign up for ZingFrog at the website ZingFrog.ai.\u003C\u002Fp>\n\u003Ch3>Notes\u003C\u002Fh3>\n\u003Cp>Zing creation is based on a paid SaaS model. Promotions are often available to create free Zings for testing.\u003C\u002Fp>\n","ZingFrog.ai takes blog articles & creates a short summary of the story.  The Zing summaries have a text component and audio read by diverse avatars.",624,"2024-11-20T20:03:00.000Z","6.6.5","7.2",[115,116,117,118,119],"accessibility","audio-summaries","blog-engagement","content-summarization","diverse-voices","https:\u002F\u002Fzingfrog.ai\u002Fsupport\u002Fwordpress-plugins\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fzingfrog_ai.1.3.zip",92,{"slug":124,"name":125,"version":126,"author":127,"author_profile":128,"description":129,"short_description":130,"active_installs":131,"downloaded":132,"rating":133,"num_ratings":134,"last_updated":135,"tested_up_to":47,"requires_at_least":136,"requires_php":49,"tags":137,"homepage":143,"download_link":144,"security_score":57,"vuln_count":145,"unpatched_count":25,"last_vuln_date":146,"fetched_at":59},"wp-mail-smtp","WP Mail SMTP by WPForms – The Most Popular SMTP and Email Log Plugin","4.7.1","Syed Balkhi","https:\u002F\u002Fprofiles.wordpress.org\u002Fsmub\u002F","\u003Ch3>WordPress Mail SMTP Plugin\u003C\u002Fh3>\n\u003Cp>Is your WordPress site not sending emails? You’re not alone. 3+ million websites use WP Mail SMTP to send emails reliably.\u003C\u002Fp>\n\u003Cp>Our goal is to make email deliverability easy so that your emails always reach the inbox.\u003C\u002Fp>\n\u003Cp>WP Mail SMTP fixes your email deliverability issues by reconfiguring WordPress to use a proper SMTP provider when sending emails.\u003C\u002Fp>\n\u003Cp>Best of all, our easy-to-use Setup Wizard and detailed documentation guide you through the process.\u003C\u002Fp>\n\u003Cp>WP Mail SMTP is free and has everything you need to reliably send your WordPress emails!\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwpmailsmtp.com\u002F?utm_source=wprepo&utm_medium=link&utm_campaign=liteplugin&utm_content=readme\" rel=\"nofollow ugc\">\u003Cstrong>WP Mail SMTP Pro\u003C\u002Fstrong>\u003C\u002Fa> unlocks even more powerful features like email logging, advanced email reporting and stats, backup connections, email alerts, smart conditional routing, and much more.\u003C\u002Fp>\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\u002FQYJuPyiKKZc?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>What is SMTP?\u003C\u002Fh4>\n\u003Cp>SMTP (Simple Mail Transfer Protocol) is an industry-standard for sending emails. Proper SMTP configuration helps increase email deliverability by adding authentication to the emails sent from your site.\u003C\u002Fp>\n\u003Cp>Popular email clients like Gmail, Yahoo, Office 365, and Zoho are in a constant battle with email spammers, so they check whether emails are originating from a genuine sender. If the proper authentication isn’t there, emails either go in the SPAM folder or, worse, disappear.\u003C\u002Fp>\n\u003Cp>This is a problem for a lot of WordPress sites. By default, WordPress uses the PHP mail function to send emails generated by WordPress or any contact form plugin like \u003Ca href=\"https:\u002F\u002Fwpforms.com\u002F?utm_source=wprepo-wpmailsmtp&utm_medium=link&utm_campaign=liteplugin&utm_content=readme\" rel=\"nofollow ugc\">WPForms\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>But most \u003Ca href=\"https:\u002F\u002Fwww.wpbeginner.com\u002Fwordpress-hosting\u002F\" rel=\"nofollow ugc\">WordPress hosting companies\u003C\u002Fa> don’t have their servers properly configured for sending PHP emails.\u003C\u002Fp>\n\u003Cp>This is why WordPress emails aren’t delivered.\u003C\u002Fp>\n\u003Ch4>How does WP Mail SMTP work?\u003C\u002Fh4>\n\u003Cp>WP Mail SMTP plugin easily resolves email delivery problems by changing the way your WordPress site sends email. We reconfigure the \u003Ccode>wp_mail()\u003C\u002Fcode> function to use proper SMTP host credentials or an SMTP mail provider.\u003C\u002Fp>\n\u003Cp>With our built-in SMTP mail provider integrations (recommended), emails are sent using the provider’s direct API. Even if your web host is blocking SMTP ports, your emails will still be sent successfully.\u003C\u002Fp>\n\u003Cp>This helps you fix all \u003Ca href=\"https:\u002F\u002Fwpmailsmtp.com\u002Fwordpress-not-sending-email\u002F?utm_source=wprepo&utm_medium=link&utm_campaign=liteplugin&utm_content=readme\" rel=\"nofollow ugc\">WordPress not sending email\u003C\u002Fa> issues.\u003C\u002Fp>\n\u003Cp>WP Mail SMTP plugin includes many different SMTP mailers:\u003C\u002Fp>\n\u003Col>\n\u003Cli>SendLayer \u003Cstrong>(#1 Recommended)\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>SMTP.com \u003Cstrong>(Recommended)\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>Brevo (formerly Sendinblue) SMTP \u003Cstrong>(Recommended)\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>Gmail SMTP (Gmail, Google Workspace, G Suite)\u003C\u002Fli>\n\u003Cli>Elastic Email\u003C\u002Fli>\n\u003Cli>Mailgun SMTP\u003C\u002Fli>\n\u003Cli>Mailjet SMTP\u003C\u002Fli>\n\u003Cli>SendGrid SMTP\u003C\u002Fli>\n\u003Cli>Postmark SMTP\u003C\u002Fli>\n\u003Cli>SparkPost SMTP\u003C\u002Fli>\n\u003Cli>SMTP2GO\u003C\u002Fli>\n\u003Cli>Microsoft SMTP One-Click Setup (Outlook.com and Office 365) \u003Ca href=\"https:\u002F\u002Fwpmailsmtp.com\u002F?utm_source=wprepo&utm_medium=link&utm_campaign=liteplugin&utm_content=readme\" rel=\"nofollow ugc\">[Pro]\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Amazon SES SMTP \u003Ca href=\"https:\u002F\u002Fwpmailsmtp.com\u002F?utm_source=wprepo&utm_medium=link&utm_campaign=liteplugin&utm_content=readme\" rel=\"nofollow ugc\">[Pro]\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Zoho Mail SMTP \u003Ca href=\"https:\u002F\u002Fwpmailsmtp.com\u002F?utm_source=wprepo&utm_medium=link&utm_campaign=liteplugin&utm_content=readme\" rel=\"nofollow ugc\">[Pro]\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Other SMTP\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>For most options, you can specify the “from name” and “email address” for outgoing emails too.\u003C\u002Fp>\n\u003Cp>All of these powerful features make WP Mail SMTP the best SMTP solution for WordPress.\u003C\u002Fp>\n\u003Cp>If you don’t know which mailer to choose, see our \u003Ca href=\"https:\u002F\u002Fwpmailsmtp.com\u002Fdocs\u002Fa-complete-guide-to-wp-mail-smtp-mailers\u002F?utm_source=wprepo&utm_medium=link&utm_campaign=liteplugin&utm_content=readme\" rel=\"nofollow ugc\">Complete Guide to WP Mail SMTP Mailers\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>SendLayer\u003C\u002Fh4>\n\u003Cp>SendLayer is our #1 recommended transactional email service.\u003C\u002Fp>\n\u003Cp>Its affordable pricing and simple setup make it the perfect choice for sending emails from WordPress. It also has open and click tracking and email logs.\u003C\u002Fp>\n\u003Cp>SendLayer is reliable, fast, and easy to set up. You can send hundreds of emails for free when you sign up for a trial.\u003C\u002Fp>\n\u003Cp>Read our \u003Ca href=\"https:\u002F\u002Fwpmailsmtp.com\u002Fdocs\u002Fhow-to-set-up-the-sendlayer-mailer-in-wp-mail-smtp\u002F?utm_source=wprepo&utm_medium=link&utm_campaign=liteplugin&utm_content=readme\" rel=\"nofollow ugc\">SendLayer documentation\u003C\u002Fa> for more details.\u003C\u002Fp>\n\u003Ch4>SMTP.COM\u003C\u002Fh4>\n\u003Cp>SMTP.com is a recommended transactional email service.\u003C\u002Fp>\n\u003Cp>With over 22 years of email delivery expertise, SMTP.com has a reputation for being one of the most reliable senders on the internet.\u003C\u002Fp>\n\u003Cp>You can start sending emails in minutes and benefit from 50,000 free emails in your first 30 days.\u003C\u002Fp>\n\u003Cp>Read our \u003Ca href=\"https:\u002F\u002Fwpmailsmtp.com\u002Fdocs\u002Fhow-to-set-up-the-smtp-com-mailer-in-wp-mail-smtp\u002F?utm_source=wprepo&utm_medium=link&utm_campaign=liteplugin&utm_content=readme\" rel=\"nofollow ugc\">SMTP.com documentation\u003C\u002Fa> for more details.\u003C\u002Fp>\n\u003Ch4>Brevo (formerly Sendinblue) SMTP\u003C\u002Fh4>\n\u003Cp>Brevo is a recommended transactional email service. It serves 80,000+ companies worldwide.\u003C\u002Fp>\n\u003Cp>Brevo is reliable, fast, and gives you 300 free emails per day.\u003C\u002Fp>\n\u003Cp>Read our \u003Ca href=\"https:\u002F\u002Fwpmailsmtp.com\u002Fdocs\u002Fhow-to-set-up-the-sendinblue-mailer-in-wp-mail-smtp\u002F?utm_source=wprepo&utm_medium=link&utm_campaign=liteplugin&utm_content=readme\" rel=\"nofollow ugc\">Brevo documentation\u003C\u002Fa> for more details.\u003C\u002Fp>\n\u003Ch3>WP Mail SMTP PRO\u003C\u002Fh3>\n\u003Cp>In addition to native Microsoft, Amazon SES, and Zoho Mail integrations, WP Mail SMTP Pro provides access to many other powerful features.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwpmailsmtp.com\u002F?utm_source=wprepo&utm_medium=link&utm_campaign=liteplugin&utm_content=readme\" rel=\"nofollow ugc\">Click here to purchase WP Mail SMTP Pro now!\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Email Log\u003C\u002Fh3>\n\u003Cp>Email logging is a powerful feature that keeps a record of all sent emails in WordPress. Email logging helps you to archive, audit, resend, or test email delivery and formatting.\u003C\u002Fp>\n\u003Cp>Our \u003Ca href=\"https:\u002F\u002Fwpmailsmtp.com\u002Flog-emails-wordpress\u002F?utm_source=wprepo&utm_medium=link&utm_campaign=liteplugin&utm_content=readme\" rel=\"nofollow ugc\">WordPress email logs\u003C\u002Fa> also include:\u003C\u002Fp>\n\u003Ch4>Email Log Details\u003C\u002Fh4>\n\u003Cp>Our email logs provide a complete history of all emails sent from WordPress. View the subject, sender, recipients, content, headers, open and click rates, delivery status, source plugin, and more!\u003C\u002Fp>\n\u003Ch4>Resend Emails\u003C\u002Fh4>\n\u003Cp>Resend emails individually or in bulk, whether they failed or were delivered successfully. You can also forward important emails to an alternative email address.\u003C\u002Fp>\n\u003Ch4>And many more Email Log Features\u003C\u002Fh4>\n\u003Cp>Store all email attachments, export email logs, print emails, see delivery status, and more.\u003C\u002Fp>\n\u003Ch3>Email Reports\u003C\u002Fh3>\n\u003Cp>Review weekly sent and failed emails in a dashboard chart.\u003C\u002Fp>\n\u003Cp>Email reports make it easy to track deliverability and engagement. Open rates and click-through rates are grouped by subject line, making it easy to see the performance of your campaigns or notifications.\u003C\u002Fp>\n\u003Ch4>Weekly Email Summary\u003C\u002Fh4>\n\u003Cp>Get statistics about WordPress emails, including how many emails are being sent and which ones are being opened and clicked. The Summary also shows you deliverability statistics without the need to log in to WordPress to check them.\u003C\u002Fp>\n\u003Ch4>Track Email Opens and Clicks\u003C\u002Fh4>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwpmailsmtp.com\u002Fenable-wordpress-email-tracking\u002F?utm_source=wprepo&utm_medium=link&utm_campaign=liteplugin&utm_content=readme\" rel=\"nofollow ugc\">View open and click stats for WordPress emails\u003C\u002Fa>, grouped by subject line in your Email Report.\u003C\u002Fp>\n\u003Ch3>Email Alerts\u003C\u002Fh3>\n\u003Cp>If your emails stop sending, get notified instantly via Slack, Microsoft Teams, Discord, SMS\u002F Twilio, webhooks, or email (via secure API).\u003C\u002Fp>\n\u003Cp>In combination with our email logging and resending features, Email Alerts ensure that no important email will ever be lost.\u003C\u002Fp>\n\u003Ch3>Backup Connection\u003C\u002Fh3>\n\u003Cp>Configure an extra connection that kicks in if your primary connection fails. WP Mail SMTP automatically detects connection issues and automatically switches to the backup mailer. It will also automatically retry emails that failed.\u003C\u002Fp>\n\u003Ch3>Smart Conditional Routing\u003C\u002Fh3>\n\u003Cp>Create criteria to send different types of emails using different mailers. Filter by the contents of the email Subject or Message, From or To addresses, the plugin that generated the email, and more.\u003C\u002Fp>\n\u003Cp>This allows you to mix transactional and marketing providers to improve deliverability.\u003C\u002Fp>\n\u003Ch3>Rate Limiting\u003C\u002Fh3>\n\u003Cp>Control the number of emails your WordPress site sends in a specific amount of time so you stay within your SMTP provider’s rate limits.\u003C\u002Fp>\n\u003Cp>WP Mail SMTP allows you to specify the maximum number of emails that will be sent every minute, hour, day, week, or month and automatically queues emails to stay within those limits.\u003C\u002Fp>\n\u003Ch3>Optimized Email Sending\u003C\u002Fh3>\n\u003Cp>Are emails slowing down your site? Let WP Mail SMTP queue your emails for better performance.\u003C\u002Fp>\n\u003Cp>With optimized sending, emails are queued in the background and sent when your server has sufficient resources, avoiding bottlenecks that can slow down your site.\u003C\u002Fp>\n\u003Ch3>Manage WordPress Emails and Notifications\u003C\u002Fh3>\n\u003Cp>Control the default notifications WordPress sends. Use a simple switch to disable specific types of notifications if you don’t want to receive them.\u003C\u002Fp>\n\u003Ch3>WordPress Multisite\u003C\u002Fh3>\n\u003Ch4>WordPress Multisite Network Settings\u003C\u002Fh4>\n\u003Cp>For users running a multisite network, save time with a centralized location to easily configure your SMTP settings for all sites.\u003C\u002Fp>\n\u003Ch4>Manage Multisite Email Logs Easily\u003C\u002Fh4>\n\u003Cp>Network Admins can view and manage email logs for subsites with easy switching and dashboard views.\u003C\u002Fp>\n\u003Ch3>Expert Support\u003C\u002Fh3>\n\u003Cp>We provide \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Ftopic\u002Fwp-mail-smtp-support-policy\u002F\" rel=\"ugc\">limited support\u003C\u002Fa> on the WordPress.org forums. World-class one-on-one email support is available to \u003Ca href=\"https:\u002F\u002Fwpmailsmtp.com\u002F?utm_source=wprepo&utm_medium=link&utm_campaign=liteplugin&utm_content=readme\" rel=\"nofollow ugc\">WP Mail SMTP Pro\u003C\u002Fa> users.\u003C\u002Fp>\n\u003Ch4>White Glove Setup\u003C\u002Fh4>\n\u003Cp>If you’re not sure how to fix your emails, sit back and relax. We’ll set up WP Mail SMTP for you!\u003C\u002Fp>\n\u003Cp>White Glove Setup includes installation, configuration in WordPress, DNS configuration, full mailer setup, and testing. White Glove Setup is available for our recommended mailers: SendLayer, Brevo, and SMTP.com.\u003C\u002Fp>\n\u003Ch3>Credits\u003C\u002Fh3>\n\u003Cp>WP Mail SMTP plugin was originally created by Callum Macdonald. It is now owned and maintained by the team behind \u003Ca href=\"https:\u002F\u002Fwpforms.com\u002F?utm_source=wprepo-wpmailsmtp&utm_medium=link&utm_campaign=liteplugin&utm_content=readme\" rel=\"nofollow ugc\">WPForms\u003C\u002Fa> – the best drag & drop form builder for WordPress.\u003C\u002Fp>\n\u003Cp>You can try the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwpforms-lite\u002F\" rel=\"ugc\">free version of WPForms plugin\u003C\u002Fa> to see why it’s the best in the market.\u003C\u002Fp>\n","Make email delivery easy for WordPress. Connect with SMTP, Gmail, Outlook, SendGrid, Mailgun, SES, Zoho, + more. Rated #1 WordPress SMTP Email plugin.",4000000,76682108,96,5071,"2025-11-26T15:18:00.000Z","5.5",[138,139,140,141,142],"email","email-logs","gmail","outlook","smtp","https:\u002F\u002Fwpmailsmtp.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-mail-smtp.4.7.1.zip",2,"2024-07-19 00:00:00",{"attackSurface":148,"codeSignals":165,"taintFlows":289,"riskAssessment":404,"analyzedAt":413},{"hooks":149,"ajaxHandlers":158,"restRoutes":159,"shortcodes":160,"cronEvents":164,"entryPointCount":14,"unprotectedCount":25},[150,155],{"type":151,"name":152,"callback":152,"file":153,"line":154},"action","admin_init","ScubaLoggerWp.php",78,{"type":151,"name":156,"callback":156,"file":153,"line":157},"admin_menu",79,[],[],[161],{"tag":162,"callback":163,"file":153,"line":13},"scubalogger","handle_shortcode",[],{"dangerousFunctions":166,"sqlUsage":167,"outputEscaping":169,"fileOperations":25,"externalRequests":25,"nonceChecks":70,"capabilityChecks":14,"bundledLibraries":288},[],{"prepared":42,"raw":25,"locations":168},[],{"escaped":170,"rawEcho":171,"locations":172},32,57,[173,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274,276,278,280,282,284,286],{"file":153,"line":174,"context":175},315,"raw output",{"file":153,"line":177,"context":175},527,{"file":153,"line":179,"context":175},549,{"file":153,"line":181,"context":175},564,{"file":153,"line":183,"context":175},576,{"file":153,"line":185,"context":175},636,{"file":153,"line":187,"context":175},637,{"file":153,"line":189,"context":175},638,{"file":153,"line":191,"context":175},639,{"file":153,"line":193,"context":175},640,{"file":153,"line":195,"context":175},641,{"file":153,"line":197,"context":175},646,{"file":153,"line":199,"context":175},649,{"file":153,"line":201,"context":175},651,{"file":153,"line":203,"context":175},658,{"file":153,"line":205,"context":175},661,{"file":153,"line":207,"context":175},662,{"file":153,"line":209,"context":175},670,{"file":153,"line":211,"context":175},674,{"file":153,"line":213,"context":175},685,{"file":153,"line":215,"context":175},690,{"file":153,"line":217,"context":175},699,{"file":153,"line":219,"context":175},709,{"file":153,"line":221,"context":175},710,{"file":153,"line":223,"context":175},711,{"file":153,"line":225,"context":175},715,{"file":153,"line":227,"context":175},716,{"file":153,"line":229,"context":175},717,{"file":153,"line":231,"context":175},721,{"file":153,"line":233,"context":175},722,{"file":153,"line":235,"context":175},727,{"file":153,"line":237,"context":175},750,{"file":153,"line":239,"context":175},753,{"file":153,"line":241,"context":175},774,{"file":153,"line":243,"context":175},776,{"file":153,"line":245,"context":175},780,{"file":153,"line":247,"context":175},782,{"file":153,"line":249,"context":175},786,{"file":153,"line":251,"context":175},788,{"file":153,"line":253,"context":175},792,{"file":153,"line":255,"context":175},794,{"file":153,"line":257,"context":175},795,{"file":153,"line":259,"context":175},796,{"file":153,"line":261,"context":175},797,{"file":153,"line":263,"context":175},798,{"file":153,"line":265,"context":175},801,{"file":153,"line":267,"context":175},802,{"file":153,"line":269,"context":175},803,{"file":153,"line":271,"context":175},804,{"file":153,"line":273,"context":175},806,{"file":153,"line":275,"context":175},810,{"file":153,"line":277,"context":175},811,{"file":153,"line":279,"context":175},813,{"file":153,"line":281,"context":175},815,{"file":153,"line":283,"context":175},826,{"file":153,"line":285,"context":175},838,{"file":153,"line":287,"context":175},845,[],[290,346,357],{"entryPoint":291,"graph":292,"unsanitizedCount":145,"severity":345},"display_tools_page (ScubaLoggerWp.php:355)",{"nodes":293,"edges":336},[294,299,305,308,313,315,320,323,327,330,334],{"id":295,"type":296,"label":297,"file":153,"line":298},"n0","source","$_REQUEST (x2)",376,{"id":300,"type":301,"label":302,"file":153,"line":303,"wp_function":304},"n1","sink","get_row() [SQLi]",377,"get_row",{"id":306,"type":296,"label":307,"file":153,"line":298},"n2","$_REQUEST",{"id":309,"type":301,"label":310,"file":153,"line":311,"wp_function":312},"n3","get_results() [SQLi]",384,"get_results",{"id":314,"type":296,"label":307,"file":153,"line":298},"n4",{"id":316,"type":301,"label":317,"file":153,"line":318,"wp_function":319},"n5","get_col() [SQLi]",620,"get_col",{"id":321,"type":296,"label":322,"file":153,"line":298},"n6","$_REQUEST (x18)",{"id":324,"type":301,"label":325,"file":153,"line":185,"wp_function":326},"n7","echo() [XSS]","echo",{"id":328,"type":296,"label":297,"file":153,"line":329},"n8",587,{"id":331,"type":332,"label":333,"file":153,"line":329},"n9","transform","→ display_dive_form()",{"id":335,"type":301,"label":325,"file":153,"line":239,"wp_function":326},"n10",[337,339,340,341,342,344],{"from":295,"to":300,"sanitized":338},true,{"from":306,"to":309,"sanitized":338},{"from":314,"to":316,"sanitized":338},{"from":321,"to":324,"sanitized":338},{"from":328,"to":331,"sanitized":343},false,{"from":331,"to":335,"sanitized":343},"medium",{"entryPoint":347,"graph":348,"unsanitizedCount":25,"severity":356},"generate_query_page (ScubaLoggerWp.php:1138)",{"nodes":349,"edges":354},[350,352],{"id":295,"type":296,"label":307,"file":153,"line":351},1180,{"id":300,"type":301,"label":310,"file":153,"line":353,"wp_function":312},1189,[355],{"from":295,"to":300,"sanitized":338},"low",{"entryPoint":358,"graph":359,"unsanitizedCount":402,"severity":403},"\u003CScubaLoggerWp> (ScubaLoggerWp.php:0)",{"nodes":360,"edges":391},[361,362,363,364,365,366,367,369,370,371,372,373,376,379,382,385,388],{"id":295,"type":296,"label":297,"file":153,"line":298},{"id":300,"type":301,"label":302,"file":153,"line":303,"wp_function":304},{"id":306,"type":296,"label":297,"file":153,"line":298},{"id":309,"type":301,"label":310,"file":153,"line":311,"wp_function":312},{"id":314,"type":296,"label":307,"file":153,"line":298},{"id":316,"type":301,"label":317,"file":153,"line":318,"wp_function":319},{"id":321,"type":296,"label":368,"file":153,"line":298},"$_REQUEST (x19)",{"id":324,"type":301,"label":325,"file":153,"line":185,"wp_function":326},{"id":328,"type":296,"label":297,"file":153,"line":329},{"id":331,"type":332,"label":333,"file":153,"line":329},{"id":335,"type":301,"label":325,"file":153,"line":239,"wp_function":326},{"id":374,"type":296,"label":297,"file":153,"line":375},"n11",949,{"id":377,"type":332,"label":378,"file":153,"line":375},"n12","→ get_dive_details()",{"id":380,"type":301,"label":302,"file":153,"line":381,"wp_function":304},"n13",286,{"id":383,"type":296,"label":307,"file":153,"line":384},"n14",956,{"id":386,"type":332,"label":387,"file":153,"line":384},"n15","→ get_dive_attributes()",{"id":389,"type":301,"label":302,"file":153,"line":390,"wp_function":304},"n16",260,[392,393,394,395,396,397,398,399,400,401],{"from":295,"to":300,"sanitized":338},{"from":306,"to":309,"sanitized":338},{"from":314,"to":316,"sanitized":338},{"from":321,"to":324,"sanitized":338},{"from":328,"to":331,"sanitized":343},{"from":331,"to":335,"sanitized":343},{"from":374,"to":377,"sanitized":343},{"from":377,"to":380,"sanitized":343},{"from":383,"to":386,"sanitized":343},{"from":386,"to":389,"sanitized":343},5,"high",{"summary":405,"deductions":406},"The \"scuba-logger\" plugin version 0.1.8 exhibits a mixed security posture. On the positive side, the plugin demonstrates good practices in several areas. All SQL queries are correctly using prepared statements, and there are no recorded vulnerabilities or CVEs, suggesting a history of secure development. The absence of file operations and external HTTP requests also reduces common attack vectors. Furthermore, the plugin employs nonce checks and capability checks, which are crucial for protecting against certain types of attacks.\n\nHowever, there are significant concerns highlighted by the static analysis. The low percentage of properly escaped output (36%) is a major red flag, indicating a high risk of Cross-Site Scripting (XSS) vulnerabilities. This is further corroborated by the taint analysis, which identified one high-severity flow with unsanitized paths. While the attack surface is small and appears to be protected, the identified taint flow with unsanitized paths, coupled with the poor output escaping, presents a tangible risk. The vulnerability history being clean is positive but does not negate the immediate risks found within the current code.\n\nIn conclusion, while the plugin has a clean vulnerability history and uses prepared statements, the insufficient output escaping and the identified high-severity taint flow are serious weaknesses. These issues create a significant risk of XSS vulnerabilities and potentially other injection attacks if not addressed. The plugin's strengths in database querying and general security checks are overshadowed by these critical areas needing immediate attention.",[407,410],{"reason":408,"points":409},"High severity taint flow with unsanitized path",12,{"reason":411,"points":412},"Low percentage of properly escaped output (36%)",8,"2026-03-16T23:28:15.540Z",{"wat":415,"direct":424},{"assetPaths":416,"generatorPatterns":419,"scriptPaths":420,"versionParams":421},[417,418],"\u002Fwp-content\u002Fplugins\u002Fscuba-logger\u002Fjs\u002Fscuba-logger-frontend.js","\u002Fwp-content\u002Fplugins\u002Fscuba-logger\u002Fcss\u002Fscuba-logger-frontend.css",[],[417],[422,423],"scuba-logger\u002Fjs\u002Fscuba-logger-frontend.js?ver=","scuba-logger\u002Fcss\u002Fscuba-logger-frontend.css?ver=",{"cssClasses":425,"htmlComments":426,"htmlAttributes":430,"restEndpoints":431,"jsGlobals":432,"shortcodeOutput":433},[],[427,428,429],"\u003C!-- Scuba Logger - Dive Log -->","\u003C!-- Scuba Logger - Dive Log Entry -->","\u003C!-- Scuba Logger - Dive Log Page -->",[],[],[],[434,435,436],"[scuba-log]","[scuba-log-entry]","[scuba-log-page]"]