[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fCa04z6EBWktoAUZ8UoHzORMQOEOjkjyTJWIYK9UPDJ0":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":25,"download_link":26,"security_score":27,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30,"vulnerabilities":31,"developer":32,"crawl_stats":29,"alternatives":37,"analysis":138,"fingerprints":232},"bazz-callback-widget","Bazz CallBack widget","3.23","glomberg","https:\u002F\u002Fprofiles.wordpress.org\u002Fglomberg\u002F","\u003Cp>The plugin is intended for easy creating a widget on your website.\u003Cbr \u002F>\nThe widget will be performing “call-back function”. That is, you will be recieving client’s phone which the client will have specified in the widget by your e-mail.\u003C\u002Fp>\n\u003Cp>Features:\u003Cbr \u002F>\n* RTL ready\u003C\u002Fp>\n\u003Cp>Supported languages:\u003Cbr \u002F>\n* 🇺🇸 English\u003Cbr \u002F>\n* 🇷🇺 Russian\u003Cbr \u002F>\n* 🇺🇦 Ukrainian\u003Cbr \u002F>\n* 🇫🇷 French\u003Cbr \u002F>\n* 🇮🇹 Italian\u003Cbr \u002F>\n* 🇪🇸 Spanish (Spain)\u003Cbr \u002F>\n* 🇲🇽 Spanish (Mexico)\u003Cbr \u002F>\n* 🇩🇪 German\u003Cbr \u002F>\n* 🇸🇪 Swedish\u003Cbr \u002F>\n* 🇷🇴 Romanian\u003Cbr \u002F>\n* 🇵🇱 Polish\u003Cbr \u002F>\n* 🇳🇱 Dutch\u003Cbr \u002F>\n* 🇬🇷 Greek\u003Cbr \u002F>\n* 🇮🇷 Persian\u003Cbr \u002F>\n* 🇨🇳 Chinese\u003C\u002Fp>\n","This plugin makes a simple widget for callback on your website.",4000,106891,86,33,"2023-03-19T11:52:00.000Z","6.2.9","3.0.1","",[20,21,22,23,24],"bazz","call","call-back","call-request","callback","http:\u002F\u002Fviktor-web.ru","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbazz-callback-widget.3.23.zip",85,0,null,"2026-03-15T15:16:48.613Z",[],{"slug":7,"display_name":7,"profile_url":8,"plugin_count":33,"total_installs":11,"avg_security_score":27,"avg_patch_time_days":34,"trust_score":35,"computed_at":36},1,30,84,"2026-04-04T09:03:56.173Z",[38,58,78,94,119],{"slug":39,"name":40,"version":41,"author":42,"author_profile":43,"description":44,"short_description":45,"active_installs":46,"downloaded":47,"rating":48,"num_ratings":49,"last_updated":50,"tested_up_to":51,"requires_at_least":17,"requires_php":18,"tags":52,"homepage":55,"download_link":56,"security_score":57,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"callpage","CallPage – Callback Widget","1.0.3","CallPage","https:\u002F\u002Fprofiles.wordpress.org\u002Frostyslav-knap\u002F","\u003Cp>CallPage is a tool that helps your website visitors connect with your team through a free call within seconds. It can help you get 30–125% more calls and turn them into revenue.\u003C\u002Fp>\n\u003Ch4>With CallPage, you can:\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Increase the number of quality sales calls\u003C\u002Fli>\n\u003Cli>Improve your website conversion rate\u003C\u002Fli>\n\u003Cli>Improve customer experience\u003C\u002Fli>\n\u003Cli>Reduce lead response time to just seconds\u003C\u002Fli>\n\u003Cli>Manage and control all incoming calls\u003C\u002Fli>\n\u003Cli>Automate call handling with an AI Voice Agent\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fapp.callpage.io\u002Fregister\" rel=\"nofollow ugc\">TRY IT FOR FREE\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch4>Features:\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>fully customizable widget,\u003C\u002Fli>\n\u003Cli>automated callback,\u003C\u002Fli>\n\u003Cli>AI voice agent,\u003C\u002Fli>\n\u003Cli>call forwarding,\u003C\u002Fli>\n\u003Cli>call recording,\u003C\u002Fli>\n\u003Cli>virtual numer,\u003C\u002Fli>\n\u003Cli>meeting scheduling,\u003C\u002Fli>\n\u003Cli>lead distibution,\u003C\u002Fli>\n\u003Cli>scoring rules,\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>All in one tool to increase sales, improve customer experience and business processes..\u003C\u002Fp>\n\u003Ch3>Main products:\u003C\u002Fh3>\n\u003Ch4>Callback Software\u003C\u002Fh4>\n\u003Cp>With CallPage’s website widget, you can instantly connect with visitors and turn them into customers. Add a callback pop-up to your site and let visitors request an immediate call from your team.\u003C\u002Fp>\n\u003Cp>You can customize the pop-up’s design, set display rules, configure call retry and routing options, and easily manage team availability.\u003C\u002Fp>\n\u003Ch4>AI Voice Agent\u003C\u002Fh4>\n\u003Cp>With CallPage’s AI Voice Agent, you can answer calls 24\u002F7. The AI Agent answers incoming calls, handles them like a human, and forwards them to your team only when needed.\u003C\u002Fp>\n\u003Cp>You can connect the Agent with the callback widget, website forms, or a virtual number to manage calls exactly the way you want.\u003C\u002Fp>\n\u003Ch4>Meeting Scheduler\u003C\u002Fh4>\n\u003Cp>Make it easy for visitors to book a meeting with your team. Instead of sending back-and-forth emails, simply show them a clean, easy-to-use booking form. It helps you turn visitors into scheduled meetings.\u003C\u002Fp>\n\u003Ch4>Virtual Number\u003C\u002Fh4>\n\u003Cp>Set up a simple contact center and track all incoming calls in one place. Create IVR and call distribution rules to forward calls to the right person on your team. Record and track calls to make sure you never miss a lead.\u003C\u002Fp>\n\u003Ch4>Call Management & Routing\u003C\u002Fh4>\n\u003Cp>All captured leads are stored in your admin dashboard with their details. Check lead sources, listen to call recordings, and use this data to improve your sales process. Get better insights to close deals faster and with more confidence.\u003C\u002Fp>\n\u003Ch4>Integration\u003C\u002Fh4>\n\u003Cp>CallPage integrates with tools like HubSpot, Salesforce, Zapier, Google Analytics, Sales Manago, Livespace, and many more. See the full list of integrations on our website.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.callpage.io\u002F\" rel=\"nofollow ugc\">Learn more about CallPage\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Pricing and setup\u003C\u002Fh3>\n\u003Cp>Setting up CallPage is simple and requires no coding skills. Just follow our clear instructions and get everything running in under 5 minutes. If you need help, our Support team is always ready to assist you. \u003C\u002Fp>\n\u003Cp>CallPage offers two flexible subscription plans that you can start or cancel anytime. Easily adjust your plan with additional call credits or user seats. Try it free for 14 days and see how CallPage works for your business.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fapp.callpage.io\u002Fregister?utm_source=redirect&utm_medium=wordpress&utm_campaign=trial\" rel=\"nofollow ugc\">Start 14 days free trial\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch4>WATCH HOW TO INSTALL CALLPAGE\u003C\u002Fh4>\n\u003Cp>\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FDANObnlKwiw?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","Widget for callback in 28 seconds! Gain 75% more leads from your website!",1000,46661,94,27,"2026-02-03T12:06:00.000Z","6.7.5",[53,23,24,39,54],"call-button","calls","https:\u002F\u002Fcallpage.io","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcallpage.1.0.3.3.zip",100,{"slug":59,"name":60,"version":61,"author":62,"author_profile":63,"description":64,"short_description":10,"active_installs":57,"downloaded":65,"rating":66,"num_ratings":67,"last_updated":68,"tested_up_to":69,"requires_at_least":70,"requires_php":71,"tags":72,"homepage":76,"download_link":77,"security_score":57,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"zvi-callback-widget","ZVI CallBack widget","1.0","zava75","https:\u002F\u002Fprofiles.wordpress.org\u002Fzava75\u002F","\u003Cp>ZVI CallBack widget WordPress (+ Support Contact Form 7 +Bot Telegram)\u003Cbr \u002F>\nCustomize CallBack widget WordPress (+ Support Contact Form 7 +Bot Telegram)\u003C\u002Fp>\n\u003Cp>Bot Telegram Integrations (Telegram Alert)\u003Cbr \u002F>\nContact Form 7 Integrations (Creating Your Own Form Tags (Shortcodes) – Contact Form 7)\u003Cbr \u002F>\nCustomize Your Forms to Look the Way You Want – Contact Form 7\u003Cbr \u002F>\nDefault form\u003C\u002Fp>\n\u003Cp>Setting the title and subtitle of the form\u003Cbr \u002F>\nChange in appearance\u003Cbr \u002F>\nPosition\u003Cbr \u002F>\nColour\u003Cbr \u002F>\n14 types icon\u003C\u002Fp>\n\u003Cp>E-mail for the form (E-mail Admin by default)\u003Cbr \u002F>\nURL redirect (after successful submission of the default form or Contact Form 7)\u003C\u002Fp>\n\u003Cp>Plugin language support:\u003Cbr \u002F>\n Arabic\u003Cbr \u002F>\n Danish\u003Cbr \u002F>\n German\u003Cbr \u002F>\n English (UK)\u003Cbr \u002F>\n English (United States)\u003Cbr \u002F>\n French (France)\u003Cbr \u002F>\n Spanish (Spain)\u003Cbr \u002F>\n Persian\u003Cbr \u002F>\n Hindi\u003Cbr \u002F>\n Italian\u003Cbr \u002F>\n Japanese\u003Cbr \u002F>\n Kazakh\u003Cbr \u002F>\n Polish\u003Cbr \u002F>\n Romanian\u003Cbr \u002F>\n Russian\u003Cbr \u002F>\n Swedish\u003Cbr \u002F>\n Thai\u003Cbr \u002F>\n Turkish\u003Cbr \u002F>\n Ukrainian\u003Cbr \u002F>\n Chinese (China)\u003C\u002Fp>\n\u003Cp>You can edit and add translations with the free Loco Translate plugin!\u003C\u002Fp>\n\u003Cp>Описание\u003Cbr \u002F>\nZVI CallBack виджет WordPress (+ контактная форма поддержки 7 + Bot Telegram)\u003Cbr \u002F>\nНастроить виджет CallBack для WordPress (+ контактная форма поддержки 7 + Bot Telegram)\u003C\u002Fp>\n\u003Cp>Бот Telegram Integrations (Telegram Alert)\u003Cbr \u002F>\nКонтактная форма 7 Интеграция (Создание собственных тегов формы (шорткоды) – Контактная форма 7)\u003Cbr \u002F>\nНастройте свои формы, чтобы выглядеть так, как вы хотите – контактная форма 7\u003Cbr \u002F>\nФорма по умолчанию\u003C\u002Fp>\n\u003Cp>Установка заголовка и подзаголовка формы\u003Cbr \u002F>\nИзменение внешнего вида\u003Cbr \u002F>\nПозиция\u003Cbr \u002F>\nЦвет\u003Cbr \u002F>\nЗначок 14 типов\u003C\u002Fp>\n\u003Cp>Электронная почта для формы (E-mail Admin по умолчанию)\u003Cbr \u002F>\nПеренаправление URL (после успешной отправки формы по умолчанию или контактной формы 7)\u003C\u002Fp>\n\u003Cp>Языковая поддержка плагинов:\u003Cbr \u002F>\n  арабский\u003Cbr \u002F>\n  датский\u003Cbr \u002F>\n  Немецкий\u003Cbr \u002F>\n  Английский (Великобритания)\u003Cbr \u002F>\n  Английский Соединенные Штаты)\u003Cbr \u002F>\n  Французский (франция)\u003Cbr \u002F>\n  Испанский (Испания)\u003Cbr \u002F>\n  персидский\u003Cbr \u002F>\n  хинди\u003Cbr \u002F>\n  итальянский\u003Cbr \u002F>\n  японский язык\u003Cbr \u002F>\n  казах\u003Cbr \u002F>\n  польский\u003Cbr \u002F>\n  румынский\u003Cbr \u002F>\n  русский\u003Cbr \u002F>\n  шведский\u003Cbr \u002F>\n  тайский\u003Cbr \u002F>\n  турецкий\u003Cbr \u002F>\n  украинец\u003Cbr \u002F>\n  Китайский (Китай)\u003C\u002Fp>\n\u003Cp>Вы можете редактировать и добавлять переводы с помощью бесплатного плагина Loco Translate!\u003C\u002Fp>\n",3095,80,4,"2025-07-07T13:20:00.000Z","6.5.8","4.5","5.4",[22,24,73,74,75],"contact-form","contact-form-7","phone-widget","http:\u002F\u002Fstudio-f1.in.ua\u002Fproject03.html","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fzvi-callback-widget.zip",{"slug":79,"name":80,"version":61,"author":81,"author_profile":82,"description":83,"short_description":84,"active_installs":85,"downloaded":86,"rating":28,"num_ratings":28,"last_updated":87,"tested_up_to":88,"requires_at_least":89,"requires_php":18,"tags":90,"homepage":92,"download_link":93,"security_score":27,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"call-leads","Call Leads WordPress Plugin","avadec","https:\u002F\u002Fprofiles.wordpress.org\u002Favadec\u002F","\u003Cp>With this plugin you can enable call request icon on your website, visitors can fill out a call request form, and you as the admin will receive an instant email notification of the call request.\u003C\u002Fp>\n\u003Cp>Once you Install and activate the plugin, go to the Call Leads settings tab in the dashboard, toggle the “Enable Call Leads” switch, then save changes, the call request icon will automatically show up accross your website, That Easy !!!.\u003C\u002Fp>\n\u003Cp>You can also personalize both the call request icon and form to suit your brand, it also comes with some advanced settings which makes it stand out to other plugin of the same category out there.\u003C\u002Fp>\n\u003Cp>The characteristics of the plugin are:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Easily Customizable to suit your brand color in one click.\u003C\u002Fli>\n\u003Cli>Four different ready to use call request icons.\u003C\u002Fli>\n\u003Cli>Instant email notification when a new lead sends a call request\u003C\u002Fli>\n\u003Cli>Ability to display or remove the call request icon on certain pages and posts.\u003C\u002Fli>\n\u003Cli>Ability to display the call request form when a user scroll to a certain position on pages or posts.\u003C\u002Fli>\n\u003Cli>Ability to display the call request form on all or certain posts\u002Fpages when a user is about to leave your website.\u003C\u002Fli>\n\u003Cli>Fully Integrated with Twilio, all you need is add your Twilio details, so you and your leads can both get an SMS notification.\u003C\u002Fli>\n\u003Cli>Google Recaptcha Integration to protects the call request form from spam and abuse, it does this while letting your valid prospects pass through with ease.\u003C\u002Fli>\n\u003Cli>It supports multilingual characters and localization.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Plugin Customization Options\u003C\u002Fh3>\n\u003Cp>Please visit the \u003Ca href=\"http:\u002F\u002Fcallleads.avadec.com\u002Fcontact\u002F\" title=\"Call Leads support page\" rel=\"nofollow ugc\">support page\u003C\u002Fa> of the plugin for support or further customization options.\u003C\u002Fp>\n\u003Ch3>Requirements\u003C\u002Fh3>\n\u003Cp>The plugin requires to have Javascript enabled in your browser.\u003Cbr \u002F>\nPlease note that old desktop browsers or mobile browsers may not support all of the plugin’s features. In order to get full functionality use the latest versions of browsers, supporting HTML5, AJAX and CSS3.\u003C\u002Fp>\n","The easiest way to get more call leads, turn leads to customers.",20,1366,"2019-09-02T02:54:00.000Z","5.2.24","4.9",[21,22,91,79,23],"call-lead","http:\u002F\u002Fcallleads.avadec.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcall-leads.zip",{"slug":95,"name":96,"version":97,"author":98,"author_profile":99,"description":100,"short_description":101,"active_installs":102,"downloaded":103,"rating":104,"num_ratings":105,"last_updated":106,"tested_up_to":107,"requires_at_least":108,"requires_php":109,"tags":110,"homepage":116,"download_link":117,"security_score":57,"vuln_count":33,"unpatched_count":28,"last_vuln_date":118,"fetched_at":30},"api-key-for-google-maps","API KEY for Google Maps","1.2.14","Stiofan","https:\u002F\u002Fprofiles.wordpress.org\u002Fstiofansisland\u002F","\u003Cp>Retroactively add Google Maps API KEY to any theme or plugin.\u003C\u002Fp>\n\u003Cp>Simply activate, go to Settings>Google API KEY and enter your key.\u003Cbr \u002F>\nThe plugin will then attempt to add this key to all the places it is needed on the front of your website.\u003Cbr \u002F>\nNOTE: this will only work if the Google API has been added as per WordPress standards)\u003C\u002Fp>\n\u003Cp>Since January 2023 Google Maps JavaScript API requires callback parameter. This plugin also fixes JavaScript Error: \u003Ca href=\"https:\u002F\u002Fdevelopers.google.com\u002Fmaps\u002Fdocumentation\u002Fjavascript\u002Furl-params#required_parameters\" rel=\"nofollow ugc\">Loading the Google Maps JavaScript API without a callback is not supported\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>The plugin was created by the GeoDirectory team: \u003Ca href=\"https:\u002F\u002Fwpgeodirectory.com\" rel=\"nofollow ugc\">https:\u002F\u002Fwpgeodirectory.com\u003C\u002Fa>\u003C\u002Fp>\n","Retroactively add Google Maps API KEY to any theme or plugin.",40000,808416,98,55,"2025-12-03T14:16:00.000Z","6.9.4","5.0","5.6",[111,112,113,114,115],"google-maps","google-maps-api-callback","google-maps-api-key","google-maps-callback","google-maps-key","https:\u002F\u002Fwpgeodirectory.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fapi-key-for-google-maps.1.2.14.zip","2022-06-08 10:50:00",{"slug":120,"name":121,"version":122,"author":123,"author_profile":124,"description":125,"short_description":126,"active_installs":46,"downloaded":127,"rating":128,"num_ratings":129,"last_updated":130,"tested_up_to":131,"requires_at_least":132,"requires_php":18,"tags":133,"homepage":136,"download_link":137,"security_score":27,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"wp-router","WP Router","0.5","Jonathan Brinley","https:\u002F\u002Fprofiles.wordpress.org\u002Fjbrinley\u002F","\u003Cp>WordPress’s rewrite rules and query variables provide a powerful system\u003Cbr \u002F>\nfor mapping URL strings to collections of posts. Every request is parsed\u003Cbr \u002F>\ninto query variables and turned into a SQL query via \u003Ccode>$wp_query->query()\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>Sometimes, though, you don’t want to display a list of posts. You just want\u003Cbr \u002F>\na URL to map to a callback function, with the output displayed in place of\u003Cbr \u002F>\nposts in whatever theme you happen to be using.\u003C\u002Fp>\n\u003Cp>That’s where WP Router comes in. It handles all the messy bits of registering\u003Cbr \u002F>\npost types, query variables, rewrite rules, etc., and lets you write code to\u003Cbr \u002F>\ndo what you want it to do. One function call is all it takes to map a\u003Cbr \u002F>\nURL to your designated callback function and display the return value in the page.\u003C\u002Fp>\n\u003Cp>Created by \u003Ca href=\"http:\u002F\u002Fflightless.us\" rel=\"nofollow ugc\">Flightless\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Usage\u003C\u002Fh3>\n\u003Ch4>Creating Routes\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Your plugin should hook into the \u003Ccode>wp_router_generate_routes\u003C\u002Fcode> action.\u003Cbr \u002F>\nThe callback should take one argument, a \u003Ccode>WP_Router\u003C\u002Fcode> object.\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Register a route and its callback using \u003Ccode>WP_Router::add_route( $id, $args )\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>$id\u003C\u002Fcode> is a unique string your plugin should use to identify the route\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Ccode>$args\u003C\u002Fcode> is an associative array, that sets the following properties for your route.\u003Cbr \u002F>\nAny omitted argument will use the default value.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>\u003Ccode>path\u003C\u002Fcode> (required) – A regular expression to match against the request path.\u003Cbr \u002F>\nThis corresponds to the array key you would use when creating rewrite rules for WordPress.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Ccode>query_vars\u003C\u002Fcode> – An associative array, with the keys being query vars, and the\u003Cbr \u002F>\nvalues being explicit strings or integers corresponding to matches in the path regexp.\u003Cbr \u002F>\n Any query variables included here will be automatically registered.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Ccode>title\u003C\u002Fcode> – The title of the page.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Ccode>title_callback\u003C\u002Fcode> – A callback to use for dynamically generating the title.\u003Cbr \u002F>\nDefaults to \u003Ccode>__()\u003C\u002Fcode>. If \u003Ccode>NULL\u003C\u002Fcode>, the \u003Ccode>title\u003C\u002Fcode> argument will be used as-is. if\u003Cbr \u002F>\n    page_callback or \u003Ccode>access_callback\u003C\u002Fcode> returns \u003Ccode>FALSE\u003C\u002Fcode>, \u003Ccode>title_callback\u003C\u002Fcode> will not be called.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>title_callback can be either a single callback function or an array specifying\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>callback functions for specific HTTP methods (e.g., \u003Ccode>GET\u003C\u002Fcode>, \u003Ccode>POST\u003C\u002Fcode>, \u003Ccode>PUT\u003C\u002Fcode>, \u003Ccode>DELETE\u003C\u002Fcode>, etc.).\u003Cbr \u002F>\nIf the latter, the \u003Ccode>default\u003C\u002Fcode> key will be used if no other keys match the current\u003Cbr \u002F>\nrequest method.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Ccode>title_arguments\u003C\u002Fcode> – An array of query variables whose values will be passed\u003Cbr \u002F>\nas arguments to \u003Ccode>title_callback\u003C\u002Fcode>. Defaults to the value of \u003Ccode>title\u003C\u002Fcode>. If an argument\u003Cbr \u002F>\nis not a registered query variable, it will be passed as-is.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Ccode>page_callback\u003C\u002Fcode> (required) – A callback to use for dynamically generating the\u003Cbr \u002F>\ncontents of the page. The callback should either echo or return the contents of\u003Cbr \u002F>\nthe page (if both, the returned value will be appended to the echoed value). If\u003Cbr \u002F>\n    FALSE is returned, nothing will be output, and control of the page contents will\u003Cbr \u002F>\nbe handed back to WordPress. The callback will be called during the \u003Ccode>parse_request\u003C\u002Fcode>\u003Cbr \u002F>\nphase of WordPress’s page load. If \u003Ccode>access_callback\u003C\u002Fcode> returns \u003Ccode>FALSE\u003C\u002Fcode>, \u003Ccode>page_callback\u003C\u002Fcode>\u003Cbr \u002F>\nwill not be called.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>page_callback can be either a single callback function or an array specifying\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>callback functions for specific HTTP methods (e.g., \u003Ccode>GET\u003C\u002Fcode>, \u003Ccode>POST\u003C\u002Fcode>, \u003Ccode>PUT\u003C\u002Fcode>, \u003Ccode>DELETE\u003C\u002Fcode>, etc.).\u003Cbr \u002F>\nIf the latter, the \u003Ccode>default\u003C\u002Fcode> key will be used if no other keys match the current\u003Cbr \u002F>\nrequest method.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Ccode>page_arguments\u003C\u002Fcode> – An array of query variables whose values will be passed as\u003Cbr \u002F>\narguments to \u003Ccode>page_callback\u003C\u002Fcode>. If an argument is not a registered query variable,\u003Cbr \u002F>\nit will be passed as-is.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Ccode>access_callback\u003C\u002Fcode> – A callback to determine if the user has permission to access\u003Cbr \u002F>\nthis page. If \u003Ccode>access_arguments\u003C\u002Fcode> is provided, default is \u003Ccode>current_user_can\u003C\u002Fcode>, otherwise\u003Cbr \u002F>\ndefault is \u003Ccode>TRUE\u003C\u002Fcode>. If the callback returns \u003Ccode>FALSE\u003C\u002Fcode>, anonymous users are redirected to\u003Cbr \u002F>\nthe login page, authenticated users get a 403 error.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>access_callback can be either a single callback function or an array specifying\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>callback functions for specific HTTP methods (e.g., \u003Ccode>GET\u003C\u002Fcode>, \u003Ccode>POST\u003C\u002Fcode>, \u003Ccode>PUT\u003C\u002Fcode>, \u003Ccode>DELETE\u003C\u002Fcode>, etc.).\u003Cbr \u002F>\nIf the latter, the \u003Ccode>default\u003C\u002Fcode> key will be used if no other keys match the current\u003Cbr \u002F>\nrequest method.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Ccode>access_arguments\u003C\u002Fcode> – An array of query variables whose values will be passed\u003Cbr \u002F>\nas arguments to \u003Ccode>access_callback\u003C\u002Fcode>. If an argument is not a registered query variable,\u003Cbr \u002F>\nit will be passed as-is.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Ccode>template\u003C\u002Fcode> – An array of templates that can be used to display the page. If a path\u003Cbr \u002F>\nis absolute, it will be used as-is; relative paths allow for overrides by the theme.\u003Cbr \u002F>\nThe string \u003Ccode>$id\u003C\u002Fcode> will be replaced with the ID of the route. If no template is found,\u003Cbr \u002F>\nfallback templates are (in this order): \u003Ccode>route-$id.php\u003C\u002Fcode>, \u003Ccode>route.php\u003C\u002Fcode>, \u003Ccode>page-$id.php\u003C\u002Fcode>,\u003Cbr \u002F>\n    page.php, \u003Ccode>index.php\u003C\u002Fcode>. If FALSE is given instead of an array, the page contents will\u003Cbr \u002F>\nbe printed before calling \u003Ccode>exit()\u003C\u002Fcode> (you can also accomplish this by printing your output\u003Cbr \u002F>\nand exiting directly from your callback function).\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Example:\u003Cbr \u002F>\n    $router->add_route(‘wp-router-sample’, array(\u003Cbr \u002F>\n        ‘path’ => ‘^wp_router\u002F(.*?)$’,\u003Cbr \u002F>\n        ‘query_vars’ => array(\u003Cbr \u002F>\n            ‘sample_argument’ => 1,\u003Cbr \u002F>\n        ),\u003Cbr \u002F>\n        ‘page_callback’ => array(get_class(), ‘sample_callback’),\u003Cbr \u002F>\n        ‘page_arguments’ => array(‘sample_argument’),\u003Cbr \u002F>\n        ‘access_callback’ => TRUE,\u003Cbr \u002F>\n        ‘title’ => ‘WP Router Sample Page’,\u003Cbr \u002F>\n        ‘template’ => array(‘sample-page.php’, dirname(\u003Cstrong>FILE\u003C\u002Fstrong>).DIRECTORY_SEPARATOR.’sample-page.php’)\u003Cbr \u002F>\n    ));\u003C\u002Fp>\n\u003Cp>In this example, the path \u003Ccode>http:\u002F\u002Fexample.com\u002Fwp_router\u002Fmy_sample_path\u002F\u003C\u002Fcode> will call\u003Cbr \u002F>\nthe function \u003Ccode>sample_callback\u003C\u002Fcode> in the calling class. The value of the \u003Ccode>sample_argument\u003C\u002Fcode>\u003Cbr \u002F>\nquery variable, in this case “my_sample_path”, will be provided as the first and only\u003Cbr \u002F>\nargument to the callback function. If the file \u003Ccode>sample-page.php\u003C\u002Fcode> is found in the theme,\u003Cbr \u002F>\nit will be used as the template, otherwise \u003Ccode>sample-page.php\u003C\u002Fcode> in your plugin directory will\u003Cbr \u002F>\nbe used (if that’s not found either, fall back to \u003Ccode>route-wp-router-sample.php\u003C\u002Fcode>, etc.).\u003C\u002Fp>\n\u003Ch4>Editing Routes\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>You can hook into the \u003Ccode>wp_router_alter_routes\u003C\u002Fcode> action to modify routes created by other plugins. The callback should take one argument, a \u003Ccode>WP_Router\u003C\u002Fcode> object.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Public API Functions\u003C\u002Fh4>\n\u003Cp>Creating or changing routes should always occur in the context of the \u003Ccode>wp_router_generate_routes\u003C\u002Fcode> or \u003Ccode>wp_router_alter_routes\u003C\u002Fcode> actions, using the \u003Ccode>WP_Router\u003C\u002Fcode> object supplied to your callback function.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>WP_Router::edit_route( string $id, array $changes )\u003C\u002Fcode> – update each\u003Cbr \u002F>\nproperty given in \u003Ccode>$changes\u003C\u002Fcode> for the route with the given ID. Any properties\u003Cbr \u002F>\nnot given in \u003Ccode>$changes\u003C\u002Fcode> will be left unaltered.\u003C\u002Fli>\n\u003Cli>\u003Ccode>WP_Router::remove_route( string $id )\u003C\u002Fcode> – delete the route with the given ID\u003C\u002Fli>\n\u003Cli>\u003Ccode>WP_Router::get_route( string $id )\u003C\u002Fcode> – get the \u003Ccode>WP_Route\u003C\u002Fcode> object for the given ID\u003C\u002Fli>\n\u003Cli>\u003Ccode>WP_Router::get_url( string $id, array $arguments )\u003C\u002Fcode> – get the URL to reach the route with the given ID, with the given query variables and their values\u003C\u002Fli>\n\u003Cli>\u003Ccode>WP_Route::get( string $property )\u003C\u002Fcode> – get the value of the specified property for\u003Cbr \u002F>\nthe \u003Ccode>WP_Route\u003C\u002Fcode> instance\u003C\u002Fli>\n\u003C\u002Ful>\n","Provides a simple API for mapping requests to callback functions.",16922,74,3,"2012-08-06T15:06:00.000Z","3.4.2","3.0",[134,135],"callback-functions","url-mapping","https:\u002F\u002Fgithub.com\u002Fjbrinley\u002FWP-Router","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-router.zip",{"attackSurface":139,"codeSignals":187,"taintFlows":221,"riskAssessment":222,"analyzedAt":231},{"hooks":140,"ajaxHandlers":174,"restRoutes":183,"shortcodes":184,"cronEvents":185,"entryPointCount":186,"unprotectedCount":28},[141,147,151,154,158,163,166,170],{"type":142,"name":143,"callback":144,"file":145,"line":146},"action","init","bazz_widget_add_new_options","bazz-callback-widget.php",78,{"type":142,"name":148,"callback":149,"file":145,"line":150},"plugins_loaded","localize_load",96,{"type":142,"name":143,"callback":152,"file":145,"line":153},"bazz_widget_styles",99,{"type":142,"name":155,"callback":156,"file":145,"line":157},"wp_footer","bazz_widget_scripts",108,{"type":159,"name":160,"callback":161,"file":145,"line":162},"filter","wp_mail_from_name","bazz_wp_mail_from_name",179,{"type":142,"name":155,"callback":164,"file":145,"line":165},"bazz_layout",185,{"type":142,"name":167,"callback":168,"file":145,"line":169},"admin_menu","bazz_widget_menu",293,{"type":142,"name":171,"callback":172,"file":145,"line":173},"admin_init","bazz_register_settings",296,[175,181],{"action":176,"nopriv":177,"callback":178,"hasNonce":179,"hasCapCheck":177,"file":145,"line":180},"bazz_widget_action",false,"bazz_widget_send",true,142,{"action":176,"nopriv":179,"callback":178,"hasNonce":179,"hasCapCheck":177,"file":145,"line":182},143,[],[],[],2,{"dangerousFunctions":188,"sqlUsage":189,"outputEscaping":191,"fileOperations":28,"externalRequests":28,"nonceChecks":33,"capabilityChecks":28,"bundledLibraries":220},[],{"prepared":28,"raw":28,"locations":190},[],{"escaped":192,"rawEcho":193,"locations":194},23,12,[195,198,200,202,204,206,208,210,212,214,216,218],{"file":145,"line":196,"context":197},195,"raw output",{"file":145,"line":199,"context":197},196,{"file":145,"line":201,"context":197},197,{"file":145,"line":203,"context":197},201,{"file":145,"line":205,"context":197},205,{"file":145,"line":207,"context":197},208,{"file":145,"line":209,"context":197},239,{"file":145,"line":211,"context":197},252,{"file":145,"line":213,"context":197},369,{"file":145,"line":215,"context":197},374,{"file":145,"line":217,"context":197},386,{"file":145,"line":219,"context":197},390,[],[],{"summary":223,"deductions":224},"The \"bazz-callback-widget\" plugin, version 3.23, exhibits a generally strong security posture with a clean vulnerability history. Static analysis reveals no known CVEs and a commendable lack of dangerous functions, raw SQL queries, or file operations. The presence of a nonce check is also a positive indicator. However, a significant concern arises from the complete absence of capability checks for its two identified AJAX entry points. While the analysis indicates these handlers are not directly exposed without authentication checks (0 unprotected entry points), the lack of explicit capability checks means that any authenticated user, regardless of their role or permissions, could potentially trigger these AJAX actions. This presents a risk of unauthorized actions being performed if the AJAX handlers themselves contain logic that should be restricted to privileged users.\n\nFurthermore, the output escaping is not fully implemented, with 34% of outputs lacking proper escaping. This could lead to cross-site scripting (XSS) vulnerabilities if the data processed by these outputs is not sufficiently sanitized before rendering. The lack of identified taint flows is a positive sign, but this could also be due to the limited scope of the analysis or the absence of complex data processing within the plugin that would trigger such flows.\n\nIn conclusion, while the plugin avoids common pitfalls like raw SQL and dangerous functions, the missing capability checks on AJAX handlers and the incomplete output escaping are notable weaknesses. The absence of past vulnerabilities is a positive indicator of developer diligence, but these identified code signals warrant attention to prevent future security issues. Addressing these specific concerns would significantly bolster the plugin's overall security.",[225,228],{"reason":226,"points":227},"AJAX handlers without capability checks",10,{"reason":229,"points":230},"Unescaped output detected",5,"2026-03-16T18:14:57.076Z",{"wat":233,"direct":252},{"assetPaths":234,"generatorPatterns":242,"scriptPaths":243,"versionParams":244},[235,236,237,238,239,240,241],"\u002Fwp-content\u002Fplugins\u002Fbazz-callback-widget\u002Fcss\u002Fbazz-widget.css","\u002Fwp-content\u002Fplugins\u002Fbazz-callback-widget\u002Fcss\u002Fbazz-widget-admin.css","\u002Fwp-content\u002Fplugins\u002Fbazz-callback-widget\u002Fjs\u002Fjquery.maskedinput.min.js","\u002Fwp-content\u002Fplugins\u002Fbazz-callback-widget\u002Fjs\u002Fjquery.draggable.min.js","\u002Fwp-content\u002Fplugins\u002Fbazz-callback-widget\u002Fjs\u002Fbazz-widget.js","\u002Fwp-content\u002Fplugins\u002Fbazz-callback-widget\u002Fjs\u002Fjquery.ui-slider.js","\u002Fwp-content\u002Fplugins\u002Fbazz-callback-widget\u002Fjs\u002Fjquery.ui.slider-rtl.min.js",[],[237,238,239,240,241],[245,246,247,248,249,250,251],"bazz-callback-widget\u002Fcss\u002Fbazz-widget.css?ver=","bazz-callback-widget\u002Fcss\u002Fbazz-widget-admin.css?ver=","bazz-callback-widget\u002Fjs\u002Fjquery.maskedinput.min.js?ver=","bazz-callback-widget\u002Fjs\u002Fjquery.draggable.min.js?ver=","bazz-callback-widget\u002Fjs\u002Fbazz-widget.js?ver=","bazz-callback-widget\u002Fjs\u002Fjquery.ui-slider.js?ver=","bazz-callback-widget\u002Fjs\u002Fjquery.ui.slider-rtl.min.js?ver=",{"cssClasses":253,"htmlComments":263,"htmlAttributes":264,"restEndpoints":266,"jsGlobals":267,"shortcodeOutput":270},[254,255,256,257,258,259,260,261,262],"bazz-widget","bazz-widget-close","bazz-widget-form-submit","bazz-widget-button","bazz-widget-name-close","bazz-widget-inner-circle","bazz-widget-inner-border","bazz-widget-form-top","bazz-widget-form-bottom",[],[265],"data-bazz-options",[],[268,269],"bazz_ajax","bazz_options",[]]