[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fbHLNjlMuILZ6NoqtB3JDcw3TVfkzcGmEnEBBsGbRcbc":3},{"slug":4,"name":4,"version":5,"author":6,"author_profile":7,"description":8,"short_description":9,"active_installs":10,"downloaded":11,"rating":12,"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":27,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30,"vulnerabilities":31,"developer":62,"crawl_stats":37,"alternatives":69,"analysis":165,"fingerprints":784},"wp-forecast","9.8","tuxlog","https:\u002F\u002Fprofiles.wordpress.org\u002Ftuxlog\u002F","\u003Cp>You are reading the readme.txt file for the wp-forecast plugin.\u003Cbr \u002F>\nwp-forecast is a plugin for the famous wordpress blogging package,\u003Cbr \u002F>\nshowing the weather-data from open-meteo.com and\u002For openweathermap.com.\u003Cbr \u002F>\nplease also refer to the terms of usage of open-meteo.com and\u002For openweathermap.com.\u003C\u002Fp>\n\u003Cp>Features:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Displays the weather data from Open-Meteo.com and OpenWeatherMap.com\u003Cbr \u002F>\n at your wordpress pages, posts or sidebar\u003C\u002Fli>\n\u003Cli>Displays OpenUV.io data \u003C\u002Fli>\n\u003Cli>Let you choose the\n\u003Cul>\n\u003Cli>location (of course)\u003C\u002Fli>\n\u003Cli>the time after the weather data is refreshed\u003C\u002Fli>\n\u003Cli>the langugage \u003C\u002Fli>\n\u003Cli>metric or american measures\u003C\u002Fli>\n\u003Cli>windspeed unit \u003C\u002Fli>\n\u003Cli>the forecast days \u003C\u002Fli>\n\u003Cli>the forecast for up to six\u002Fseven days\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>support wordpress widgets, easy placement 🙂\u003C\u002Fli>\n\u003Cli>customize the information you want to show\u003C\u002Fli>\n\u003Cli>supports pull-down forecast data to efficiently use space\u003C\u002Fli>\n\u003Cli>multiple wp-forecast widget support \u003C\u002Fli>\n\u003Cli>integration into your site via css (see below)\u003C\u002Fli>\n\u003Cli>comes with an api for wordpress-pro’s 😉\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Credits:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Barbary Jany                 testing a lot and bring it to valid XHTML\u003C\u002Fli>\n\u003Cli>Nike Gilhuijs,\u003Cbr \u002F>\nFrans Lieshout, Wim Scholtes translation to dutch\u003C\u002Fli>\n\u003Cli>Luís Reis                    translation to portugues\u003C\u002Fli>\n\u003Cli>Håkan Carlström,\u003Cbr \u002F>\nSusanne Svensso              translation to swedish\u003C\u002Fli>\n\u003Cli>Gabriele von der Ohe         translation to german with entities (for iso-8859-1 or latin1 blogs)\u003C\u002Fli>\n\u003Cli>Martin Loyer\u002FJean-Pierre     translation to french\u003C\u002Fli>\n\u003Cli>Robert Lang                  language file for en_US\u003C\u002Fli>\n\u003Cli>Detti Giulio\u002FStefano Boeri   translation to italian\u003C\u002Fli>\n\u003Cli>Eilif Nordseth               translation to norwegian\u003C\u002Fli>\n\u003Cli>Michael S.R. Petersen        translation to dansk\u003C\u002Fli>\n\u003Cli>Jaakko Kangosjärvi           translation to finish\u003C\u002Fli>\n\u003Cli>Lukasz “linshi” Linhard      translation to polish\u003C\u002Fli>\n\u003Cli>Castmir & Alejandro          translation to spanish\u003C\u002Fli>\n\u003Cli>Tamas Koos                   translation to hungarian\u003C\u002Fli>\n\u003Cli>Valeria Pellegrini           translation to russian\u003C\u002Fli>\n\u003Cli>Valentina Boeri              translation to romanian \u003C\u002Fli>\n\u003Cli>Roland Geci                  translation to slovak\u003C\u002Fli>\n\u003Cli>Pavel Soukenik               translation to czech\u003C\u002Fli>\n\u003Cli>Pavel Karnaukhov             translation to ukraine\u003C\u002Fli>\n\u003Cli>Zoran Maric                  translation to serbian (latin)\u003C\u002Fli>\n\u003Cli>Petar Petrov                 translation to bulgarian\u003C\u002Fli>\n\u003Cli>Udi Burg                     translation to hebrew\u003C\u002Fli>\n\u003Cli>Uli Kozok                    translation to indonesian\u003C\u002Fli>\n\u003Cli>Ali Zemani                   translation to persian\u003C\u002Fli>\n\u003Cli>Amizda Idriz                 translation to bosnian\u003C\u002Fli>\n\u003Cli>Lovrenco Vladislavić         translation to croatian\u003C\u002Fli>\n\u003Cli>All the others giving feedback about missing features and bugs.\u003Cbr \u002F>\nThank you very much for your contribution to wp-forecast.   \u003C\u002Fli>\n\u003Cli>\n\u003Cp>Weather Icon Font by me Erik FLowers Weather Icons licensed under SIL OFL 1.1\u003C\u002Fp>\n\u003Cp>Installation:\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Col>\n\u003Cli>\n\u003Cp>Install via the WordPress plugin admin dialog (search for wp-forecast) or\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Upload to your plugins folder, usually \u003Ccode>wp-content\u002Fplugins\u002F\u003C\u002Fcode>, keeping\u003Cbr \u002F>\nthe directory structure intact (i.e. wp-forecast.php should end up\u003Cbr \u002F>\nin \u003Ccode>wp-content\u002Fplugins\u002Fwp-forecast\u002F\u003C\u002Fcode>).\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Activate the plugin on the plugin screen.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Visit the configuration page (\u003Ccode>Options -> WP-forecast\u003C\u002Fcode>) to pick the\u003Cbr \u002F>\nnumber of widgets, data to display and to change any other option.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Visit the Themes\u002FWidgets page to place your wp-forecast widget within\u003Cbr \u002F>\nyour themes sidebars or insert it manually and edit your template\u003Cbr \u002F>\nfile and put the wp-forecast function where you want your weather\u003Cbr \u002F>\ndata to show up.\u003Cbr \u002F>\nExample: \u003Ccode>\u003Cul>\u003Cli>\u003Cbr \u002F>\n             \u003C?php if(function_exists(wp_forecast)) {\u003Cbr \u002F>\n               wp_forecast( \u003Cwidget_id> );\u003Cbr \u002F>\n             } ?>\u003Cbr \u002F>\n         \u003C\u002Fli>\u003C\u002Ful>\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>You have to replace \u003Cwidget_id> with the choosen widget id.\u003Cbr \u002F>\n For the first widget use wp_forecast(“A”), for the second\u003Cbr \u002F>\n wp_forecast(“B”) and so on.\u003Cbr \u002F>\n In most cases it is advisable to put the call into a div environment.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Optional\u003Cbr \u002F>\nIf you would like to have another set of icons download it\u003Cbr \u002F>\nfrom \u003Ca href=\"http:\u002F\u002Faccunet.accuweather.com\u002Fwx\u002Faccunet\u002Fgraphics_icons.htm\" rel=\"nofollow ugc\">http:\u002F\u002Faccunet.accuweather.com\u002Fwx\u002Faccunet\u002Fgraphics_icons.htm\u003C\u002Fa>\u003Cbr \u002F>\nand put it into the wp-content\u002Fplugins\u002Fwp-forecast\u002Ficons folder\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Optional\u003Cbr \u002F>\nIf you would like to change the style, just edit wp-forecast.css\u003Cbr \u002F>\nthere are three classes div.wp-forecast for outer formatting,\u003Cbr \u002F>\ntable.wp-forecast for the middle part or iconpart and\u003Cbr \u002F>\nwp-forecast-details for everything below the icon\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Translations\u003C\u002Fh3>\n\u003Cp>wp-forecast comes with various translations, located in the directory \u003Ccode>lang\u003C\u002Fcode>.\u003Cbr \u002F>\n   if you would like to add a new translation, just take the file\u003Cbr \u002F>\n   wp-forecast.pot (in the wp-forecast main directory) copy it to\u003Cbr \u002F>\n   wp-forecast_-.po and edit it to add your translations\u003Cbr \u002F>\n   (e.g. with poedit).\u003C\u002Fp>\n\u003Cp>Please be aware that the number codes stand for the weather-situations.\u003Cbr \u002F>\n   you can see the mapping in wp-forecast-en_US-en_US.po. there are also\u003Cbr \u002F>\n   the letters N, S, W, E they stand for the winddirections and can be\u003Cbr \u002F>\n   translates either.\u003C\u002Fp>\n\u003Cp>To use your own translation, a different one as the default just rename the\u003Cbr \u002F>\n   appropriate file wp-forecast_-.po and\u003Cbr \u002F>\n   wp-forecast_-.mo\u003C\u002Fp>\n\u003Cp>To add your translations online at the Translate WordPress project please visit\u003Cbr \u002F>\n   https:\u002F\u002Ftranslate.wordpress.org\u002Fprojects\u002Fwp-plugins\u002Fwp-forecast. This should be the prefered\u003Cbr \u002F>\n   way from now on.\u003C\u002Fp>\n","wp-forecast is a highly customizable plugin for wordpress, showing weather-data from open-meteo.com and\u002For openweathermap.com.",5000,426346,82,24,"2026-01-11T17:58:00.000Z","6.9.4","6.0","",[19,20,21,22,23],"forecast","open-meteo","openweathermap","weather","widget","http:\u002F\u002Fwww.tuxlog.de","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-forecast.9.8.zip",99,2,0,"2024-03-28 00:00:00","2026-03-15T15:16:48.613Z",[32,48],{"id":33,"url_slug":34,"title":35,"description":36,"plugin_slug":4,"theme_slug":37,"affected_versions":38,"patched_in_version":39,"severity":40,"cvss_score":41,"cvss_vector":42,"vuln_type":43,"published_date":29,"updated_date":44,"references":45,"days_to_patch":47},"CVE-2024-30429","wp-forecast-authenticated-contributor-stored-cross-site-scripting","wp-forecast \u003C= 9.2 - Authenticated (Contributor+) Stored Cross-Site Scripting","The wp-forecast plugin for WordPress is vulnerable to Stored Cross-Site Scripting in versions up to, and including, 9.2 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.",null,"\u003C=9.2","9.3","medium",6.4,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:L\u002FUI:N\u002FS:C\u002FC:L\u002FI:L\u002FA:N","Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')","2024-04-04 00:14:42",[46],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002Fe53cd64c-9278-48cc-8181-1d6c40a05eb7?source=api-prod",7,{"id":49,"url_slug":50,"title":51,"description":52,"plugin_slug":4,"theme_slug":37,"affected_versions":53,"patched_in_version":54,"severity":40,"cvss_score":55,"cvss_vector":56,"vuln_type":43,"published_date":57,"updated_date":58,"references":59,"days_to_patch":61},"CVE-2022-35725","wp-forecast-authenticated-administrator-stored-cross-site-scripting","wp-forecast \u003C= 7.5 - Authenticated (Administrator+) Stored Cross-Site Scripting","The wp-forecast plugin for WordPress is vulnerable to Stored Cross-Site Scripting via an unknown parameter in versions up to, and including, 7.5 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with administrator-level permissions and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.","\u003C=7.5","8.0",5.5,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:H\u002FUI:N\u002FS:C\u002FC:L\u002FI:L\u002FA:N","2022-08-25 00:00:00","2024-01-22 19:56:02",[60],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F0551a2ca-b920-4a60-9c16-0bb14fd63a23?source=api-prod",516,{"slug":6,"display_name":6,"profile_url":7,"plugin_count":63,"total_installs":64,"avg_security_score":65,"avg_patch_time_days":66,"trust_score":67,"computed_at":68},6,6300,98,660,78,"2026-04-04T02:14:19.924Z",[70,92,112,130,146],{"slug":71,"name":72,"version":73,"author":74,"author_profile":75,"description":76,"short_description":77,"active_installs":78,"downloaded":79,"rating":80,"num_ratings":81,"last_updated":82,"tested_up_to":83,"requires_at_least":84,"requires_php":17,"tags":85,"homepage":89,"download_link":90,"security_score":91,"vuln_count":28,"unpatched_count":28,"last_vuln_date":37,"fetched_at":30},"weather-forecast-widget","Weather Forecast Widget","1.1.7","adminbergtourentipptirol","https:\u002F\u002Fprofiles.wordpress.org\u002Fadminbergtourentipptirol\u002F","\u003Ch4>GENERAL\u003C\u002Fh4>\n\u003Cp>The weather data for this widget will be retrieved from the \u003Ca href=\"https:\u002F\u002Fopenweathermap.org\u002Fapi\" rel=\"nofollow ugc\">OpenWeatherMap API\u003C\u002Fa> with your own API key.\u003C\u002Fp>\n\u003Ch4>OPENWEATHERMAP API\u003C\u002Fh4>\n\u003Cp>⚠️ \u003Cstrong>Important Note:\u003C\u002Fstrong> OpenWeatherMap has transitioned from version One Call API 2.5 to the new \u003Cstrong>One Call API 3.0\u003C\u002Fstrong>.\u003Cbr \u002F>\nAs of now, \u003Cstrong>usage of the API is no longer possible without adding valid billing information (e.g. a credit card)\u003C\u002Fstrong> to your OpenWeatherMap account – even for the free tier.\u003C\u002Fp>\n\u003Cp>This means that the \u003Cstrong>Weather Widget will not work anymore\u003C\u002Fstrong> unless:\u003Cbr \u002F>\n– you switch to the new \u003Cstrong>One Call 3.0 API\u003C\u002Fstrong>, and\u003Cbr \u002F>\n– you have a valid payment method on file in your OpenWeatherMap account.\u003C\u002Fp>\n\u003Cp>🔒 \u003Cstrong>Recommendation:\u003C\u002Fstrong>\u003Cbr \u002F>\nTo avoid unexpected charges, it is highly recommended to set a \u003Cstrong>billing cap \u002F usage limit\u003C\u002Fstrong> in your OpenWeatherMap account under \u003Ca href=\"https:\u002F\u002Fhome.openweathermap.org\u002Fplans\" rel=\"nofollow ugc\">Billing Plans\u003C\u002Fa> after adding a payment method.\u003C\u002Fp>\n\u003Cp>For pricing details and limits, visit: \u003Ca href=\"https:\u002F\u002Fopenweathermap.org\u002Fprice\" rel=\"nofollow ugc\">Pricing – OpenWeatherMap\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch4>INPUT DATA\u003C\u002Fh4>\n\u003Cp>You can show the weather for a \u003Cstrong>CITY\u003C\u002Fstrong> (input data: city name) or for specific \u003Cstrong>COORDINATES\u003C\u002Fstrong> (input data: latitude & longitude coordinates) in the widget.\u003C\u002Fp>\n\u003Ch4>PLACEMENT\u002FSHORTCODE\u003C\u002Fh4>\n\u003Cp>The weather widget can be implemented in a page, a post or into the widget area with the help of the shortcode \u003Cstrong>[weather_forecast_widget]\u003C\u002Fstrong>. Furthermore you´ll be able to pass different attributes to each shortcode to override your settings for this widget placement (e.g. manage widget title with an shortcode attribute).\u003C\u002Fp>\n\u003Ch4>TEMPLATES\u003C\u002Fh4>\n\u003Cp>Currently you can choose 3 templates for the widget.\u003Cbr \u002F>\n* \u003Cstrong>Template 1\u003C\u002Fstrong>\u003Cbr \u002F>\n    * Current day´s weather with a weather forecast for the next 3 days\u003Cbr \u002F>\n* \u003Cstrong>Template 2\u003C\u002Fstrong>\u003Cbr \u002F>\n    * \u003Cstrong>Template 2 uses Bootstrap!\u003C\u002Fstrong>\u003Cbr \u002F>\n    * Current day´s weather with an hourly weather forecast and a weather forecast for the next 3 days\u003Cbr \u002F>\n* \u003Cstrong>Template 3\u003C\u002Fstrong>\u003Cbr \u002F>\n    * \u003Cstrong>Template 3 uses Bootstrap!\u003C\u002Fstrong>\u003Cbr \u002F>\n    * Weather for the current day and for the next 7 days, each with an hourly weather forecast and a weather forecast for the next 3 days\u003Cbr \u002F>\n* \u003Cstrong>Alert Template 1\u003C\u002Fstrong>\u003Cbr \u002F>\n    * \u003Cstrong>Alert Template 1 uses Bootstrap!\u003C\u002Fstrong>\u003Cbr \u002F>\n    * Active weather alerts\u003C\u002Fp>\n\u003Ch4>BACKGROUND IMAGE\u003C\u002Fh4>\n\u003Cp>For this widget, you´ll be able to choose \u003Cstrong>your own background image\u003C\u002Fstrong>. Either you set a static background image in the widget settings or you choose the dynamic variant (thumbnail of the page\u002Fpost, where the shortcode is placed) will be used as a background image.\u003C\u002Fp>\n\u003Ch4>WEATHER DATA\u003C\u002Fh4>\n\u003Cp>In addition to the \u003Cstrong>daily weather forecast\u003C\u002Fstrong>, an \u003Cstrong>hourly weather forecast\u003C\u002Fstrong> can also be displayed in the widget. Both the daily and hourly weather forecast can be collapsed.\u003C\u002Fp>\n\u003Ch4>WEATHER ALERTS\u003C\u002Fh4>\n\u003Cp>The weather widget also shows weather alerts. These alerts are dismissable.\u003C\u002Fp>\n\u003Ch4>WEATHER ICONS\u003C\u002Fh4>\n\u003Cp>In the widget you´ll find awesome and beautiful weather icons. In the plugins settings page you can choose which weather icons you want to use for the widget.\u003Cbr \u002F>\n* \u003Cstrong>Animated Icons Filled\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>Animated Icons Not Filled\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>Static Icons\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ch4>LAZY LOADING\u003C\u002Fh4>\n\u003Cp>You have the possibility to load the widget with \u003Cstrong>lazy loading\u003C\u002Fstrong> (ajax) to load the data only when necessary.\u003C\u002Fp>\n\u003Ch4>CACHING\u003C\u002Fh4>\n\u003Cp>Nowadays \u003Cstrong>caching\u003C\u002Fstrong> is an important topic. This weather forecast widget makes it possible to cache the received weather data for the next visitor, who will visit your website page\u002Fpost next time. You´ll be able to set your desired caching time in the settings (caching time possible up to 1 hour => this should ensure that the weather data in the widget is as current as possible). With this caching possibility you´ll also save API calls.\u003C\u002Fp>\n\u003Ch4>SHORTCODE EXAMPLES\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Retrieve weather data for a city\n\u003Cul>\n\u003Cli>\u003Cstrong>[weather_forecast_widget city=”Kufstein”]\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Retrieve weather data for a city and show city name as title text\n\u003Cul>\n\u003Cli>\u003Cstrong>[weather_forecast_widget city=”Kufstein” title_cityname=”X”]\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Retrieve weather data for specific coordinates\n\u003Cul>\n\u003Cli>\u003Cstrong>[weather_forecast_widget lat=”47.5824″ lon=”12.1627″]\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Retrieve weather data for specific coordinates and show “Weather for Weather Widget” as title text\n\u003Cul>\n\u003Cli>\u003Cstrong>[weather_forecast_widget lat=”47.5824″ lon=”12.1627″ title_overwrite=”Weather for Weather Widget”]\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Retrieve weather data with lazy loading and template 3 for specific coordinates and expand the hourly and daily forecast initially\n\u003Cul>\n\u003Cli>\u003Cstrong>[weather_forecast_widget lazy_loading=”X” template=”3″ hourly_forecast=”show” daily_forecast=”show” lat=”47.5824″ lon=”12.1627″]\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Retrieve weather alerts with lazy loading and alert template 1 for specific coordinates and expand the weather alerts initially\n\u003Cul>\n\u003Cli>\u003Cstrong>[weather_forecast_widget lazy_loading=”X” template=”alert_1″ alerts=”show” lat=”47.5824″ lon=”12.1627″ max_width=”500px”]\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>SETTINGS\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Input box for your \u003Cstrong>OPEN WEATHER MAP API key\u003C\u002Fstrong> (the api key will be tested for validity while saving!)\u003C\u002Fli>\n\u003Cli>Dropdown box to choose if caching of the weather data is necessary and if yes, which \u003Cstrong>CACHE TIME\u003C\u002Fstrong> should be used.\u003C\u002Fli>\n\u003Cli>Media uploader\u002Fselector to choose a \u003Cstrong>BACKGROUND IMAGE\u003C\u002Fstrong> for the widget (optional – otherwise the page\u002Fpost thumbnail will be used)\u003C\u002Fli>\n\u003Cli>Radiobuttons to select the \u003Cstrong>WIDGET TITLE TEXT\u003C\u002Fstrong>, which will be displayed in the widget. This setting will be used as \u003Cstrong>a default if nothing else will be passed in the shortcode\u003C\u002Fstrong>. If you´ll pass \u003Cstrong>title_cityname\u003C\u002Fstrong> or \u003Cstrong>title_overwrite\u003C\u002Fstrong> as a shortcode attribute, this attribute will be processed in the widget output.\u003C\u002Fli>\n\u003Cli>Dropdown to choose the \u003Cstrong>POST META FIELD\u003C\u002Fstrong> for the title text, if you selected the readio button “\u003Cstrong>Post Meta Field (choose one of the dropdown below)\u003C\u002Fstrong>“\u003C\u002Fli>\n\u003Cli>Choose, which \u003Cstrong>WEATHER VALUES\u003C\u002Fstrong> should be shown in the widget\u003C\u002Fli>\n\u003Cli>Choose, which \u003Cstrong>UNITS\u003C\u002Fstrong> should be used to display the weather values\u003C\u002Fli>\n\u003Cli>Choose, which \u003Cstrong>WEATHER ICONS\u003C\u002Fstrong> should be used for the widget\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>TRANSLATIONS\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>German – adminbergtourentipptirol\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Credits\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Static Weather Icons provided from \u003Cstrong>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ferikflowers\u002Fweather-icons\" rel=\"nofollow ugc\">Erik Flowers Weather Icons\u003C\u002Fa>\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>Animated Weather Icons provided from \u003Cstrong>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbasmilius\u002Fweather-icons\" rel=\"nofollow ugc\">Basmilius Weather Icons\u003C\u002Fa>\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Ful>\n","\"Weather Forecast Widget\" displays current weather and hourly\u002Fdaily forecasts in a widget using a shortcode.",200,6666,80,3,"2025-08-02T18:33:00.000Z","6.8.5","3.0.1",[21,86,22,87,88],"shortcode","weather-forecast","weather-widget","https:\u002F\u002Fwww.bergtourentipp-tirol.at","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fweather-forecast-widget.1.1.7.zip",100,{"slug":93,"name":94,"version":95,"author":96,"author_profile":97,"description":98,"short_description":99,"active_installs":100,"downloaded":101,"rating":102,"num_ratings":103,"last_updated":104,"tested_up_to":105,"requires_at_least":106,"requires_php":107,"tags":108,"homepage":110,"download_link":111,"security_score":91,"vuln_count":28,"unpatched_count":28,"last_vuln_date":37,"fetched_at":30},"waypoint-hd-weather-widget","HD Weather Widget by The Waypoint","1.2.0","JohnGrefe","https:\u002F\u002Fprofiles.wordpress.org\u002Fjohngrefe\u002F","\u003Cp>HD Weather Widget displays current weather conditions and multi-day forecasts with stunning high-definition backgrounds. Perfect for blogs, news sites, and local business websites.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Features:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>HD Quality\u003C\u002Fstrong>: 331dpi weather condition backgrounds (48 unique conditions)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>5-Day Forecast\u003C\u002Fstrong>: Configurable forecast display (1-5 days or hide)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Current Conditions\u003C\u002Fstrong>: Temperature, humidity, wind speed and direction\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Multiple Locations\u003C\u002Fstrong>: Unlimited widgets for different cities\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Modern API\u003C\u002Fstrong>: OpenWeatherMap v2.5 with HTTPS security\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Responsive Design\u003C\u002Fstrong>: Works beautifully on all screen sizes\u003C\u002Fli>\n\u003Cli>\u003Cstrong>WebP Optimized\u003C\u002Fstrong>: 92% smaller images with PNG fallback\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Shortcode Support\u003C\u002Fstrong>: Easy integration into posts and pages\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Widget Ready\u003C\u002Fstrong>: Drag-and-drop sidebar widget included\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Highly Cached\u003C\u002Fstrong>: 30-minute cache for optimal performance\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Modernized for 2025:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>This plugin has been completely modernized with:\u003Cbr \u002F>\n* PHP 8.2 compatibility\u003Cbr \u002F>\n* WordPress 6.6.1 compatibility\u003Cbr \u002F>\n* WebP image optimization (24 MB \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> 1.8 MB)\u003Cbr \u002F>\n* Security hardening (output escaping, nonces, HTTPS)\u003Cbr \u002F>\n* User-friendly error messages\u003Cbr \u002F>\n* Comprehensive admin documentation\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Easy Setup:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Col>\n\u003Cli>Get a free API key from \u003Ca href=\"https:\u002F\u002Fopenweathermap.org\u002Fappid\" rel=\"nofollow ugc\">OpenWeatherMap\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Enter your API key in Settings \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> HD Weather Widget\u003C\u002Fli>\n\u003Cli>Use the shortcode generator or widget panel\u003C\u002Fli>\n\u003Cli>Copy and paste the shortcode into any post or page\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Credits\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Original Plugin\u003C\u002Fstrong>: John Grefe, James Steward – The Waypoint (2013)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Based On\u003C\u002Fstrong>: Awesome Weather Widget by Hal Gatewood\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Modernization\u003C\u002Fstrong>: John Grefe & Evaline Grefe\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Weather Data\u003C\u002Fstrong>: OpenWeatherMap API\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Weather Icons\u003C\u002Fstrong>: HD backgrounds by The Waypoint\u003C\u002Fli>\n\u003C\u002Ful>\n","A beautiful HD weather widget with high-resolution 331dpi backgrounds, 5-day forecasts, and modern OpenWeatherMap integration.",10,7822,70,4,"2025-10-24T21:12:00.000Z","6.6.5","5.0","7.4",[19,109,21,22,23],"hd","http:\u002F\u002Fconsultants.thewaypoint.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwaypoint-hd-weather-widget.1.2.0.zip",{"slug":113,"name":114,"version":115,"author":116,"author_profile":117,"description":118,"short_description":119,"active_installs":120,"downloaded":121,"rating":12,"num_ratings":122,"last_updated":123,"tested_up_to":83,"requires_at_least":124,"requires_php":17,"tags":125,"homepage":127,"download_link":128,"security_score":26,"vuln_count":27,"unpatched_count":28,"last_vuln_date":129,"fetched_at":30},"weather-atlas","Weather Atlas Widget","3.0.4","Weather Atlas","https:\u002F\u002Fprofiles.wordpress.org\u002Fweatheratlas\u002F","\u003Cp>\u003Cstrong>The Weather Widget with the Most Active Installations on WordPress.org\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>NEW FEATURE!\u003C\u002Fstrong>\u003Cbr \u002F>\nENHANCE YOUR WEBSITE BY DEDICATING AN ENTIRE PAGE TO THE WEATHER.\u003C\u002Fp>\n\u003Cp>In addition to all relevant weather information, the widget has the option to display\u003Cbr \u002F>\n\u003Cstrong>DETAILED TEXTUAL DAILY AND LONG-TERM\u003C\u002Fstrong> weather forecast.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Full page demo (live sites example)\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Ca href=\"https:\u002F\u002Fstormandoutage.com\u002Fweather-center\u002F\" rel=\"nofollow ugc\">stormandoutage.com\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Widget demo (live sites example)\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Ca href=\"https:\u002F\u002Fwww.marbella-tennis-lessons.com\u002Fen\u002Ftennis-weather\u002F\" rel=\"nofollow ugc\">marbella-tennis-lessons.com\u003C\u002Fa>\u003Cbr \u002F>\n* \u003Ca href=\"https:\u002F\u002Fwww.morethangolfmarrakech.co.uk\u002Fdependableweather\u002F\" rel=\"nofollow ugc\">morethangolfmarrakech.co.uk\u003C\u002Fa>\u003Cbr \u002F>\n* \u003Ca href=\"https:\u002F\u002Fwww.airciu.com\u002F\" rel=\"nofollow ugc\">airciu.com\u003C\u002Fa>\u003Cbr \u002F>\n* \u003Ca href=\"https:\u002F\u002Fballinghambolstonehentland-pc.gov.uk\u002F\" rel=\"nofollow ugc\">ballinghambolstonehentland-pc.gov.uk\u003C\u002Fa>\u003Cbr \u002F>\n* \u003Ca href=\"https:\u002F\u002Fpanarbora.de\u002F\" rel=\"nofollow ugc\">panarbora.de\u003C\u002Fa>\u003Cbr \u002F>\n* \u003Ca href=\"https:\u002F\u002Ftheamericanmag.com\u002F\" rel=\"nofollow ugc\">theamericanmag.com\u003C\u002Fa>\u003Cbr \u002F>\n* \u003Ca href=\"https:\u002F\u002Flindos-weddings-venue.com\u002F\" rel=\"nofollow ugc\">lindos-weddings-venue.com\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch4>Weather Atlas Widget is:\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Highly Customizable: Modify design to present data in various forms incl. languages and units\u003C\u002Fli>\n\u003Cli>Responsive: Automatically adapts appearance for mobile displays, ensuring optimal viewing on any device\u003C\u002Fli>\n\u003Cli>Smart: Background and borders change according to current temperature; widget’s font size adjusts to match the website’s font and page placement\u003C\u002Fli>\n\u003Cli>Beautiful: Elegant weather condition icons are simple and adapt in size, color, and shades to the widget’s text\u003C\u002Fli>\n\u003Cli>Simple: All options are easy-to-change, and, above all, Weather information is presented in a clear and concise way\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Responsive Web Design: Adapts to mobile displays\u003C\u002Fli>\n\u003Cli>Easy Styling: Effortlessly styles to suit your theme\u003C\u002Fli>\n\u003Cli>Weather Icons: Visually appealing and informative\u003C\u002Fli>\n\u003Cli>Comprehensive Data: Current conditions, hourly, and long-term forecast\u003C\u002Fli>\n\u003Cli>Detailed Forecast: In-depth weather information\u003C\u002Fli>\n\u003Cli>Flexible Placement: Suitable for content or sidebar\u003C\u002Fli>\n\u003Cli>Global Reach: Covers worldwide locations\u003C\u002Fli>\n\u003Cli>Multilingual and Unit Support: Accommodates multiple languages and units\u003C\u002Fli>\n\u003Cli>Multiple Widgets Option: Allows for multiple simultanious widget implementations\u003C\u002Fli>\n\u003Cli>Simple Setup: Easy to configure and use\u003Cbr \u002F>\nand\u003C\u002Fli>\n\u003Cli>Key-Free Operation: No need to register for keys; the widget just works 🙂\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Responsive Web Design\u003C\u002Fh4>\n\u003Cp>When placed in a horizontal layout (e.g., within an article), the widget reformats to a vertical layout on mobile devices.\u003Cbr \u002F>\nDetails of the current condition (such as feels-like temperature, wind, humidity, pressure, UV index) and forecasts extending beyond 3 hours\u002Fdays are hidden on mobile devices to maintain an uncluttered appearance and preserve the design on narrow displays.\u003C\u002Fp>\n\u003Ch4>Easy Styling\u003C\u002Fh4>\n\u003Cp>Choose from two predefined layouts (vertical and horizontal) and customize the widget to fit your website.\u003Cbr \u002F>\nFont size can be manually set (in px, pt, em, rem, %, etc.) to override the automatic adjustment to the website’s font size and page placement.\u003Cbr \u002F>\nBackground color, which adapts to the current temperature, can be set to a fixed color, including transparency options.\u003Cbr \u002F>\nText color, automatically optimized for contrast against the background, can also be manually overridden.\u003C\u002Fp>\n\u003Ch4>Weather Icons\u003C\u002Fh4>\n\u003Cp>The weather condition icons are elegantly designed, simple, and adapt in size, color, and shade to match the widget’s text.\u003C\u002Fp>\n\u003Ch4>Comprehensive Data\u003C\u002Fh4>\n\u003Cp>Select from a range of weather information, including current conditions, hourly, and long-term forecasts.\u003Cbr \u002F>\nCurrent conditions display temperature, weather icon, feels-like temperature, wind, humidity, pressure, UV index, and sunrise\u002Fsunset times.\u003Cbr \u002F>\nHourly forecasts provide up to 5 hours of temperature predictions with weather icons, while the daily forecast offers up to 5 days of high\u002Flow temperatures and weather conditions.\u003C\u002Fp>\n\u003Ch4>Versatile Placement\u003C\u002Fh4>\n\u003Cp>The Weather Atlas Widget is designed for flexibility, allowing placement either in a sidebar or within the main content of your site.\u003Cbr \u002F>\nIt supports integration through user-friendly Gutenberg blocks or via a simple shortcode option, offering versatility and ease of use within your WordPress site.\u003C\u002Fp>\n\u003Ch4>Worldwide Locations\u003C\u002Fh4>\n\u003Cp>Access over 800,000 locations from 238 countries and territories. Your location is likely included 🙂\u003C\u002Fp>\n\u003Ch4>Languages\u003C\u002Fh4>\n\u003Cp>The widget automatically selects the language based on your site’s language settings (Settings \u002F General \u002F Site Language).\u003Cbr \u002F>\nIf a local translation is unavailable, it defaults to English.\u003Cbr \u002F>\nLocal translations can be updated for further customization.\u003C\u002Fp>\n\u003Ch4>Units\u003C\u002Fh4>\n\u003Cp>Weather data is displayed in either the Imperial (°F, in, mi) or Metric system (°C, mb, mm, km).\u003C\u002Fp>\n\u003Ch4>Multiple Widgets Option\u003C\u002Fh4>\n\u003Cp>Multiple widgets can be placed on the same page, each with individual settings and operating independently.\u003Cbr \u002F>\nThe widgets display cached weather data from your database and periodically update from our service, ensuring no slowdown to your website.\u003C\u002Fp>\n\u003Ch4>Easy Setup\u003C\u002Fh4>\n\u003Cp>All options are straightforward to configure. For further assistance, please visit our \u003Ca href=\"..\u002Fplugins\u002Fweather-atlas\u002F#faq\" rel=\"nofollow ugc\">FAQ\u003C\u002Fa> and then drop us a line in the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fweather-atlas\" rel=\"ugc\">support forum\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>Key-Free Setup\u003C\u002Fh4>\n\u003Cp>No registration is required for the widget to function\u003C\u002Fp>\n\u003Ch4>Tags\u003C\u002Fh4>\n\u003Cp>weather, weather widget, forecast, location, weather atlas\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fweather-atlas\" rel=\"ugc\">Support\u003C\u002Fa>\u003Cbr \u002F>\n  For any inquiries about implementing or customizing the widget, or if you have suggestions for improvements and new features, feel free to \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fweather-atlas#new-topic-0\" rel=\"ugc\">reach out on our support forum\u003C\u002Fa>. We are dedicated to assisting every user with installation (which is rarely needed) and seamlessly integrating the widget into their website. Your feedback also helps us enhance the widget in future updates, incorporating the most requested features.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fweather-atlas\u002Freviews\u002F\" rel=\"ugc\">Reviews\u003C\u002Fa>\u003Cbr \u002F>\n  A little bit of \u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=XpqqjU7u5Yc\" rel=\"nofollow ugc\">love\u003C\u002Fa> never hurt nobody.\u003Cbr \u002F>\n  If you like our work (or not), please \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fweather-atlas\u002Freviews\u002F#new-topic-0\" rel=\"ugc\">let us, and the world know\u003C\u002Fa>.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n","The Weather Widget with the Most Active Installations. Highly customizable, simple & beautiful. Detailed current weather, hourly & daily forecasts",9000,179380,41,"2025-07-04T13:45:00.000Z","4.0",[19,126,22,113,88],"location","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fweather-atlas\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fweather-atlas.zip","2024-11-18 00:00:00",{"slug":131,"name":132,"version":133,"author":134,"author_profile":135,"description":136,"short_description":137,"active_installs":138,"downloaded":139,"rating":28,"num_ratings":28,"last_updated":140,"tested_up_to":83,"requires_at_least":141,"requires_php":17,"tags":142,"homepage":144,"download_link":145,"security_score":91,"vuln_count":28,"unpatched_count":28,"last_vuln_date":37,"fetched_at":30},"free-weather","Free Weather","1.0.0","weather25","https:\u002F\u002Fprofiles.wordpress.org\u002Fweather25\u002F","\u003Cp>The best free weather forecast widget plugin!\u003C\u002Fp>\n\u003Cp>Weather25.com offers an accurate weather forecast for all cities around the world.\u003Cbr \u002F>\nJust set the city and country and embed the widget in your website\u002Fblog.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Widgets are free of charge\u003C\u002Fli>\n\u003Cli>Widget style can be customized\u003C\u002Fli>\n\u003Cli>Responsive weather widget\u003C\u002Fli>\n\u003Cli>No development skills are needed\u003C\u002Fli>\n\u003Cli>High performance and lightweight code\u003C\u002Fli>\n\u003Cli>SEO friendly – no iframes\u003C\u002Fli>\n\u003Cli>Select your display language\u003C\u002Fli>\n\u003Cli>Block editor \u002F Shortcode support \u002F Classic Widgets \u002F Legacy widgets\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>** For special customization requests, please contact this mail -> dev@weather25.com\u003C\u002Fp>\n\u003Cp>The weather plugin is relying on a 3rd party as a service, the widget is using weather services provided by weather25.com.\u003Cbr \u002F>\n* Service provider link – https:\u002F\u002Fwww.weather25.com\u003Cbr \u002F>\n* Service provider terms of use link – https:\u002F\u002Fwww.weather25.com\u002Fterms\u003Cbr \u002F>\n* Service privacy policy link – https:\u002F\u002Fwww.weather25.com\u002Fprivacy\u003C\u002Fp>\n\u003Ch3>Easy Installation\u003C\u002Fh3>\n\u003Cp>There are several options for installation\u003C\u002Fp>\n\u003Ch3>Block Editor\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Open the Block Editor for the post or page where you want the widget.\u003C\u002Fli>\n\u003Cli>Add the “Free Weather Widget” block.\u003C\u002Fli>\n\u003Cli>Customize the widget settings as desired.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Shortcode\u003C\u002Fh3>\n\u003Cp>Insert \u003Ccode>[weather city=\"Rome\" country=\"Italy\"]\u003C\u002Fcode> into your content, replacing \u003Ccode>CityName\u003C\u002Fcode> and \u003Ccode>CountryName\u003C\u002Fcode> with your location.\u003C\u002Fp>\n\u003Ch3>Classic Widgets\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Go to \u003Ccode>Appearance > Widgets\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>Add the “Free Weather Widget” to your sidebar.\u003C\u002Fli>\n\u003Cli>Configure the settings and save.\u003C\u002Fli>\n\u003C\u002Fol>\n","Add a free 6-day weather forecast widget to your site. Clean design, accurate data — perfect for blogs, news, or travel websites.",300,3686,"2025-05-08T09:47:00.000Z","4.0.1",[131,22,87,143,88],"weather-plugin","https:\u002F\u002Fwww.weather25.com\u002Fwidgets","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ffree-weather.1.0.0.zip",{"slug":147,"name":148,"version":149,"author":150,"author_profile":151,"description":152,"short_description":153,"active_installs":78,"downloaded":154,"rating":65,"num_ratings":47,"last_updated":155,"tested_up_to":156,"requires_at_least":157,"requires_php":17,"tags":158,"homepage":162,"download_link":163,"security_score":164,"vuln_count":28,"unpatched_count":28,"last_vuln_date":37,"fetched_at":30},"australian-weather-widget-willyweather","Australian Weather Widget – WillyWeather","1.5","WillyWeather","https:\u002F\u002Fprofiles.wordpress.org\u002Fwillyweather\u002F","\u003Cp>The most accurate Australian weather widgets, with data provided by the Bureau of Meteorology (BoM). Willyweather weather widgets come in many different shapes and sizes, you can choose your own colours, and select from multiple weather types such as Weather, Wind, Rain, Swell, Tides, UV, Sun and Moon.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Accurate Australian data provided by the BoM.\u003C\u002Fli>\n\u003Cli>Beautiful retina graphics with stylish animations.\u003C\u002Fli>\n\u003Cli>Powered by the same WillyWeather API that was built for the award winning \u003Ca href=\"https:\u002F\u002Fitunes.apple.com\u002Fau\u002Fapp\u002Fwillyweather\u002Fid592978502\" rel=\"nofollow ugc\">WillyWeather iPhone app\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>Choose from a wide selection of widget shapes and sizes:\n\u003Cul>\n\u003Cli>Sidebar\u003C\u002Fli>\n\u003Cli>Full Page\u003C\u002Fli>\n\u003Cli>Leaderboard\u003C\u002Fli>\n\u003Cli>Thin bar\u003C\u002Fli>\n\u003Cli>High bar\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Choose your own colours to suit your website.\u003C\u002Fli>\n\u003Cli>Adjust the width of any of the widgets to suit your website.\u003C\u002Fli>\n\u003Cli>Scrollable wind and swell graphs (sidebar and full page).\u003C\u002Fli>\n\u003Cli>Add any of the weather types below to a sidebar or full page widget, selected via tabs.\n\u003Cul>\n\u003Cli>Weather\u003C\u002Fli>\n\u003Cli>Wind\u003C\u002Fli>\n\u003Cli>Tides\u003C\u002Fli>\n\u003Cli>Swell\u003C\u002Fli>\n\u003Cli>Rain\u003C\u002Fli>\n\u003Cli>UV\u003C\u002Fli>\n\u003Cli>Sun\u003C\u002Fli>\n\u003Cli>Moon\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Change tab ordering via drag and drop (the first weather type in the list will be the default).\u003C\u002Fli>\n\u003Cli>Choose a fixed location or add a search facility.\u003C\u002Fli>\n\u003Cli>Choose from a database of over 17,000 Australian locations.\u003C\u002Fli>\n\u003Cli>Update the widget at any time.\u003C\u002Fli>\n\u003C\u002Ful>\n","Australian weather widgets for Wordpress, with the latest data sourced from the Bureau of Meteorology (BoM). Custom designs to suit any website.",9060,"2017-10-16T05:59:00.000Z","4.8.28","3.6.1",[159,160,87,88,161],"bom-widget","bureau-of-meteorology","willyweather-widget","http:\u002F\u002Fwillyweather.com.au\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Faustralian-weather-widget-willyweather.1.5.zip",85,{"attackSurface":166,"codeSignals":287,"taintFlows":530,"riskAssessment":769,"analyzedAt":783},{"hooks":167,"ajaxHandlers":264,"restRoutes":280,"shortcodes":281,"cronEvents":286,"entryPointCount":100,"unprotectedCount":28},[168,174,179,181,186,188,190,191,193,199,201,206,210,214,218,222,225,228,232,236,239,243,247,249,250,252,253,254,255,256,257,258,259,260,261,263],{"type":169,"name":170,"callback":171,"file":172,"line":173},"filter","the_posts","virtual_page","class-wpf-virtualpage.php",75,{"type":169,"name":175,"callback":176,"priority":100,"file":177,"line":178},"plugin_locale","wpf_lplug","class-wpfuvwidget.php",94,{"type":169,"name":175,"callback":176,"priority":100,"file":177,"line":180},171,{"type":169,"name":182,"callback":183,"file":184,"line":185},"widget_text","do_shortcode","shortcodes.php",62,{"type":169,"name":170,"callback":171,"file":187,"line":173},"trunk\\class-wpf-virtualpage.php",{"type":169,"name":175,"callback":176,"priority":100,"file":189,"line":178},"trunk\\class-wpfuvwidget.php",{"type":169,"name":175,"callback":176,"priority":100,"file":189,"line":180},{"type":169,"name":182,"callback":183,"file":192,"line":185},"trunk\\shortcodes.php",{"type":194,"name":195,"callback":196,"file":197,"line":198},"action","admin_notices","wpf_accuweather_problem_notice","trunk\\wp-forecast-admin.php",68,{"type":169,"name":175,"callback":176,"priority":100,"file":197,"line":200},89,{"type":169,"name":202,"callback":203,"file":204,"line":205},"safe_style_css","closure","trunk\\wp-forecast.php",212,{"type":194,"name":207,"callback":208,"file":204,"line":209},"init","wp_forecast_init",417,{"type":194,"name":211,"callback":212,"file":204,"line":213},"admin_init","wp_forecast_admin_init",418,{"type":194,"name":215,"callback":216,"file":204,"line":217},"wp_enqueue_scripts","wp_forecast_css",421,{"type":194,"name":219,"callback":220,"file":204,"line":221},"widgets_init","reg_wpf_widget",436,{"type":194,"name":219,"callback":223,"file":204,"line":224},"reg_wpf_uv_widget",437,{"type":194,"name":215,"callback":226,"file":204,"line":227},"wp_forecast_css_nowp",505,{"type":194,"name":229,"callback":230,"file":204,"line":231},"admin_menu","wp_forecast_admin",530,{"type":194,"name":233,"callback":234,"file":204,"line":235},"plugins_loaded","widget_wp_forecast_init",533,{"type":194,"name":207,"callback":237,"file":204,"line":238},"wpf_filter_url",536,{"type":169,"name":240,"callback":241,"priority":100,"file":242,"line":200},"upgrader_pre_install","hm_backup_wpf","trunk\\wpf-autoupdate.php",{"type":169,"name":244,"callback":245,"priority":100,"file":242,"line":246},"upgrader_post_install","hm_recover_wpf",90,{"type":194,"name":195,"callback":196,"file":248,"line":198},"wp-forecast-admin.php",{"type":169,"name":175,"callback":176,"priority":100,"file":248,"line":200},{"type":169,"name":202,"callback":203,"file":251,"line":205},"wp-forecast.php",{"type":194,"name":207,"callback":208,"file":251,"line":209},{"type":194,"name":211,"callback":212,"file":251,"line":213},{"type":194,"name":215,"callback":216,"file":251,"line":217},{"type":194,"name":219,"callback":220,"file":251,"line":221},{"type":194,"name":219,"callback":223,"file":251,"line":224},{"type":194,"name":215,"callback":226,"file":251,"line":227},{"type":194,"name":229,"callback":230,"file":251,"line":231},{"type":194,"name":233,"callback":234,"file":251,"line":235},{"type":194,"name":207,"callback":237,"file":251,"line":238},{"type":169,"name":240,"callback":241,"priority":100,"file":262,"line":200},"wpf-autoupdate.php",{"type":169,"name":244,"callback":245,"priority":100,"file":262,"line":246},[265,269,271,274,276,277,278,279],{"action":266,"nopriv":267,"callback":266,"hasNonce":267,"hasCapCheck":268,"file":197,"line":185},"wpf_search_ajax",true,false,{"action":266,"nopriv":268,"callback":266,"hasNonce":267,"hasCapCheck":268,"file":197,"line":270},63,{"action":272,"nopriv":267,"callback":272,"hasNonce":267,"hasCapCheck":268,"file":197,"line":273},"wpf_check_ajax",64,{"action":272,"nopriv":268,"callback":272,"hasNonce":267,"hasCapCheck":268,"file":197,"line":275},65,{"action":266,"nopriv":267,"callback":266,"hasNonce":267,"hasCapCheck":268,"file":248,"line":185},{"action":266,"nopriv":268,"callback":266,"hasNonce":267,"hasCapCheck":268,"file":248,"line":270},{"action":272,"nopriv":267,"callback":272,"hasNonce":267,"hasCapCheck":268,"file":248,"line":273},{"action":272,"nopriv":268,"callback":272,"hasNonce":267,"hasCapCheck":268,"file":248,"line":275},[],[282,285],{"tag":283,"callback":283,"file":184,"line":284},"wpforecast",61,{"tag":283,"callback":283,"file":192,"line":284},[],{"dangerousFunctions":288,"sqlUsage":289,"outputEscaping":291,"fileOperations":527,"externalRequests":528,"nonceChecks":527,"capabilityChecks":28,"bundledLibraries":529},[],{"prepared":28,"raw":28,"locations":290},[],{"escaped":292,"rawEcho":293,"locations":294},458,154,[295,298,300,302,304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338,340,342,344,346,348,350,352,354,356,358,360,362,364,366,368,370,372,374,376,378,380,382,384,386,388,390,392,394,396,398,400,402,404,406,408,410,412,414,416,418,420,422,424,426,428,430,432,434,436,438,440,442,444,446,448,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526],{"file":197,"line":296,"context":297},278,"raw output",{"file":197,"line":299,"context":297},282,{"file":197,"line":301,"context":297},717,{"file":197,"line":303,"context":297},719,{"file":197,"line":305,"context":297},747,{"file":197,"line":307,"context":297},755,{"file":197,"line":309,"context":297},756,{"file":197,"line":311,"context":297},763,{"file":197,"line":313,"context":297},769,{"file":197,"line":315,"context":297},776,{"file":197,"line":317,"context":297},779,{"file":197,"line":319,"context":297},783,{"file":197,"line":321,"context":297},798,{"file":197,"line":323,"context":297},801,{"file":197,"line":325,"context":297},805,{"file":197,"line":327,"context":297},809,{"file":197,"line":329,"context":297},811,{"file":197,"line":331,"context":297},813,{"file":197,"line":333,"context":297},819,{"file":197,"line":335,"context":297},828,{"file":197,"line":337,"context":297},829,{"file":197,"line":339,"context":297},830,{"file":197,"line":341,"context":297},833,{"file":197,"line":343,"context":297},839,{"file":197,"line":345,"context":297},845,{"file":197,"line":347,"context":297},851,{"file":197,"line":349,"context":297},857,{"file":197,"line":351,"context":297},863,{"file":197,"line":353,"context":297},870,{"file":197,"line":355,"context":297},894,{"file":197,"line":357,"context":297},898,{"file":197,"line":359,"context":297},917,{"file":197,"line":361,"context":297},919,{"file":197,"line":363,"context":297},928,{"file":197,"line":365,"context":297},935,{"file":197,"line":367,"context":297},941,{"file":197,"line":369,"context":297},945,{"file":197,"line":371,"context":297},946,{"file":197,"line":373,"context":297},947,{"file":197,"line":375,"context":297},950,{"file":197,"line":377,"context":297},971,{"file":197,"line":379,"context":297},982,{"file":197,"line":381,"context":297},993,{"file":197,"line":383,"context":297},1014,{"file":197,"line":385,"context":297},1035,{"file":197,"line":387,"context":297},1046,{"file":197,"line":389,"context":297},1057,{"file":197,"line":391,"context":297},1068,{"file":197,"line":393,"context":297},1089,{"file":197,"line":395,"context":297},1111,{"file":197,"line":397,"context":297},1133,{"file":197,"line":399,"context":297},1155,{"file":197,"line":401,"context":297},1166,{"file":197,"line":403,"context":297},1177,{"file":197,"line":405,"context":297},1188,{"file":197,"line":407,"context":297},1195,{"file":197,"line":409,"context":297},1207,{"file":197,"line":411,"context":297},1212,{"file":197,"line":413,"context":297},1213,{"file":197,"line":415,"context":297},1214,{"file":197,"line":417,"context":297},1215,{"file":197,"line":419,"context":297},1216,{"file":197,"line":421,"context":297},1217,{"file":197,"line":423,"context":297},1218,{"file":197,"line":425,"context":297},1219,{"file":197,"line":427,"context":297},1220,{"file":197,"line":429,"context":297},1221,{"file":197,"line":431,"context":297},1223,{"file":197,"line":433,"context":297},1280,{"file":197,"line":435,"context":297},1348,{"file":197,"line":437,"context":297},1350,{"file":197,"line":439,"context":297},1358,{"file":197,"line":441,"context":297},1365,{"file":197,"line":443,"context":297},1372,{"file":197,"line":445,"context":297},1379,{"file":197,"line":447,"context":297},1387,{"file":197,"line":449,"context":297},1447,{"file":248,"line":296,"context":297},{"file":248,"line":299,"context":297},{"file":248,"line":301,"context":297},{"file":248,"line":303,"context":297},{"file":248,"line":305,"context":297},{"file":248,"line":307,"context":297},{"file":248,"line":309,"context":297},{"file":248,"line":311,"context":297},{"file":248,"line":313,"context":297},{"file":248,"line":315,"context":297},{"file":248,"line":317,"context":297},{"file":248,"line":319,"context":297},{"file":248,"line":321,"context":297},{"file":248,"line":323,"context":297},{"file":248,"line":325,"context":297},{"file":248,"line":327,"context":297},{"file":248,"line":329,"context":297},{"file":248,"line":331,"context":297},{"file":248,"line":333,"context":297},{"file":248,"line":335,"context":297},{"file":248,"line":337,"context":297},{"file":248,"line":339,"context":297},{"file":248,"line":341,"context":297},{"file":248,"line":343,"context":297},{"file":248,"line":345,"context":297},{"file":248,"line":347,"context":297},{"file":248,"line":349,"context":297},{"file":248,"line":351,"context":297},{"file":248,"line":353,"context":297},{"file":248,"line":355,"context":297},{"file":248,"line":357,"context":297},{"file":248,"line":359,"context":297},{"file":248,"line":361,"context":297},{"file":248,"line":363,"context":297},{"file":248,"line":365,"context":297},{"file":248,"line":367,"context":297},{"file":248,"line":369,"context":297},{"file":248,"line":371,"context":297},{"file":248,"line":373,"context":297},{"file":248,"line":375,"context":297},{"file":248,"line":377,"context":297},{"file":248,"line":379,"context":297},{"file":248,"line":381,"context":297},{"file":248,"line":383,"context":297},{"file":248,"line":385,"context":297},{"file":248,"line":387,"context":297},{"file":248,"line":389,"context":297},{"file":248,"line":391,"context":297},{"file":248,"line":393,"context":297},{"file":248,"line":395,"context":297},{"file":248,"line":397,"context":297},{"file":248,"line":399,"context":297},{"file":248,"line":401,"context":297},{"file":248,"line":403,"context":297},{"file":248,"line":405,"context":297},{"file":248,"line":407,"context":297},{"file":248,"line":409,"context":297},{"file":248,"line":411,"context":297},{"file":248,"line":413,"context":297},{"file":248,"line":415,"context":297},{"file":248,"line":417,"context":297},{"file":248,"line":419,"context":297},{"file":248,"line":421,"context":297},{"file":248,"line":423,"context":297},{"file":248,"line":425,"context":297},{"file":248,"line":427,"context":297},{"file":248,"line":429,"context":297},{"file":248,"line":431,"context":297},{"file":248,"line":433,"context":297},{"file":248,"line":435,"context":297},{"file":248,"line":437,"context":297},{"file":248,"line":439,"context":297},{"file":248,"line":441,"context":297},{"file":248,"line":443,"context":297},{"file":248,"line":445,"context":297},{"file":248,"line":447,"context":297},{"file":248,"line":449,"context":297},14,18,[],[531,554,618,639,652,662,693,706,719,729,746,754],{"entryPoint":532,"graph":533,"unsanitizedCount":553,"severity":40},"wpf_search_ajax (trunk\\wp-forecast-admin.php:74)",{"nodes":534,"edges":550},[535,540,544],{"id":536,"type":537,"label":538,"file":197,"line":539},"n0","source","$_POST",103,{"id":541,"type":542,"label":543,"file":197,"line":539},"n1","transform","→ get_loclist()",{"id":545,"type":546,"label":547,"file":248,"line":548,"wp_function":549},"n2","sink","wp_remote_get() [SSRF]",297,"wp_remote_get",[551,552],{"from":536,"to":541,"sanitized":268},{"from":541,"to":545,"sanitized":268},1,{"entryPoint":555,"graph":556,"unsanitizedCount":100,"severity":40},"\u003Cwp-forecast-admin> (trunk\\wp-forecast-admin.php:0)",{"nodes":557,"edges":607},[558,561,565,566,568,570,572,574,577,580,585,589,592,598,601,604],{"id":536,"type":537,"label":559,"file":197,"line":560},"$_POST (x12)",83,{"id":541,"type":546,"label":562,"file":197,"line":563,"wp_function":564},"echo() [XSS]",235,"echo",{"id":545,"type":537,"label":538,"file":197,"line":560},{"id":567,"type":546,"label":547,"file":197,"line":548,"wp_function":549},"n3",{"id":569,"type":537,"label":538,"file":197,"line":539},"n4",{"id":571,"type":542,"label":543,"file":197,"line":539},"n5",{"id":573,"type":546,"label":547,"file":248,"line":548,"wp_function":549},"n6",{"id":575,"type":537,"label":538,"file":197,"line":576},"n7",231,{"id":578,"type":542,"label":579,"file":197,"line":576},"n8","→ check_url()",{"id":581,"type":546,"label":582,"file":248,"line":583,"wp_function":584},"n9","wp_remote_request() [SSRF]",161,"wp_remote_request",{"id":586,"type":537,"label":587,"file":197,"line":588},"n10","$_POST (x7)",275,{"id":590,"type":542,"label":591,"file":197,"line":588},"n11","→ wpf_update_option()",{"id":593,"type":546,"label":594,"file":595,"line":596,"wp_function":597},"n12","update_option() [Settings Manipulation]","trunk\\funclib.php",104,"update_option",{"id":599,"type":537,"label":538,"file":197,"line":600},"n13",501,{"id":602,"type":542,"label":603,"file":197,"line":600},"n14","→ wpf_sub_admin_form()",{"id":605,"type":546,"label":562,"file":248,"line":606,"wp_function":564},"n15",1408,[608,609,610,611,612,613,614,615,616,617],{"from":536,"to":541,"sanitized":267},{"from":545,"to":567,"sanitized":267},{"from":569,"to":571,"sanitized":268},{"from":571,"to":573,"sanitized":268},{"from":575,"to":578,"sanitized":268},{"from":578,"to":581,"sanitized":268},{"from":586,"to":590,"sanitized":268},{"from":590,"to":593,"sanitized":268},{"from":599,"to":602,"sanitized":268},{"from":602,"to":605,"sanitized":268},{"entryPoint":619,"graph":620,"unsanitizedCount":47,"severity":40},"wpf_filter_url (trunk\\wp-forecast.php:459)",{"nodes":621,"edges":635},[622,625,627,630,632],{"id":536,"type":537,"label":623,"file":204,"line":624},"$_GET",465,{"id":541,"type":546,"label":562,"file":204,"line":626,"wp_function":564},490,{"id":545,"type":537,"label":628,"file":204,"line":629},"$_GET (x6)",484,{"id":567,"type":542,"label":631,"file":204,"line":629},"→ show()",{"id":569,"type":546,"label":562,"file":633,"line":634,"wp_function":564},"wp-forecast-show.php",569,[636,637,638],{"from":536,"to":541,"sanitized":268},{"from":545,"to":567,"sanitized":268},{"from":567,"to":569,"sanitized":268},{"entryPoint":640,"graph":641,"unsanitizedCount":47,"severity":40},"\u003Cwp-forecast> (trunk\\wp-forecast.php:0)",{"nodes":642,"edges":648},[643,644,645,646,647],{"id":536,"type":537,"label":623,"file":204,"line":624},{"id":541,"type":546,"label":562,"file":204,"line":626,"wp_function":564},{"id":545,"type":537,"label":628,"file":204,"line":629},{"id":567,"type":542,"label":631,"file":204,"line":629},{"id":569,"type":546,"label":562,"file":633,"line":634,"wp_function":564},[649,650,651],{"from":536,"to":541,"sanitized":268},{"from":545,"to":567,"sanitized":268},{"from":567,"to":569,"sanitized":268},{"entryPoint":653,"graph":654,"unsanitizedCount":553,"severity":40},"wpf_search_ajax (wp-forecast-admin.php:74)",{"nodes":655,"edges":659},[656,657,658],{"id":536,"type":537,"label":538,"file":248,"line":539},{"id":541,"type":542,"label":543,"file":248,"line":539},{"id":545,"type":546,"label":547,"file":248,"line":548,"wp_function":549},[660,661],{"from":536,"to":541,"sanitized":268},{"from":541,"to":545,"sanitized":268},{"entryPoint":663,"graph":664,"unsanitizedCount":100,"severity":40},"\u003Cwp-forecast-admin> (wp-forecast-admin.php:0)",{"nodes":665,"edges":682},[666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681],{"id":536,"type":537,"label":559,"file":248,"line":560},{"id":541,"type":546,"label":562,"file":248,"line":563,"wp_function":564},{"id":545,"type":537,"label":538,"file":248,"line":560},{"id":567,"type":546,"label":547,"file":248,"line":548,"wp_function":549},{"id":569,"type":537,"label":538,"file":248,"line":539},{"id":571,"type":542,"label":543,"file":248,"line":539},{"id":573,"type":546,"label":547,"file":248,"line":548,"wp_function":549},{"id":575,"type":537,"label":538,"file":248,"line":576},{"id":578,"type":542,"label":579,"file":248,"line":576},{"id":581,"type":546,"label":582,"file":248,"line":583,"wp_function":584},{"id":586,"type":537,"label":587,"file":248,"line":588},{"id":590,"type":542,"label":591,"file":248,"line":588},{"id":593,"type":546,"label":594,"file":595,"line":596,"wp_function":597},{"id":599,"type":537,"label":538,"file":248,"line":600},{"id":602,"type":542,"label":603,"file":248,"line":600},{"id":605,"type":546,"label":562,"file":248,"line":606,"wp_function":564},[683,684,685,686,687,688,689,690,691,692],{"from":536,"to":541,"sanitized":267},{"from":545,"to":567,"sanitized":267},{"from":569,"to":571,"sanitized":268},{"from":571,"to":573,"sanitized":268},{"from":575,"to":578,"sanitized":268},{"from":578,"to":581,"sanitized":268},{"from":586,"to":590,"sanitized":268},{"from":590,"to":593,"sanitized":268},{"from":599,"to":602,"sanitized":268},{"from":602,"to":605,"sanitized":268},{"entryPoint":694,"graph":695,"unsanitizedCount":47,"severity":40},"wpf_filter_url (wp-forecast.php:459)",{"nodes":696,"edges":702},[697,698,699,700,701],{"id":536,"type":537,"label":623,"file":251,"line":624},{"id":541,"type":546,"label":562,"file":251,"line":626,"wp_function":564},{"id":545,"type":537,"label":628,"file":251,"line":629},{"id":567,"type":542,"label":631,"file":251,"line":629},{"id":569,"type":546,"label":562,"file":633,"line":634,"wp_function":564},[703,704,705],{"from":536,"to":541,"sanitized":268},{"from":545,"to":567,"sanitized":268},{"from":567,"to":569,"sanitized":268},{"entryPoint":707,"graph":708,"unsanitizedCount":47,"severity":40},"\u003Cwp-forecast> (wp-forecast.php:0)",{"nodes":709,"edges":715},[710,711,712,713,714],{"id":536,"type":537,"label":623,"file":251,"line":624},{"id":541,"type":546,"label":562,"file":251,"line":626,"wp_function":564},{"id":545,"type":537,"label":628,"file":251,"line":629},{"id":567,"type":542,"label":631,"file":251,"line":629},{"id":569,"type":546,"label":562,"file":633,"line":634,"wp_function":564},[716,717,718],{"from":536,"to":541,"sanitized":268},{"from":545,"to":567,"sanitized":268},{"from":567,"to":569,"sanitized":268},{"entryPoint":720,"graph":721,"unsanitizedCount":28,"severity":728},"wpf_check_ajax (trunk\\wp-forecast-admin.php:132)",{"nodes":722,"edges":726},[723,725],{"id":536,"type":537,"label":538,"file":197,"line":724},204,{"id":541,"type":546,"label":562,"file":197,"line":563,"wp_function":564},[727],{"from":536,"to":541,"sanitized":267},"low",{"entryPoint":730,"graph":731,"unsanitizedCount":103,"severity":728},"wpf_admin_form (trunk\\wp-forecast-admin.php:312)",{"nodes":732,"edges":741},[733,736,737,738,739,740],{"id":536,"type":537,"label":734,"file":197,"line":735},"$_POST (x3)",351,{"id":541,"type":542,"label":591,"file":197,"line":735},{"id":545,"type":546,"label":594,"file":595,"line":596,"wp_function":597},{"id":567,"type":537,"label":538,"file":197,"line":600},{"id":569,"type":542,"label":603,"file":197,"line":600},{"id":571,"type":546,"label":562,"file":248,"line":606,"wp_function":564},[742,743,744,745],{"from":536,"to":541,"sanitized":268},{"from":541,"to":545,"sanitized":268},{"from":567,"to":569,"sanitized":268},{"from":569,"to":571,"sanitized":268},{"entryPoint":747,"graph":748,"unsanitizedCount":28,"severity":728},"wpf_check_ajax (wp-forecast-admin.php:132)",{"nodes":749,"edges":752},[750,751],{"id":536,"type":537,"label":538,"file":248,"line":724},{"id":541,"type":546,"label":562,"file":248,"line":563,"wp_function":564},[753],{"from":536,"to":541,"sanitized":267},{"entryPoint":755,"graph":756,"unsanitizedCount":103,"severity":728},"wpf_admin_form (wp-forecast-admin.php:312)",{"nodes":757,"edges":764},[758,759,760,761,762,763],{"id":536,"type":537,"label":734,"file":248,"line":735},{"id":541,"type":542,"label":591,"file":248,"line":735},{"id":545,"type":546,"label":594,"file":595,"line":596,"wp_function":597},{"id":567,"type":537,"label":538,"file":248,"line":600},{"id":569,"type":542,"label":603,"file":248,"line":600},{"id":571,"type":546,"label":562,"file":248,"line":606,"wp_function":564},[765,766,767,768],{"from":536,"to":541,"sanitized":268},{"from":541,"to":545,"sanitized":268},{"from":567,"to":569,"sanitized":268},{"from":569,"to":571,"sanitized":268},{"summary":770,"deductions":771},"The \"wp-forecast\" plugin version 9.8 exhibits a mixed security posture. On the positive side, it demonstrates strong practices regarding SQL query sanitization, utilizing prepared statements for 100% of its queries.  Furthermore, all identified entry points (AJAX handlers and shortcodes) appear to have some form of authentication or permission checks, and importantly, there are no known unpatched vulnerabilities at this time.\n\nHowever, several concerning areas are highlighted by the static analysis. The presence of 10 flows with unsanitized paths is a significant red flag, even though they are not currently classified as critical or high severity. This indicates a potential for input manipulation that could lead to unintended behavior or vulnerabilities if not carefully handled. The fact that 75% of output is properly escaped is good, but the remaining 25% leaves room for potential Cross-Site Scripting (XSS) vulnerabilities, especially given the plugin's history of XSS-related CVEs.\n\nThe plugin's vulnerability history, with 2 medium severity CVEs, both related to Cross-site Scripting, and the most recent one being very recent, suggests a pattern of input sanitization weaknesses. While these are currently patched, it emphasizes the need for diligent and robust sanitization practices, particularly for user-supplied data processed via the identified unsanitized paths. The plugin has a decent attack surface but zero unprotected entry points, which is positive, but the 14 file operations and 18 external HTTP requests warrant careful review to ensure these do not introduce further risks.",[772,775,777,779,781],{"reason":773,"points":774},"Unsanitized paths in taint analysis",8,{"reason":776,"points":63},"25% of outputs not properly escaped",{"reason":778,"points":100},"History of 2 medium severity CVEs (XSS)",{"reason":780,"points":27},"14 file operations",{"reason":782,"points":27},"18 external HTTP requests","2026-03-16T18:09:13.799Z",{"wat":785,"direct":794},{"assetPaths":786,"generatorPatterns":789,"scriptPaths":790,"versionParams":791},[787,788],"\u002Fwp-content\u002Fplugins\u002Fwp-forecast\u002Fwpf_update.js","\u002Fwp-content\u002Fplugins\u002Fwp-forecast\u002Fwp-forecast-admin.js",[],[787,788],[792,793],"wpf_update.js?ver=","wp-forecast-admin.js?ver=",{"cssClasses":795,"htmlComments":796,"htmlAttributes":797,"restEndpoints":799,"jsGlobals":800,"shortcodeOutput":801},[],[],[798],"data-wpf-widget-id",[],[],[802,803],"[wp-forecast","[\u002Fwp-forecast]"]