[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fnD2gtzunKxFOlH2GpXMPTsR2dZRJlctDH74_Iv3zPAs":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":17,"tags":18,"homepage":24,"download_link":25,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28,"vulnerabilities":29,"developer":30,"crawl_stats":27,"alternatives":37,"analysis":131,"fingerprints":545},"bh-wp-autologin-urls","Magic Emails & Autologin URLs","2.4.2","Brian Henry","https:\u002F\u002Fprofiles.wordpress.org\u002Fbrianhenryie\u002F","\u003Cp>A new “Email Magic Link” button is added to the standard WordPress and WooCommerce login screens. If there is a user\u003Cbr \u002F>\naccount for the username filled out, they will receive an email with a link to log them in without a password.\u003C\u002Fp>\n\u003Cp>All emails sent from WordPress will contain login codes in links pointing back to the website:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Comment reply emails\u003C\u002Fli>\n\u003Cli>Abandoned cart emails\u003C\u002Fli>\n\u003Cli>Membership reminder emails\u003C\u002Fli>\n\u003Cli>etc.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>No configuration is required, by default:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Autologin URLs work for one week\u003C\u002Fli>\n\u003Cli>Emails to administrators are excluded\u003C\u002Fli>\n\u003Cli>Emails on exclusion shortlist are not modified\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>An API is available for developers to use autologin codes elsewhere in WordPress, e.g. push notifications, and to conditionally disable the plugin’s use. Code is published on GitHub, uses WordPress Plugin Boilerplate, conforms (mostly) to WordPress Coding Standards, and is unit & integration tested.\u003C\u002Fp>\n","Adds magic email link to login screen. Adds single-use passwords to WordPress emails' URLs for frictionless login.",90,5034,0,"2024-05-26T20:43:00.000Z","6.4.8","4.5.0","7.4",[19,20,21,22,23],"email","links","login","newsletter","users","https:\u002F\u002Fwordpress.org\u002FBrianHenryIE\u002Fbh-wp-autologin-urls","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbh-wp-autologin-urls.zip",92,null,"2026-03-15T15:16:48.613Z",[],{"slug":31,"display_name":7,"profile_url":8,"plugin_count":32,"total_installs":11,"avg_security_score":33,"avg_patch_time_days":34,"trust_score":35,"computed_at":36},"brianhenryie",2,96,30,91,"2026-04-05T12:48:28.067Z",[38,60,73,91,111],{"slug":39,"name":40,"version":41,"author":42,"author_profile":43,"description":44,"short_description":45,"active_installs":46,"downloaded":47,"rating":46,"num_ratings":48,"last_updated":49,"tested_up_to":50,"requires_at_least":51,"requires_php":52,"tags":53,"homepage":55,"download_link":56,"security_score":57,"vuln_count":58,"unpatched_count":13,"last_vuln_date":59,"fetched_at":28},"magic-login-mail","Magic Login Mail or QR Code","2.06","Katsushi Kawamori","https:\u002F\u002Fprofiles.wordpress.org\u002Fkatsushi-kawamori\u002F","\u003Cp>Enter your email address, and send you an email with a magic link or QR Code to login without a password.\u003C\u002Fp>\n\u003Ch4>Login\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Login with email address only.\u003C\u002Fli>\n\u003Cli>Only registered users can login.\u003C\u002Fli>\n\u003Cli>Password-less login from the magic link or QR code notified in the email.\u003C\u002Fli>\n\u003Cli>shortcode : \u003Ccode>[magic_login]\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>action hook : \u003Ccode>do_action( 'magic_email_send', $emails | array, true | bool )\u003C\u002Fcode> : To send the magic link simultaneously from the management account.\u003C\u002Fli>\n\u003Cli>QR code login on the user’s administration screen.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Thanks\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>This plugin is a modified version of \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fpasswordless-login\u002F\" rel=\"ugc\">Passwordless Login\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>The main changes are the addition of various filter hooks and the addition of the following action hooks.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Action hook\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>This is for sending bulk e-mails with a magic link for login to multiple accounts from the management screen.\u003C\u002Fli>\n\u003Cli>When using this action hook, the URL of the page where the shortcode [magic_login] is placed should be specified in the filter hook ‘magic_login_mail_url’.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cpre>\u003Ccode>\u002F** ==================================================\n * To send the magic link simultaneously from the management account.\n *\n * @param array  $emails  Multiple email addresses.\n * @param bool   true  Output notifications to the management screen immediately after sending.\n *\u002F\ndo_action( 'magic_email_send', $emails, true );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Filter hooks\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>\u002F** ==================================================\n * Filter for magic link url with mail.\n *\n *\u002F\nadd_filter( 'magic_login_mail_url', function(){ return 'url'; }, 10, 1 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode>\u002F** ==================================================\n * Currently logged in user link for Magic Login Mail\n *\n * @param string $url  URL.\n * @param int    $user_id  User ID.\n * @return $url\n *\u002F\nadd_filter( 'magic_login_mail_user_redirect', 'redirect_url_login_users', 10, 2 );\n\n\u002F** ==================================================\n * Login user after redirect for Magic Login Mail\n *\n * @param string $url  URL.\n * @param int    $user_id  User ID.\n * @return $url\n *\u002F\nadd_filter( 'magic_login_mail_after_login_redirect', 'redirect_url_login_users', 10, 2 );\n\nfunction redirect_url_login_users( $url, $user_id ){\n    \u002F* your code *\u002F\n    return $url;\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode>\u002F** ==================================================\n * Filter for message with shortcode form.\n *\n *\u002F\nadd_filter( 'magic_login_mail_success_link_msg', function(){ return 'Message for success.'; }, 10, 1 );\nadd_filter( 'magic_login_mail_success_login_msg', function(){ return 'Message for success with login.'; }, 10, 1 );\nadd_filter( 'magic_login_mail_valid_errors', function(){ return 'Message for mail validation error.'; }, 10, 1 );\nadd_filter( 'magic_login_mail_email_errors', function(){ return 'Message for sent mail error.'; }, 10, 1 );\nadd_filter( 'magic_login_mail_invalid_token_error', function(){ return 'Message for token error.'; }, 10, 1 );\nadd_filter( 'magic_login_mail_form_label', function(){ return 'Message for form label.'; }, 10, 1 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode>\u002F** ==================================================\n * Filter for color with shortcode form.\n *\n *\u002F\nadd_filter( 'magic_login_mail_success_link_msg_back_color', function(){ return '#e7f7d3'; }, 10, 1 );\nadd_filter( 'magic_login_mail_success_login_msg_back_color', function(){ return '#e7f7d3'; }, 10, 1 );\nadd_filter( 'magic_login_mail_valid_errors_back_color', function(){ return '#ffebe8'; }, 10, 1 );\nadd_filter( 'magic_login_mail_email_errors_back_color', function(){ return '#ffebe8'; }, 10, 1 );\nadd_filter( 'magic_login_mail_invalid_token_error_back_color', function(){ return '#ffebe8'; }, 10, 1 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode>\u002F** ==================================================\n * Filter for input text size.\n *\n *\u002F\nadd_filter( 'magic_login_mail_input_size', function(){ return 17; }, 10, 1 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode>\u002F** ==================================================\n * Filter for class name.\n *\n *\u002F\nadd_filter( 'magic_login_mail_notice_class_name', function(){ return 'mynotice'; }, 10, 1 );\nadd_filter( 'magic_login_mail_form_class_name', function(){ return 'myform'; }, 10, 1 );\nadd_filter( 'magic_login_mail_label_class_name', function(){ return 'mylabel'; }, 10, 1 );\nadd_filter( 'magic_login_mail_input_class_name', function(){ return 'myinput'; }, 10, 1 );\nadd_filter( 'magic_login_mail_submit_class_name', function(){ return 'mysubmit'; }, 10, 1 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode>\u002F** ==================================================\n * Filter for message with mail subject.\n *\n *\u002F\nadd_filter( 'magic_login_mail_subject', function(){ return 'subject'; }, 10, 1 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode>\u002F** ==================================================\n * Filter for message with mail.\n *\n * @param string $message  message.\n * @param string $url  url.\n * @param string $exp_date_time  expiration date and time.\n *\u002F\nadd_filter(\n    'magic_login_mail_message',\n    function( $message, $url, $exp_date_time ) {\n\n        $message .= '\u003Cbr>\u003Cbr>' . 'You may only log in once using the link above.';\n\n        return $message;\n    },\n    10,\n    3\n);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode>\u002F** ==================================================\n * Filter for login expiration.\n *\n *\u002F\nadd_filter( 'magic_login_mail_expiration', function(){ return 10; }, 10, 1 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n","Enter your email address, and send you an email with a magic link or QR Code to login without a password.",100,6216,3,"2026-02-13T00:04:00.000Z","6.9.4","4.7","8.0",[19,21,54,23],"passwordless","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fmagic-login-mail\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmagic-login-mail.2.06.zip",97,1,"2026-02-13 16:21:07",{"slug":61,"name":62,"version":63,"author":42,"author_profile":43,"description":64,"short_description":65,"active_installs":34,"downloaded":66,"rating":13,"num_ratings":13,"last_updated":67,"tested_up_to":50,"requires_at_least":51,"requires_php":52,"tags":68,"homepage":71,"download_link":72,"security_score":46,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"user-mail-only-register","Multibyte CAPTCHA login and Mail only register","4.03","\u003Ch4>Login form with Multibyte CAPTCHA\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Anti-Bot measures with original CAPTCHA.\u003C\u002Fli>\n\u003Cli>WordPress : \u003Ccode>wp-login.php\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>WordPress : \u003Ccode>wp-login.php?action=register\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>WordPress : \u003Ccode>wp-login.php?action=lostpassword\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Register\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Register only email address.\u003C\u002Fli>\n\u003Cli>Can check the terms of use agreement for user register.\u003C\u002Fli>\n\u003Cli>Anti-Bot measures with original CAPTCHA.\u003C\u002Fli>\n\u003Cli>WordPress : \u003Ccode>wp-login.php?action=register\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>shortcode : \u003Ccode>[umorregister]\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Filter for shortcode form\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>\u002F** ==================================================\n * Filter for message.\n *\n *\u002F\nadd_filter( 'umor_register_success_msg', function(){ return 'Message for register success.'; }, 10, 1 );\nadd_filter( 'umor_login_success_login_msg', function(){ return 'Message for login success.'; }, 10, 1 );\nadd_filter( 'umor_register_error', function(){ return 'Message for register error.'; }, 10, 1 );\nadd_filter( 'umor_register_nomail', function(){ return 'Message for unentered mail.'; }, 10, 1 );\nadd_filter( 'umor_register_noterm', function(){ return 'Message for unentered term of use.'; }, 10, 1 );\nadd_filter( 'umor_register_form_label', function(){ return 'Message for form label.'; }, 10, 1 );\nadd_filter( 'umor_register_term_of_use', function(){ return 'Message for term of use.'; }, 10, 1 );\nadd_filter( 'umor_not_register_message', function(){ return 'Message for not register.'; }, 10, 1 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode>\u002F** ==================================================\n * Filter for login form message.\n *\n *\u002F\nadd_filter(\n    'umor_login_message',\n    function( $message, $text ) {\n        $message = '\u003Cp class=\"myclass\">';\n        $message .= $text;\n        $message .= '\u003C\u002Fp>';\n        return $message;\n    },\n    10,\n    2\n);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode>\u002F** ==================================================\n * Filter for Term of use URL.\n *\n *\u002F\nadd_filter(\n    'umor_register_term_of_use_url',\n    function( $term_of_use_url ) {\n        if ( 'ja' === get_locale() ) {\n            $term_of_use_url = 'https:\u002F\u002Ftest.com\u002Fja\u002F';\n        }\n        return $term_of_use_url;\n    },\n    10,\n    1\n);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode>\u002F** ==================================================\n * Filter for input text size.\n *\n *\u002F\nadd_filter( 'umor_register_input_size', function(){ return 17; }, 10, 1 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode>\u002F** ==================================================\n * Filter for class name.\n *\n *\u002F\nadd_filter( 'umor_register_notice_class_name', function(){ return 'mynotice'; }, 10, 1 );\nadd_filter( 'umor_register_form_class_name', function(){ return 'myform'; }, 10, 1 );\nadd_filter( 'umor_register_label_class_name', function(){ return 'mylabel'; }, 10, 1 );\nadd_filter( 'umor_register_input_class_name', function(){ return 'myinput'; }, 10, 1 );\nadd_filter( 'umor_register_check_form_class_name', function(){ return 'mycheckform'; }, 10, 1 );\nadd_filter( 'umor_register_check_class_name', function(){ return 'mycheck'; }, 10, 1 );\nadd_filter( 'umor_register_captcha_input_class_name', function(){ return 'mycaptcha_input'; }, 10, 1 );\nadd_filter( 'umor_register_submit_class_name', function(){ return 'mysubmit'; }, 10, 1 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n","Multibyte CAPTCHA login form and register users with mail only.",5650,"2025-12-02T23:22:00.000Z",[69,19,21,70,23],"captcha","register","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fuser-mail-only-register\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fuser-mail-only-register.4.03.zip",{"slug":74,"name":75,"version":76,"author":77,"author_profile":78,"description":79,"short_description":80,"active_installs":81,"downloaded":82,"rating":46,"num_ratings":48,"last_updated":83,"tested_up_to":50,"requires_at_least":84,"requires_php":17,"tags":85,"homepage":88,"download_link":89,"security_score":46,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":90},"my-newsletter","My Newsletter","2.0.2","Georgijevic","https:\u002F\u002Fprofiles.wordpress.org\u002Fgeorgijevic\u002F","\u003Cp>My Newsletter is a lightweight newsletter plugin focused on a practical use case many site owners need immediately:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>send a campaign to WordPress users,\u003C\u002Fli>\n\u003Cli>send a campaign to commenters,\u003C\u002Fli>\n\u003Cli>optionally target commenters from a specific post,\u003C\u002Fli>\n\u003Cli>queue the campaign and process it in the background,\u003C\u002Fli>\n\u003Cli>include unsubscribe links in every message,\u003C\u002Fli>\n\u003Cli>track basic campaign progress in the admin area.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>This plugin is intentionally simple and WordPress-native. It relies on \u003Ccode>wp_mail()\u003C\u002Fcode> for sending and WP-Cron for queue processing, which makes it easy to install and use on most shared hosting environments.\u003C\u002Fp>\n\u003Ch4>Core functionality\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\n\u003Cp>\u003Cstrong>Campaign composer (admin screen)\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Create a newsletter subject and HTML content.\u003C\u002Fli>\n\u003Cli>Use the WordPress editor for message body content.\u003C\u002Fli>\n\u003Cli>Choose recipient source:\u003C\u002Fli>\n\u003Cli>Users + Commenters\u003C\u002Fli>\n\u003Cli>Users only\u003C\u002Fli>\n\u003Cli>Commenters only\u003C\u002Fli>\n\u003Cli>Commenters on a specific post\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Background queue processing\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Recipients are queued in a custom plugin table.\u003C\u002Fli>\n\u003Cli>Sending runs in batches through WP-Cron (instead of trying to send everything in one browser request).\u003C\u002Fli>\n\u003Cli>Reduces the risk of timeouts and broken sends on slower hosting.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Test email before full campaign\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Send a test message to any email address from the composer screen.\u003C\u002Fli>\n\u003Cli>Uses the same rendering path and unsubscribe footer logic as real sends.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Secure unsubscribe links\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Every email can include an unsubscribe URL.\u003C\u002Fli>\n\u003Cli>Unsubscribe tokens use an HMAC-based signature (derived from WordPress salts).\u003C\u002Fli>\n\u003Cli>Unsubscribed addresses are stored in a dedicated plugin table and skipped in future campaigns.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Template variables (placeholders)\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>{{site_name}}\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>{{site_url}}\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>{{recipient_name}}\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>{{recipient_email}}\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>{{unsubscribe_url}}\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Settings screen\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>From name\u003C\u002Fli>\n\u003Cli>From email\u003C\u002Fli>\n\u003Cli>Reply-To (optional)\u003C\u002Fli>\n\u003Cli>Max emails per cron run (batch size)\u003C\u002Fli>\n\u003Cli>Footer HTML (appended to outgoing emails)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Basic campaign tracking\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Shows recent campaigns in admin.\u003C\u002Fli>\n\u003Cli>Displays queue progress (total \u002F sent \u002F failed \u002F queued).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>How sending works (important)\u003C\u002Fh4>\n\u003Cp>This plugin uses \u003Cstrong>WP-Cron\u003C\u002Fstrong>. WP-Cron runs when your site receives traffic. That means:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>On active sites, sending progresses regularly.\u003C\u002Fli>\n\u003Cli>On low-traffic sites, sending may be slower.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>For production use, it is recommended to configure a real server cron that triggers \u003Ccode>wp-cron.php\u003C\u002Fcode> periodically.\u003C\u002Fp>\n\u003Ch4>Email deliverability note\u003C\u002Fh4>\n\u003Cp>My Newsletter sends through \u003Ccode>wp_mail()\u003C\u002Fcode>. Actual delivery quality depends on your hosting and email configuration.\u003C\u002Fp>\n\u003Cp>For best results, use:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>a real SMTP provider,\u003C\u002Fli>\n\u003Cli>a verified sender domain,\u003C\u002Fli>\n\u003Cli>properly configured SPF \u002F DKIM \u002F DMARC,\u003C\u002Fli>\n\u003Cli>a valid \u003Ccode>From\u003C\u002Fcode> address on your domain.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Data storage\u003C\u002Fh4>\n\u003Cp>The plugin creates two custom tables:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>wpnl_queue\u003C\u002Fcode> – campaign queue and send status\u003C\u002Fli>\n\u003Cli>\u003Ccode>wpnl_unsub\u003C\u002Fcode> – unsubscribed email addresses\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>On uninstall, those plugin tables and plugin options are removed.\u003C\u002Fp>\n","Send newsletters to WordPress users and commenters with background queue processing, test email sending, and secure unsubscribe links.",10,4097,"","5.8",[86,87,19,22,23],"bulk-email","commenters","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fmy-newsletter\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmy-newsletter.2.0.2.zip","2026-03-15T10:48:56.248Z",{"slug":92,"name":93,"version":94,"author":95,"author_profile":96,"description":97,"short_description":98,"active_installs":99,"downloaded":100,"rating":46,"num_ratings":32,"last_updated":101,"tested_up_to":50,"requires_at_least":102,"requires_php":103,"tags":104,"homepage":109,"download_link":110,"security_score":46,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"hostinger-reach","Hostinger Reach – AI-Powered Email Marketing for WordPress","1.4.0","Hostinger","https:\u002F\u002Fprofiles.wordpress.org\u002Fhostinger\u002F","\u003Cp>Hostinger Reach is your all-in-one email marketing plugin, built for creators, small businesses, and website owners. It helps you grow your audience and stay connected through eye-catching, on-brand emails powered by AI and seamlessly integrated with your site.\u003C\u002Fp>\n\u003Ch4>🚀 Key Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>AI-powered email templates:\u003C\u002Fstrong> Describe your idea and let AI generate a ready-to-send email for you in seconds. Effortlessly tailor your templates and content to your brand look and voice.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Subscriber collection:\u003C\u002Fstrong> Create subscriber capture forms or connect popular plugins like Contact Form 7 or WPForms to start collecting contacts.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Automatic contact sync:\u003C\u002Fstrong> Reach syncs all subscribers to your dashboard in real time – no manual exports or spreadsheets needed.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Email sending:\u003C\u002Fstrong> Use your domain and custom sender address for professional, trusted communication.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Email campaigns:\u003C\u002Fstrong> Launch targeted email campaigns to engage your audience.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Real-time analytics:\u003C\u002Fstrong> Monitor opens, clicks, and other key metrics as they happen to fine-tune performance with every send.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Built-in deliverability:\u003C\u002Fstrong> Count on Hostinger’s proven infrastructure to ensure your emails land in inboxes, not spam folders.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>🔌 Seamless Integration\u003C\u002Fh4>\n\u003Cp>Reach lets you create forms directly within the native WordPress Block Editor – no extra plugins required.\u003C\u002Fp>\n\u003Cp>Reach is also fully compatible with these popular form builders and plugins:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>WPForms\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Contact Form 7\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>WooCommerce\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Elementor\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>WS Form\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Sure Forms\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Ninja Forms\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Forminator\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Thrive Leads\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>OptinMonster\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Brave Popup Builder\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>More integrations are coming soon.\u003C\u002Fp>\n\u003Ch4>📬 Deliverability & Compliance: Handled for You\u003C\u002Fh4>\n\u003Cp>Reach takes care of the technical setup, ensuring your emails land in inboxes, not spam folders.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Automatic SPF, DKIM, & DMARC setup\u003C\u002Fstrong> – Reach configures industry-standard email authentication protocols for you, so you don’t have to worry about deliverability issues.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Trusted infrastructure\u003C\u002Fstrong> – Reach sends your campaigns through reliable, high-reputation servers to keep your emails landing in inboxes.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>100% compliant templates\u003C\u002Fstrong> – Our AI generates templates that fully comply with CAN-SPAM and GDPR, including sender information and unsubscribe options.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Auto-managed unsubscribes\u003C\u002Fstrong> – Every email includes an unsubscribe link that Reach handles automatically. When contacts unsubscribe, Reach removes them from future campaigns without any effort from you.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>💸 Plans & Pricing: Start Free, Grow Without Limits\u003C\u002Fh4>\n\u003Cp>Reach supports creators and businesses at every stage. Start for free, scale as your audience grows, and pay only when you need to.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Reach offers a free plan for one year – perfect for getting started.\u003C\u002Fli>\n\u003Cli>Paid plans provide higher sending limits based on your contact list size and monthly email volume.\u003C\u002Fli>\n\u003Cli>Every paid plan removes the Reach logo from your emails and includes five free AI-generated messages each month.\u003C\u002Fli>\n\u003Cli>New customers get 20 free AI messages and can purchase more anytime – no subscriptions or bundles required.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>🆓 What’s Included in the Free Plan?\u003C\u002Fh4>\n\u003Cp>Start your email marketing journey with our feature-rich free plan designed for beginners and small audiences:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Email up to 100 unique subscribers\u002Fmonth\u003C\u002Fstrong> – Perfect for building your first list or staying in touch with your early subscribers. Your unique recipients limit resets on the 1st of every month.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Send up to 200 emails\u002Fmonth\u003C\u002Fstrong> – Enough to reach your audience and learn what works best. Your total email limit resets on the 1st of every month.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>AI content editor & visual builder\u003C\u002Fstrong> – Easily customize your emails’ content, images, and branding.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Unlimited contact storage\u003C\u002Fstrong> – Reach does not limit your contact list, so you can consistently grow your audience without worrying about lost data.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>WordPress contact sync\u003C\u002Fstrong> – Seamlessly import subscribers from your site to your Reach mailing list.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>24\u002F7 customer support\u003C\u002Fstrong> – Get help anytime, even on the free plan.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Our free plan gives you everything you need to launch your first campaign, grow your audience, and see real results – no credit card required.\u003C\u002Fp>\n\u003Ch4>💡 Why Reach?\u003C\u002Fh4>\n\u003Cp>With over 20 years of experience helping people succeed online, Hostinger created Reach to make professional email marketing simple, fast, and effective – especially for beginners.\u003C\u002Fp>\n\u003Ch4>External services\u003C\u002Fh4>\n\u003Cp>This plugin connects to Hostinger Reach API service to collect and share the next information:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Collect your Reach account overview stats and show them in the wp-admin dashboard\u003C\u002Fli>\n\u003Cli>Automatically sync new subscribers from your site to Reach\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Authentication with Hostinger Reach to share ecrypted keys, secure, and protect the communication channel\u003C\u002Fp>\n\u003Cp>Hostinger Reach plugin goal is to offer a seamless integration within Hostinger Reach service. Hence, a communication\u003Cbr \u002F>\nbetween the plugin and Hostinger Reach service is a core functionality.\u003C\u002Fp>\n\u003Cp>For more information about Hostinger Reach and our terms and conditions visit:\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.hostinger.com\u002Femail-marketing\" rel=\"nofollow ugc\">Hostinger Reach\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.hostinger.com\u002Flegal\u002Funiversal-terms-of-service-agreement\" rel=\"nofollow ugc\">Hostinger Terms of Service\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Compiled code\u003C\u002Fh4>\n\u003Cp>In order to optimize the plugin and reduce the size of the bundle we minify and compile our JavaScript files.\u003C\u002Fp>\n\u003Cp>For transparency and following the community guidelines you can find the source code inside the \u003Ccode>frontend\u003C\u002Fcode> folder.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>frontend\u002Fvue\u003C\u002Fcode>: Code for the Admin UI\u003C\u002Fli>\n\u003Cli>\u003Ccode>frontend\u002Fblocks\u003C\u002Fcode>: Code for Reach block\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Ccode>dist\u003C\u002Fcode>: compiled code\u003C\u002Fp>\n\u003Cp>We include also \u003Ccode>composer.json\u003C\u002Fcode> and \u003Ccode>package.json\u003C\u002Fcode> file showing the dependencies we use in the project.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n","Launch and grow your email marketing effortlessly with Hostinger Reach. Collect contacts, sync subscribers, and send emails – all in one, AI powered.",1000000,232704,"2026-03-10T08:48:00.000Z","6.0","8.1",[105,106,107,22,108],"email-marketing","lead-generation","marketing","subscription","https:\u002F\u002Fhostinger.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fhostinger-reach.1.4.0.zip",{"slug":112,"name":113,"version":114,"author":115,"author_profile":116,"description":117,"short_description":118,"active_installs":99,"downloaded":119,"rating":33,"num_ratings":120,"last_updated":121,"tested_up_to":50,"requires_at_least":122,"requires_php":17,"tags":123,"homepage":127,"download_link":128,"security_score":26,"vuln_count":129,"unpatched_count":13,"last_vuln_date":130,"fetched_at":28},"mailchimp-for-wp","MC4WP: Mailchimp for WordPress","4.12.0","Danny van Kooten","https:\u002F\u002Fprofiles.wordpress.org\u002Fdvankooten\u002F","\u003Cp>\u003Cem>Allowing your visitors to subscribe to your newsletter should be easy. With this plugin, it finally is.\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>This plugins helps you grow your email list in Mailchimp. You can use it to create good looking and accessible sign-up forms or integrate with any other existing form on your WordPress site, like your contact, comment or checkout form.\u003C\u002Fp>\n\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\u002FfZCYPnFybqU?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>\n\u003Ch4>Some (but not all) features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\n\u003Cp>Connect with your Mailchimp account in seconds.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Sign-up forms which are good looking, user-friendly and mobile optimized. You have complete control over the form fields and can build your forms using native HTML.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Seamless integration with the following plugins:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>WordPress Comment Form\u003C\u002Fli>\n\u003Cli>WordPress Registration Form\u003C\u002Fli>\n\u003Cli>Contact Form 7\u003C\u002Fli>\n\u003Cli>WooCommerce\u003C\u002Fli>\n\u003Cli>Gravity Forms\u003C\u002Fli>\n\u003Cli>Ninja Forms 3\u003C\u002Fli>\n\u003Cli>WPForms\u003C\u002Fli>\n\u003Cli>BuddyPress\u003C\u002Fli>\n\u003Cli>MemberPress\u003C\u002Fli>\n\u003Cli>Events Manager\u003C\u002Fli>\n\u003Cli>Easy Digital Downloads\u003C\u002Fli>\n\u003Cli>Give\u003C\u002Fli>\n\u003Cli>UltimateMember\u003C\u002Fli>\n\u003Cli>HTML Forms\u003C\u002Fli>\n\u003Cli>AffiliateWP\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Is the plugin you want to integrate with not listed above? You can probably still use our \u003Ca href=\"https:\u002F\u002Fwww.mc4wp.com\u002Fkb\u002Fsubscribe-mailchimp-custom-html-form\u002F\" rel=\"nofollow ugc\">custom integration\u003C\u002Fa> feature. Alternatively, the plugin comes with a PHP API to programmatically add a new subscriber to Mailchimp.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.mc4wp.com\u002F\" rel=\"nofollow ugc\">Mailchimp for WordPress Premium\u003C\u002Fa>: Send your WooCommerce orders to Mailchimp so you can see exactly what each subscriber purchased and how much revenue your email campaigns are generating.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>A multitude of available add-on plugins and integrations:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.mc4wp.com\u002F\" rel=\"nofollow ugc\">Mailchimp for WordPress Premium\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fmailchimp-top-bar\u002F\" rel=\"ugc\">Mailchimp Top Bar\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fboxzilla\u002F\" rel=\"ugc\">Boxzilla Pop-ups\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Well documented through our \u003Ca href=\"https:\u002F\u002Fwww.mc4wp.com\u002Fkb\u002F\" rel=\"nofollow ugc\">knowledge base\u003C\u002Fa>.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Developer friendly. For some inspiration, check out our \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fibericode\u002Fmailchimp-for-wordpress\u002Ftree\u002Fmain\u002Fsample-code-snippets\" rel=\"nofollow ugc\">repository of example code snippets\u003C\u002Fa>.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Ready for PHP 8.5, but backwards-compatible all the way down to PHP 7.4.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>What is Mailchimp?\u003C\u002Fh4>\n\u003Cp>Mailchimp is a newsletter service that allows you to send out email campaigns to a list of email subscribers. It is free for lists with up to 500 email subscribers, which is why it is the newsletter-service of choice for thousands of small businesses across the globe.\u003C\u002Fp>\n\u003Cp>If you are not yet using Mailchimp, \u003Ca href=\"http:\u002F\u002Feepurl.com\u002FigOGeX\" rel=\"nofollow ugc\">creating an account is 100% free and only takes you about 30 seconds\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>Support\u003C\u002Fh4>\n\u003Cp>If you need some help in setting up the plugin, you have various options:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Search through our \u003Ca href=\"https:\u002F\u002Fwww.mc4wp.com\u002Fkb\u002F#utm_source=wp-plugin-repo&utm_medium=mailchimp-for-wp&utm_campaign=description\" rel=\"nofollow ugc\">knowledge base\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>Open a topic in the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fmailchimp-for-wp\" rel=\"ugc\">WordPress.org plugin support forums\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>If you’re a premium user, send an email to the email address listed inside the plugin.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Translations\u003C\u002Fh4>\n\u003Cp>You can \u003Ca href=\"https:\u002F\u002Ftranslate.wordpress.org\u002Fprojects\u002Fwp-plugins\u002Fmailchimp-for-wp\u002Fstable\u002F\" rel=\"nofollow ugc\">help translate this plugin into your language\u003C\u002Fa> using your WordPress.org account.\u003C\u002Fp>\n\u003Ch4>Development\u003C\u002Fh4>\n\u003Cp>This plugin is being developed on GitHub. If you want to collaborate, please look at \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fibericode\u002Fmailchimp-for-wordpress\" rel=\"nofollow ugc\">ibericode\u002Fmailchimp-for-wordpress\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>Customizing the plugin\u003C\u002Fh4>\n\u003Cp>The plugin provides various filter and action hooks that allow you to modify or extend the default behavior. We’re also maintaining a \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fibericode\u002Fmailchimp-for-wordpress\u002Ftree\u002Fmain\u002Fsample-code-snippets\" rel=\"nofollow ugc\">collection of sample code snippets\u003C\u002Fa>.\u003C\u002Fp>\n","The #1 Mailchimp plugin for WordPress. Allows you to add a multitude of newsletter sign-up methods to your site.",72637090,1492,"2026-03-09T08:01:00.000Z","4.6",[19,124,125,22,126],"form","mailchimp","subscribe","https:\u002F\u002Fwww.mc4wp.com\u002F#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmailchimp-for-wp.4.12.0.zip",11,"2026-03-10 13:11:15",{"attackSurface":132,"codeSignals":452,"taintFlows":480,"riskAssessment":536,"analyzedAt":544},{"hooks":133,"ajaxHandlers":426,"restRoutes":447,"shortcodes":448,"cronEvents":449,"entryPointCount":450,"unprotectedCount":451},[134,139,144,149,153,156,158,162,165,169,173,176,180,183,187,190,193,195,200,204,208,212,215,219,223,226,228,231,234,238,242,246,251,254,257,259,263,265,270,274,277,280,283,286,288,292,296,300,304,307,309,312,314,316,318,321,324,327,330,334,336,338,340,342,344,347,350,353,357,360,364,368,373,377,381,384,387,391,394,395,398,402,405,407,410,412,415,417,419,423],{"type":135,"name":136,"callback":137,"file":138,"line":57},"action","admin_notices","closure","src\\admin\\class-users-list-table.php",{"type":135,"name":140,"callback":141,"priority":58,"file":142,"line":143},"plugins_loaded","create_db","src\\api\\data-stores\\class-db-data-store.php",39,{"type":135,"name":145,"callback":146,"file":147,"line":148},"init","load_plugin_textdomain","src\\class-bh-wp-autologin-urls.php",125,{"type":150,"name":151,"callback":151,"priority":81,"file":147,"line":152},"filter","add_autologin_to_message",135,{"type":150,"name":154,"callback":154,"priority":81,"file":147,"line":155},"add_autologin_to_url",136,{"type":135,"name":140,"callback":137,"priority":32,"file":147,"line":157},138,{"type":135,"name":159,"callback":160,"file":147,"line":161},"admin_enqueue_scripts","enqueue_styles",157,{"type":135,"name":159,"callback":163,"file":147,"line":164},"enqueue_scripts",158,{"type":135,"name":166,"callback":167,"file":147,"line":168},"admin_menu","add_settings_page",162,{"type":135,"name":170,"callback":171,"file":147,"line":172},"admin_init","setup_sections",163,{"type":135,"name":170,"callback":174,"file":147,"line":175},"setup_fields",164,{"type":135,"name":177,"callback":178,"priority":58,"file":147,"line":179},"edit_user_profile","make_password_available_on_user_page",167,{"type":135,"name":181,"callback":178,"priority":58,"file":147,"line":182},"show_user_profile",168,{"type":150,"name":184,"callback":185,"priority":81,"file":147,"line":186},"user_row_actions","add_magic_email_link",171,{"type":135,"name":170,"callback":188,"file":147,"line":189},"send_magic_email_link",172,{"type":135,"name":191,"callback":160,"file":147,"line":192},"login_enqueue_scripts",182,{"type":135,"name":191,"callback":163,"file":147,"line":194},183,{"type":150,"name":196,"callback":197,"priority":198,"file":147,"line":199},"plugin_row_meta","row_meta",20,200,{"type":150,"name":201,"callback":202,"priority":81,"file":147,"line":203},"install_plugin_complete_actions","add_settings_link",210,{"type":150,"name":205,"callback":206,"priority":48,"file":147,"line":207},"wp_mail","add_autologin_links_to_email",222,{"type":150,"name":209,"callback":210,"priority":34,"file":147,"line":211},"determine_current_user","process",235,{"type":135,"name":140,"callback":213,"file":147,"line":214},"schedule_job",245,{"type":150,"name":216,"callback":217,"priority":81,"file":147,"line":218},"woocommerce_get_checkout_payment_url","add_to_payment_url",256,{"type":150,"name":220,"callback":221,"priority":81,"file":147,"line":222},"gettext_woocommerce","remove_arrow_from_link_text",258,{"type":135,"name":159,"callback":224,"file":147,"line":225},"enqueue_script",260,{"type":135,"name":159,"callback":160,"file":147,"line":227},261,{"type":135,"name":229,"callback":224,"file":147,"line":230},"woocommerce_before_customer_login_form",271,{"type":135,"name":232,"callback":224,"file":147,"line":233},"woocommerce_before_checkout_form",272,{"type":150,"name":235,"callback":236,"priority":81,"file":147,"line":237},"bh-wp-autologin-urls_bh_wp_logger_column","link_to_klaviyo_profile_search",284,{"type":135,"name":239,"callback":240,"file":147,"line":241},"rest_api_init","register_routes",310,{"type":135,"name":243,"callback":137,"file":244,"line":245},"woocommerce_after_register_post_type","src\\woocommerce\\class-checkout.php",69,{"type":135,"name":247,"callback":248,"file":249,"line":250},"woocommerce_init","anonymous","src\\wp-includes\\class-login.php",127,{"type":135,"name":252,"callback":137,"file":249,"line":253},"set_auth_cookie",160,{"type":135,"name":255,"callback":137,"file":249,"line":256},"set_logged_in_cookie",169,{"type":135,"name":145,"callback":137,"file":249,"line":258},180,{"type":135,"name":260,"callback":248,"priority":58,"file":261,"line":262},"woocommerce_loaded","vendor-prefixed\\brianhenryie\\bh-wc-logger\\src\\class-wc-psr-logger.php",52,{"type":135,"name":260,"callback":248,"priority":32,"file":261,"line":264},81,{"type":150,"name":266,"callback":267,"priority":81,"file":268,"line":269},"woocommerce_format_log_entry","add_context_to_logs","vendor-prefixed\\brianhenryie\\bh-wp-logger\\src\\class-logger.php",99,{"type":150,"name":271,"callback":272,"file":273,"line":148},"deprecated_function_trigger_error","__return_false","vendor-prefixed\\brianhenryie\\bh-wp-logger\\src\\wp-includes\\class-functions.php",{"type":150,"name":275,"callback":272,"file":273,"line":276},"deprecated_argument_trigger_error",184,{"type":150,"name":278,"callback":272,"file":273,"line":279},"doing_it_wrong_trigger_error",246,{"type":150,"name":281,"callback":272,"file":273,"line":282},"deprecated_hook_trigger_error",315,{"type":135,"name":140,"callback":145,"priority":32,"file":284,"line":285},"vendor-prefixed\\brianhenryie\\bh-wp-logger\\src\\wp-includes\\class-plugin-logger-actions.php",101,{"type":135,"name":140,"callback":145,"priority":32,"file":284,"line":287},104,{"type":135,"name":289,"callback":290,"priority":81,"file":284,"line":291},"deprecated_function_run","log_deprecated_functions_only_once_per_day",121,{"type":135,"name":293,"callback":294,"priority":81,"file":284,"line":295},"deprecated_argument_run","log_deprecated_arguments_only_once_per_day",122,{"type":135,"name":297,"callback":298,"priority":81,"file":284,"line":299},"doing_it_wrong_run","log_doing_it_wrong_only_once_per_day",123,{"type":135,"name":301,"callback":302,"priority":81,"file":284,"line":303},"deprecated_hook_run","log_deprecated_hook_only_once_per_day",124,{"type":135,"name":170,"callback":136,"priority":305,"file":284,"line":306},9,134,{"type":135,"name":136,"callback":308,"file":284,"line":155},"the_notices",{"type":135,"name":166,"callback":310,"priority":198,"file":284,"line":311},"add_page",146,{"type":135,"name":159,"callback":163,"file":284,"line":313},147,{"type":135,"name":159,"callback":160,"file":284,"line":315},148,{"type":150,"name":201,"callback":317,"priority":269,"file":284,"line":192},"add_logs_link",{"type":135,"name":145,"callback":319,"file":284,"line":320},"register_delete_logs_cron_job",192,{"type":135,"name":145,"callback":322,"file":284,"line":323},"maybe_download_log",215,{"type":135,"name":159,"callback":163,"file":325,"line":326},"vendor-prefixed\\brianhenryie\\bh-wp-private-uploads\\src\\admin\\class-admin-meta-boxes.php",83,{"type":150,"name":328,"callback":248,"priority":81,"file":329,"line":161},"upload_dir","vendor-prefixed\\brianhenryie\\bh-wp-private-uploads\\src\\api\\class-api.php",{"type":135,"name":145,"callback":331,"file":332,"line":333},"create_directory","vendor-prefixed\\brianhenryie\\bh-wp-private-uploads\\src\\class-bh-wp-private-uploads-hooks.php",87,{"type":135,"name":145,"callback":335,"file":332,"line":269},"register_post_type",{"type":135,"name":170,"callback":136,"priority":305,"file":332,"line":337},112,{"type":135,"name":136,"callback":308,"file":332,"line":339},114,{"type":135,"name":145,"callback":145,"file":332,"line":341},126,{"type":135,"name":145,"callback":343,"file":332,"line":155},"register_cron_job",{"type":135,"name":145,"callback":345,"file":332,"line":346},"register_rewrite_rule",174,{"type":135,"name":170,"callback":348,"priority":58,"file":332,"line":349},"on_upload_attachment",185,{"type":135,"name":170,"callback":351,"priority":58,"file":332,"line":352},"register_script",189,{"type":135,"name":354,"callback":355,"priority":81,"file":332,"line":356},"add_meta_boxes","add_meta_box",195,{"type":135,"name":166,"callback":358,"file":332,"line":359},"add_private_media_library_menu",202,{"type":150,"name":361,"callback":362,"priority":81,"file":332,"line":363},"submenu_file","highlight_menu",203,{"type":150,"name":166,"callback":365,"priority":366,"file":332,"line":367},"remove_top_level_menu",1000,204,{"type":150,"name":369,"callback":370,"file":371,"line":372},"ajax_query_attachments_args","set_query_post_type_to_cpt","vendor-prefixed\\brianhenryie\\bh-wp-private-uploads\\src\\wp-includes\\class-media.php",57,{"type":150,"name":374,"callback":375,"priority":81,"file":371,"line":376},"the_posts","change_post_type_to_attachment",59,{"type":150,"name":378,"callback":379,"priority":81,"file":371,"line":380},"wp_prepare_attachment_for_js","prepare_attachment_for_js",62,{"type":150,"name":328,"callback":382,"priority":81,"file":371,"line":383},"set_uploads_subdirectory",98,{"type":150,"name":385,"callback":386,"priority":81,"file":371,"line":46},"wp_insert_attachment_data","set_post_type_on_insert_attachment",{"type":135,"name":388,"callback":389,"file":371,"line":390},"add_attachment","change_post_type_to_attachment_in_cache",102,{"type":150,"name":328,"callback":248,"priority":81,"file":392,"line":393},"vendor-prefixed\\brianhenryie\\bh-wp-private-uploads\\src\\wp-includes\\class-rest-private-uploads-controller.php",120,{"type":150,"name":385,"callback":137,"priority":81,"file":392,"line":306},{"type":150,"name":396,"callback":137,"file":392,"line":397},"wp_insert_post_parent",153,{"type":135,"name":399,"callback":399,"file":400,"line":401},"current_screen","vendor-prefixed\\brianhenryie\\bh-wp-private-uploads\\src\\wp-includes\\class-upload.php",50,{"type":150,"name":403,"callback":403,"file":400,"line":404},"query",51,{"type":135,"name":406,"callback":406,"file":400,"line":262},"wp",{"type":135,"name":408,"callback":408,"file":400,"line":409},"pre_get_posts",53,{"type":150,"name":374,"callback":374,"priority":81,"file":400,"line":411},54,{"type":150,"name":413,"callback":413,"file":400,"line":414},"clean_url",55,{"type":135,"name":170,"callback":170,"file":400,"line":416},56,{"type":150,"name":418,"callback":418,"file":400,"line":372},"manage_upload_columns",{"type":135,"name":159,"callback":420,"file":421,"line":422},"add_script","vendor-prefixed\\wptrt\\admin-notices\\src\\Dismiss.php",70,{"type":135,"name":136,"callback":308,"file":424,"line":425},"vendor-prefixed\\wptrt\\admin-notices\\src\\Notices.php",46,[427,433,436,440,443],{"action":428,"nopriv":429,"callback":430,"hasNonce":431,"hasCapCheck":431,"file":147,"line":432},"bh_wp_autologin_urls_send_magic_link",true,"email_magic_link",false,187,{"action":434,"nopriv":431,"callback":435,"hasNonce":431,"hasCapCheck":431,"file":284,"line":164},"bh_wp_logger_logs_delete","delete",{"action":437,"nopriv":431,"callback":438,"hasNonce":431,"hasCapCheck":431,"file":284,"line":439},"bh_wp_logger_logs_delete_all","delete_all",159,{"action":441,"nopriv":431,"callback":442,"hasNonce":431,"hasCapCheck":431,"file":332,"line":276},"query-attachments","on_query_attachments",{"action":444,"nopriv":431,"callback":445,"hasNonce":429,"hasCapCheck":431,"file":421,"line":446},"wptrt_dismiss_notice","ajax_maybe_dismiss_notice",67,[],[],[],5,4,{"dangerousFunctions":453,"sqlUsage":454,"outputEscaping":461,"fileOperations":198,"externalRequests":32,"nonceChecks":475,"capabilityChecks":451,"bundledLibraries":476},[],{"prepared":455,"raw":58,"locations":456},8,[457],{"file":458,"line":459,"context":460},"uninstall.php",77,"$wpdb->query() with variable interpolation",{"escaped":462,"rawEcho":450,"locations":463},113,[464,468,470,472,474],{"file":465,"line":466,"context":467},"vendor-prefixed\\brianhenryie\\bh-wp-logger\\src\\admin\\class-logs-page.php",181,"raw output",{"file":325,"line":469,"context":467},226,{"file":325,"line":471,"context":467},237,{"file":325,"line":473,"context":467},244,{"file":325,"line":214,"context":467},6,[477],{"name":478,"version":27,"knownCves":479},"Guzzle",[],[481,499,508,526],{"entryPoint":482,"graph":483,"unsanitizedCount":58,"severity":498},"display_page (vendor-prefixed\\brianhenryie\\bh-wp-logger\\src\\admin\\class-logs-page.php:103)",{"nodes":484,"edges":496},[485,490],{"id":486,"type":487,"label":488,"file":465,"line":489},"n0","source","$_GET",129,{"id":491,"type":492,"label":493,"file":465,"line":494,"wp_function":495},"n1","sink","echo() [XSS]",145,"echo",[497],{"from":486,"to":491,"sanitized":431},"medium",{"entryPoint":500,"graph":501,"unsanitizedCount":58,"severity":507},"\u003Cclass-logs-page> (vendor-prefixed\\brianhenryie\\bh-wp-logger\\src\\admin\\class-logs-page.php:0)",{"nodes":502,"edges":505},[503,504],{"id":486,"type":487,"label":488,"file":465,"line":489},{"id":491,"type":492,"label":493,"file":465,"line":494,"wp_function":495},[506],{"from":486,"to":491,"sanitized":431},"low",{"entryPoint":509,"graph":510,"unsanitizedCount":13,"severity":507},"maybe_download_log (vendor-prefixed\\brianhenryie\\bh-wp-logger\\src\\wp-includes\\class-init.php:66)",{"nodes":511,"edges":523},[512,515,518],{"id":486,"type":487,"label":488,"file":513,"line":514},"vendor-prefixed\\brianhenryie\\bh-wp-logger\\src\\wp-includes\\class-init.php",106,{"id":491,"type":516,"label":517,"file":513,"line":514},"transform","→ send_private_file()",{"id":519,"type":492,"label":520,"file":521,"line":155,"wp_function":522},"n2","header() [Header Injection]","vendor-prefixed\\brianhenryie\\bh-wp-private-uploads\\src\\frontend\\class-serve-private-file.php","header",[524,525],{"from":486,"to":491,"sanitized":431},{"from":491,"to":519,"sanitized":429},{"entryPoint":527,"graph":528,"unsanitizedCount":13,"severity":507},"\u003Cclass-init> (vendor-prefixed\\brianhenryie\\bh-wp-logger\\src\\wp-includes\\class-init.php:0)",{"nodes":529,"edges":533},[530,531,532],{"id":486,"type":487,"label":488,"file":513,"line":514},{"id":491,"type":516,"label":517,"file":513,"line":514},{"id":519,"type":492,"label":520,"file":521,"line":155,"wp_function":522},[534,535],{"from":486,"to":491,"sanitized":431},{"from":491,"to":519,"sanitized":429},{"summary":537,"deductions":538},"The plugin \"bh-wp-autologin-urls\" v2.4.2 exhibits a mixed security posture. On the positive side, the code demonstrates good practices in its use of prepared statements for SQL queries (89%) and proper output escaping (96%). The absence of recorded vulnerabilities, including critical and high severity ones, in its history is a strong indicator of a stable and well-maintained codebase. The plugin also appears to avoid dangerous functions and has limited external HTTP requests. However, a significant concern arises from its attack surface. With a total of 5 entry points, 4 of which are AJAX handlers that lack authentication checks, the plugin presents a substantial risk of unauthorized access or manipulation. While the taint analysis did not reveal critical or high severity issues, the presence of flows with unsanitized paths warrants attention, as these could be exploited in conjunction with the unprotected AJAX endpoints.\n\nIn conclusion, while the plugin's historical vulnerability record and general code quality are commendable, the unprotected AJAX handlers create a clear security weakness. The limited taint analysis does not entirely alleviate concerns, especially considering the potential for issues with unsanitized paths. Future development should prioritize implementing proper authentication and capability checks on all AJAX handlers to significantly improve the plugin's security posture.",[539,542],{"reason":540,"points":541},"Unprotected AJAX handlers",15,{"reason":543,"points":450},"Flows with unsanitized paths found","2026-03-16T21:20:08.918Z",{"wat":546,"direct":559},{"assetPaths":547,"generatorPatterns":552,"scriptPaths":553,"versionParams":554},[548,549,550,551],"\u002Fwp-content\u002Fplugins\u002Fbh-wp-autologin-urls\u002Fassets\u002Fbh-wp-autologin-urls-admin.css","\u002Fwp-content\u002Fplugins\u002Fbh-wp-autologin-urls\u002Fassets\u002Fbh-wp-autologin-urls-admin.js","\u002Fwp-content\u002Fplugins\u002Fbh-wp-autologin-urls\u002Fassets\u002Fbh-wp-autologin-urls-login.css","\u002Fwp-content\u002Fplugins\u002Fbh-wp-autologin-urls\u002Fassets\u002Fbh-wp-autologin-urls-login.js",[],[549,551],[555,556,557,558],"bh-wp-autologin-urls-admin.css?ver=","bh-wp-autologin-urls-admin.js?ver=","bh-wp-autologin-urls-login.css?ver=","bh-wp-autologin-urls-login.js?ver=",{"cssClasses":560,"htmlComments":561,"htmlAttributes":562,"restEndpoints":563,"jsGlobals":564,"shortcodeOutput":566},[],[],[],[],[565],"bh_wp_autologin_urls",[]]