{"id":36642,"date":"2015-05-30T07:12:33","date_gmt":"2015-05-30T07:12:33","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/pdsweather\/"},"modified":"2026-05-31T09:54:37","modified_gmt":"2026-05-31T09:54:37","slug":"pdsweather","status":"publish","type":"plugin","link":"https:\/\/skr.wordpress.org\/plugins\/pdsweather\/","author":14434675,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"4.0.2","stable_tag":"4.0.2","tested":"7.0","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"PDS Weather","header_author":"Iva Korlevic, Proodos j.d.o.o.","header_description":"","assets_banners_color":"6ea1da","last_updated":"2026-05-31 09:54:37","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/prood-os.com\/weather-plugin","header_author_uri":"https:\/\/prood-os.com","rating":2.5,"author_block_rating":0,"active_installs":10,"downloads":12838,"num_ratings":0,"support_threads":1,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1":{"tag":"1.1","author":"proodos","date":"2015-06-09 14:58:30"},"1.1.1":{"tag":"1.1.1","author":"proodos","date":"2015-06-12 15:37:39"},"2.0":{"tag":"2.0","author":"proodos","date":"2016-02-09 07:37:56"},"3.0":{"tag":"3.0","author":"proodos","date":"2016-04-12 13:08:30"},"3.1":{"tag":"3.1","author":"proodos","date":"2016-04-29 07:35:49"},"3.2":{"tag":"3.2","author":"proodos","date":"2017-06-05 10:28:55"},"3.3":{"tag":"3.3","author":"proodos","date":"2017-06-05 10:33:18"},"4.0.2":{"tag":"4.0.2","author":"proodos","date":"2026-05-31 09:54:37"}},"upgrade_notice":{"4.0.0":"<p>Major update: Weather Underground API replaced with OpenWeatherMap. You will need a new API key from openweathermap.org. All settings will need to be reconfigured.<\/p>"},"ratings":{"1":"1","2":0,"3":0,"4":"1","5":0},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":1178802,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":1178802,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-722x250.jpg":{"filename":"banner-722x250.jpg","revision":1178802,"resolution":"722x250","location":"assets","locale":"","width":722,"height":250},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":1178896,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"pdsweather\/weather":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"pdsweather\/weather","version":"1.0.0","title":"PDS Weather","category":"widgets","icon":"cloud","description":"Displays current weather conditions for your configured city. Configure via PDS Weather \u2192 Settings.","keywords":["weather","vrijeme","temperatura","forecast"],"textdomain":"pdsweather","editorScript":"file:.\/index.js","supports":{"html":false,"align":["left","center","right"]}}},"tagged_versions":["1.1","1.1.1","2.0","3.0","3.1","3.2","3.3","4.0.2"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[40869,10469,4899,162],"plugin_category":[59],"plugin_contributors":[83515],"plugin_business_model":[],"class_list":["post-36642","plugin","type-plugin","status-publish","hentry","plugin_tags-current-conditions","plugin_tags-openweathermap","plugin_tags-weather","plugin_tags-widget","plugin_category-utilities-and-tools","plugin_contributors-proodos","plugin_committers-proodos"],"banners":{"banner":"https:\/\/ps.w.org\/pdsweather\/assets\/banner-772x250.jpg?rev=1178896","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/pdsweather\/assets\/icon-128x128.png?rev=1178802","icon_2x":"https:\/\/ps.w.org\/pdsweather\/assets\/icon-256x256.png?rev=1178802","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>PDS Weather shows current conditions in your area using the <strong>OpenWeatherMap API<\/strong> (free tier).<\/p>\n\n<p>The plugin fetches and displays:<\/p>\n\n<ul>\n<li>Current weather description<\/li>\n<li>Current temperature (\u00b0C and\/or \u00b0F)<\/li>\n<li>\"Feels like\" temperature<\/li>\n<li>Weather font icon (optional)<\/li>\n<li>City name display (optional)<\/li>\n<\/ul>\n\n<p>Data is cached for one hour to minimize API calls.<\/p>\n\n<p><strong>Requirements:<\/strong><\/p>\n\n<ul>\n<li>A free OpenWeatherMap API key \u2014 <a href=\"https:\/\/openweathermap.org\/api\">Get one here<\/a><\/li>\n<\/ul>\n\n<p><strong>Setup:<\/strong><\/p>\n\n<ol>\n<li>Go to <strong>PDS Weather &gt; Settings<\/strong> in your WordPress admin.<\/li>\n<li>Enter your OpenWeatherMap API key.<\/li>\n<li>Select your country and enter your city name.<\/li>\n<li>Choose display options (icon, degrees, feels like, weather label, city name).<\/li>\n<li>Save settings.<\/li>\n<\/ol>\n\n<p><strong>Display options:<\/strong><\/p>\n\n<ol>\n<li>Use the <strong>PDS Weather Gutenberg block<\/strong> in the Block Editor.<\/li>\n<li>Use the <strong>PDS Weather<\/strong> classic widget (Appearance &gt; Widgets).<\/li>\n<li>Use the <code>[pdsweather]<\/code> shortcode in any post or page.<\/li>\n<li>Or call <code>&lt;?php echo pdsweather_display(); ?&gt;<\/code> in your theme template.<\/li>\n<li>Legacy function <code>pdsWeather()<\/code> is still supported for backward compatibility.<\/li>\n<\/ol>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>pdsweather<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>Go to <strong>PDS Weather &gt; Settings<\/strong> and enter your OpenWeatherMap API key.<\/li>\n<li>Configure country, city, and display preferences.<\/li>\n<li>Add the widget or use <code>&lt;?php echo pdsweather_display(); ?&gt;<\/code> in your templates.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20do%20i%20get%20an%20api%20key%3F\"><h3>Where do I get an API key?<\/h3><\/dt>\n<dd><p>Sign up for a free account at <a href=\"https:\/\/openweathermap.org\/api\">OpenWeatherMap<\/a> and create an API key. The free tier allows up to 1,000 calls per day.<\/p><\/dd>\n<dt id=\"the%20old%20weather%20underground%20api%20key%20no%20longer%20works.%20what%20do%20i%20do%3F\"><h3>The old Weather Underground API key no longer works. What do I do?<\/h3><\/dt>\n<dd><p>Weather Underground shut down their free API in 2019. Version 4.0 of this plugin uses OpenWeatherMap instead. Simply enter your new OpenWeatherMap API key in the settings.<\/p><\/dd>\n<dt id=\"how%20often%20does%20the%20weather%20data%20refresh%3F\"><h3>How often does the weather data refresh?<\/h3><\/dt>\n<dd><p>The plugin caches data for one hour to minimize API calls.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>4.0.2<\/h4>\n\n<ul>\n<li>Added Gutenberg block \u2014 insert weather directly from the Block Editor with live server-side preview.<\/li>\n<li>Added <code>[pdsweather]<\/code> shortcode for easy embedding in posts and pages.<\/li>\n<li>Added \"Show city name\" option in settings.<\/li>\n<li>Modernized front-end CSS: switched from floats to flexbox layout, added temperature separator.<\/li>\n<li>Added <code>.pdsweather-city<\/code> CSS class for city name styling.<\/li>\n<\/ul>\n\n<h4>4.0.1<\/h4>\n\n<ul>\n<li>Fixed widget not appearing properly in Appearance &gt; Widgets admin screen.<\/li>\n<li>Added configurable widget title field with proper sanitization.<\/li>\n<li>Widget now outputs title using before_title\/after_title theme wrappers.<\/li>\n<li>Widget no longer outputs empty wrapper when no weather data is available.<\/li>\n<li>Added explicit 'classname' to widget constructor for proper CSS targeting.<\/li>\n<li>Added link to settings page inside widget form for easier configuration.<\/li>\n<\/ul>\n\n<h4>4.0.0<\/h4>\n\n<ul>\n<li><strong>BREAKING:<\/strong> Replaced defunct Weather Underground API with OpenWeatherMap API.<\/li>\n<li>Added nonce verification for all admin forms.<\/li>\n<li>Added capability checks (manage_options) on all admin pages.<\/li>\n<li>Added input sanitization (sanitize_text_field) for all user inputs.<\/li>\n<li>Added output escaping (esc_html, esc_attr, esc_url) for all outputs.<\/li>\n<li>Added option whitelist \u2014 only pdsweather_* options are accepted.<\/li>\n<li>Added ABSPATH checks to prevent direct file access.<\/li>\n<li>Moved inline JavaScript to separate enqueued file (js\/pdsweather-admin.js).<\/li>\n<li>Replaced file_get_contents() with wp_remote_get().<\/li>\n<li>Added proper error handling for API calls.<\/li>\n<li>Updated plugin header (Tested up to: 6.7, Requires PHP: 7.4).<\/li>\n<li>Added Text Domain and load_plugin_textdomain() support.<\/li>\n<li>Renamed all functions\/options with pdsweather_ prefix.<\/li>\n<li>Removed Weather Underground icon set options (no longer available).<\/li>\n<li>Improved uninstall.php with WP_UNINSTALL_PLUGIN check and legacy option cleanup.<\/li>\n<li>Added weather icon mapping for OpenWeatherMap condition codes.<\/li>\n<li>Legacy pdsWeather() function preserved as wrapper for backward compatibility.<\/li>\n<\/ul>\n\n<h4>3.3<\/h4>\n\n<ul>\n<li>Bugfix when weather string is blank \u2014 set clear for weather.<\/li>\n<\/ul>\n\n<h4>3.2<\/h4>\n\n<ul>\n<li>Solved bug for conditions after new year has started.<\/li>\n<li>Tested on 4.7.<\/li>\n<\/ul>\n\n<h4>3.1<\/h4>\n\n<ul>\n<li>Removed print of the results after save.<\/li>\n<li>Tested on 4.5.<\/li>\n<li>Implement selective refresh for widget.<\/li>\n<\/ul>\n\n<h4>3.0<\/h4>\n\n<ul>\n<li>Solved more bugs.<\/li>\n<li>Added input field for API key to the settings area.<\/li>\n<li>Made sure API key is required for widget to be shown.<\/li>\n<li>Added drag &amp; drop widget in widgets section.<\/li>\n<\/ul>\n\n<h4>2.0<\/h4>\n\n<ul>\n<li>Solved some bugs.<\/li>\n<li>Added input field for API key.<\/li>\n<li>Added uninstall functions.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Another little bug solved.<\/li>\n<\/ul>\n\n<h4>1.1<\/h4>\n\n<ul>\n<li>Solved bug with showing of the countries.<\/li>\n<li>Added F and \u00b0C for temperature strings.<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>First version of the plugin.<\/li>\n<li>Weather conditions change once per hour.<\/li>\n<li>Shows conditions and feels like string.<\/li>\n<li>Uses WU icons and weather font.<\/li>\n<\/ul>","raw_excerpt":"Shows current weather conditions for your city using OpenWeatherMap API. Drag-and-drop widget or template function.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/skr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/36642","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/skr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/skr.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/skr.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=36642"}],"author":[{"embeddable":true,"href":"https:\/\/skr.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/proodos"}],"wp:attachment":[{"href":"https:\/\/skr.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=36642"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/skr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=36642"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/skr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=36642"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/skr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=36642"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/skr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=36642"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/skr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=36642"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}