=== Global Weather Pro: Weather Widget for WP ===
Contributors: alfloyd
Donate link: https://globalweatherpro.com/
Tags: weather-widget, weather, ai, forecast, weather-forecast
Requires at least: 6.6
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 2.12.0
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

Free WordPress weather widget plugin: forecasts, severe weather alerts and AI animations in a header widget, sidebar widget or Gutenberg block.

== Description ==

Global Weather Pro is a free WordPress weather widget plugin that displays accurate weather forecasts and critical severe weather alerts for any location in the world. It gives you three ways to put weather on your WordPress site: a comprehensive header widget, a compact sidebar widget, and a native Weather Widget block for the block editor and Full Site Editing themes. Effortlessly display current weather conditions, detailed 7-day forecasts, air quality, and severe weather alerts to keep your visitors informed and engaged.

The plugin also ships stunning AI-generated animations for all 60+ WeatherAPI weather conditions, displayed in the header widget, with a growing number of them now upgraded to smooth looping video. Make the widgets your own with 18 professional typefaces, and self-host every one of them with a single click for a fully Google-free, privacy-friendly setup.

All weather data and alerts are sourced from WeatherAPI, a well-known and trusted weather provider, ensuring reliable and professional-grade forecasts you can count on. Global Weather Pro handles all API communications through our dedicated service, meaning you get reliable data from top providers like WeatherAPI without needing to sign up for, manage, or pay for your own weather API key.

Check out the live demos to see both widgets in action: [Sidebar Demo](https://globalweatherpro.com/sidebar-demo/)
[Header Demo](https://globalweatherpro.com/header-demo/)

**Features:**

- **Critical Weather Alerts:** Keep your audience safe and informed with timely notifications for severe weather events, sourced directly from WeatherAPI. Alerts are prominently displayed within the widget to ensure maximum visibility.
- **No API Keys Needed:** Instantly set up and deliver weather forecasts without any third-party signups or costs. Global Weather Pro handles all API communications through our dedicated service.
- **Block Editor & Full Site Editing Ready:** A native "Weather Widget" block works in the block editor, in Full Site Editing templates, and anywhere else blocks are allowed. The block is server-rendered and shares the exact same output pipeline as the classic widgets and shortcodes, so the weather block, the widget, and the shortcode all produce identical results.
- **Per-Block Location & Theme Overrides:** Each Weather Widget block can override the site-wide location and color theme, so you can show local weather for a different city on a different page or template without touching the global settings. Blocks with no override simply inherit your saved settings.
- **Responsive on Every Screen:** Both widgets adapt to the space they are given. On phones the header widget reflows into a single-column card that opens collapsed, so the current conditions are visible immediately and the full parameter readout and forecast strips are one tap away.
- **Dual Widget Design:** Comes with two specialized widgets, one designed for prominent header placement and another optimized for sidebars, ensuring a perfect fit for your theme's layout.
- **Professional Dark & Light Themes:** Choose between a rich, innovative Dark Mode featuring a slate-based palette with frosted glass effects and cyan accents, or a clean, polished Light Mode, both designed for a modern weather app aesthetic.
- **AI-Generated Animations:** Every one of the 60+ weather conditions has its own AI-generated animation in the header of the weather widget, creating a beautiful user experience. A growing number play as small, muted videos that load only when the widget is in view, and the rest as animated images until their videos are ready.
- **SEO-Friendly, Crawlable Forecast Text:** Each widget is delivered with a plain-text summary of the forecast already in the page's HTML: the place name, current temperature and conditions, the outlook for the next few days, and when the reading was taken. Search engine crawlers, link previews, and visitors with JavaScript turned off can all read the local weather without running any scripts. The full interactive widget replaces the summary as soon as the page loads.
- **No Layout Shift (Core Web Vitals):** The summary reserves the space the finished widget will take up, on desktops, tablets and phones, so the page does not jump when the weather appears. Cumulative Layout Shift (CLS) is one of Google's Core Web Vitals, and a weather widget that pushes your content down as it loads counts against it.
- **No Weather API Calls From Visitors' Browsers:** Forecasts are fetched and cached on your server in the background and arrive with the page itself. Visitors' browsers never contact a weather service, so nothing slows the page down while it loads and no visitor data is sent to a weather provider.
- **Accessibility Compliant (WCAG):** Built with comprehensive ARIA attributes, semantic HTML, keyboard navigation support, and reduced motion preferences for an inclusive experience for all users.
- **Detailed Hourly & Daily Forecasts:** Provide a true, 24-hour, hour-by-hour forecast and a 7-day forecast. Display key metrics like temperature, chance of rain, humidity, UV index, air quality, and more.
- **Shortcode Support:** Includes separate, reliable shortcodes for both the header and sidebar widgets ([gwpro_header_weather] and [gwpro_sidebar_weather]) for easy embedding anywhere on your site.
- **Flexible Placement (Blocks, Widgets & Shortcodes):** Seamlessly add weather to your header, footer, or sidebar using the block editor, the classic Widgets screen, or a shortcode in any post or page.
- **Font Customization:** Personalize the widget's appearance by choosing from 18 professional Google Fonts organized into Sans-Serif, Serif, Monospace, and Display categories, including Roboto, Open Sans, Inter, Montserrat, EB Garamond, Merriweather, Playfair Display, Roboto Mono, Poppins, and more. The widget layout stays pixel-consistent no matter which font you choose.
- **Privacy-First Font Self-Hosting:** Prefer not to link your site to Google's Font API? One click on the settings page downloads all 18 font families directly to your own server (each with its license file included), so visitor browsers never contact Google Fonts. Any font not yet downloaded automatically falls back to Google's CDN, so nothing ever breaks.

Whether you run a WordPress blog, a business website, or a community portal, Global Weather Pro makes it easy to share up-to-date local weather with your audience.

== Installation ==

1. Upload the plugin files to `/wp-content/plugins/global-weather-pro`, or install the plugin through the WordPress plugin screen.
2. Activate the plugin through the 'Plugins' menu.
3. Go to Settings > Global Weather Pro and save the location you want the weather widget to display.
4. Add the weather widget to your site using whichever method suits your theme:
   * **Block editor or Full Site Editing theme:** Edit any post, page, or template, click the block inserter, search for "Weather Widget," and place the block. In the block sidebar you can choose the header or sidebar layout and, optionally, override the location and color theme for that block only.
   * **Classic theme:** Navigate to "Appearance" > "Widgets" and add either the "Global Weather Pro Header" or "Global Weather Pro Sidebar" widget to your desired widget area.
   * **Shortcode:** Use [gwpro_header_weather] to display the header widget, or [gwpro_sidebar_weather] to display the sidebar widget, anywhere shortcodes are accepted.

== Frequently Asked Questions ==

= How do I add a weather widget to my WordPress site? =
There are three ways, and all of them produce the same widget.

Block editor or Full Site Editing theme: open any post, page, or site template, click the block inserter, and search for "Weather Widget." Choose the header or sidebar layout in the block settings sidebar.

Classic theme: navigate to "Appearance" > "Widgets" in your WordPress admin panel and add either the "Global Weather Pro Header" or "Global Weather Pro Sidebar" widget to your desired location, such as your header, footer, or sidebar.

Shortcode: embed the widgets directly into your posts and pages using [gwpro_header_weather] for the header widget or [gwpro_sidebar_weather] for the sidebar widget. Note that the original shortcode, [gwpro_global_weather_pro], now functions as an alias for the sidebar widget shortcode for backward compatibility, so any existing instances of the old shortcode continue to work without issue.

= Does this weather widget work with Gutenberg and block themes? =
Yes. Global Weather Pro registers a native "Weather Widget" block that works in the block editor, inside Full Site Editing templates and template parts, and anywhere else blocks are allowed. The block is server-rendered and reuses the same output pipeline as the classic widgets and the shortcodes, so there is one source of truth for the markup, the scripts, and the weather data.

This matters on a block theme, because block themes have no "Appearance" > "Widgets" screen at all. On those themes, use the block (or a shortcode block) rather than the classic Widgets screen.

= Can I show weather for more than one location on the same site? =
Yes, using the block. Each Weather Widget block can set its own location, which overrides the location saved in the plugin settings for that block only. A block with no location set simply inherits your global setting. The same applies to the dark and light color themes, so a block placed in a dark page template can differ from the site-wide default.

The classic widgets and the shortcodes always use the location saved under Settings > Global Weather Pro.

= Do I need a weather API key? =
No. Global Weather Pro routes all API communication through our own dedicated service, so you never have to sign up for, manage, renew, or pay for a weather API key of your own. Install the plugin, save a location, and the forecasts and severe weather alerts start working immediately.

If you would rather use your own key, you can. Enter a key from WeatherAPI.com under Settings > Global Weather Pro, or define `GWPRO_WEATHERAPI_KEY` in wp-config.php, and your site will request forecasts and alerts from WeatherAPI directly. The key stays on your server and is never sent to visitors' browsers. Free WeatherAPI plans include a 3-day forecast, so the 7-day strip shows 3 days on a free key.

= Does Global Weather Pro use AI to generate the forecasts? =
No, and the distinction matters. Global Weather Pro uses artificial intelligence for its visual layer only. Every one of the 60+ weather conditions reported by WeatherAPI (condition codes 1000-1282) has its own AI-generated animation, displayed in the header of the weather widget so the animation always matches the reported condition, including day and night variants. A growing number of conditions have been upgraded to looping video; the rest use animated images until their videos are ready.

The forecasts, air quality readings, and severe weather alerts themselves are not AI-generated or AI-predicted. They come directly from WeatherAPI, a professional meteorological data provider. Your visitors see AI-created artwork paired with real, trusted weather data.

= Do the AI weather animations slow down my site? =
No. All AI-generated animation files are bundled with the plugin and served from your own site, so displaying them requires no third-party image service, no AI API key, and no per-request AI costs. Nothing is generated on the fly at page load. The artificial intelligence work was done in advance, so the animations add no latency. Each animation is a small, muted video that is downloaded only when the widget is close to being scrolled into view and pauses while out of view. Visitors who have asked their device for reduced motion, or turned on a data saver, see a still image instead unless they press play.

= How does the widget display severe weather alerts? =
Severe weather alerts are sourced from WeatherAPI and displayed prominently inside the widget so visitors see them immediately. Alerts appear alongside current conditions in the header widget, the sidebar widget, and the block, and no configuration is required. Alerts for the widget's location surface automatically whenever the provider issues them.

= Is Global Weather Pro good for SEO? =
Global Weather Pro is built not to hurt your SEO, and to give search engines real content to read. Each widget's forecast is included in the page's HTML as plain text (location, current conditions, and a short outlook), so crawlers can read it without running JavaScript. The space for the widget is reserved while the page loads, so it does not cause layout shift, which is one of Google's Core Web Vitals. The forecast data is cached on your server and sent with the page, so the widget makes no weather API requests from your visitors' browsers.

= Does this weather widget work with my WordPress theme? =
Global Weather Pro is designed to work with most WordPress themes, classic and block-based alike. If you experience any issues, please create a topic on our official WordPress support forum so our team and the community can assist you: [Official Plugin Support Page](https://wordpress.org/support/plugin/global-weather-pro/)

== Screenshots ==

1. The WordPress weather widget in the site header, desktop view, dark mode theme.
2. The compact sidebar weather widget on mobile, dark mode theme.
3. The weather widget embedded in a page via shortcode, mobile view, light mode theme.
4. The admin settings page for entering a custom weather location.
5. Shortcode section of the settings page with one-click copy buttons.

== Upgrade Notice ==

= 2.7.15 =
Fix release. The Global Weather Pro Header and Sidebar blocks now appear in the block inserter and load their weather data correctly in block theme templates. Recommended for anyone using the block editor or a block theme.

= 2.7.13 =
Documentation release. The Weather Widget block for the block editor and Full Site Editing themes, which has shipped since 2.7.0, is now documented in the installation instructions and FAQ. No code changes; upgrading is optional.

== Changelog ==

For the complete version history (all releases), see the readme.txt revision log: [https://plugins.trac.wordpress.org/log/global-weather-pro/trunk/readme.txt](https://plugins.trac.wordpress.org/log/global-weather-pro/trunk/readme.txt)

= 2.12.0 - 2026-10-22 =
* **New: Crawlable Forecast Summary.** Until now, the HTML sent by your server held only an empty box for each widget, which the widget script filled in once the page had loaded. Anything that reads a page without running its scripts, such as a search engine crawler on its first pass, a link preview, or a visitor with JavaScript turned off, saw no weather at all. Each widget now arrives with a short plain-text summary already in the page: the place name, the current temperature in both Fahrenheit and Celsius, the current conditions, the outlook for today (and the next two days in the header widget), and the time of the reading. The summary is built from the same cached data the widget was already receiving, so it makes no extra requests. When the widget script runs, it replaces the summary with the full widget, exactly as before.
* **New: The Page No Longer Jumps When the Widget Appears.** Because the widget box started out empty, the content below it was pushed down when the weather appeared, which counts against the page's Cumulative Layout Shift (CLS) score, one of Google's Core Web Vitals. The summary now reserves the space of the finished widget on desktops, tablets and phones, in both the light and dark themes, so the content around it stays where it is. The space is reserved only when JavaScript is available; with JavaScript turned off, the summary keeps its natural height and every line stays visible.
* **Accessibility:** The summary uses the widget's own light or dark card styling and selected font, and its text meets WCAG AA contrast in both themes. The temperature is written with its unit, the reading time is marked up as a machine-readable time, and the location heading uses the same heading level as the finished widget, so the page outline does not change when the widget loads.
* **Change: Celsius First Outside Fahrenheit Countries.** The summary always shows both units, and leads with Fahrenheit for locations in the United States and the other countries that use it, and with Celsius everywhere else. The interactive widget's unit toggle is unchanged.
* **Change: Nothing New When There Is No Weather to Show.** If no location has been saved yet, or the weather data is temporarily unavailable, the widget box is printed empty as before and the widget shows its usual message.
* **Developer:** Return false from the new `gwpro_server_rendered_summary` filter to turn the summary off (for example `add_filter( 'gwpro_server_rendered_summary', '__return_false' );`), or adjust its markup with the `gwpro_server_rendered_summary_html` filter, which receives the HTML, the widget type ('header' or 'sidebar'), and the summary data.

= 2.11.6 - 2026-10-16 =
* **Fix: Dashboard Cards Showed the Wrong Artwork for Some Conditions.** The getting started and review cards in the dashboard look up the condition animation from a list that is meant to match the header widget's, but ten conditions had fallen out of step. For patchy rain possible, patchy snow possible, moderate rain at times, heavy rain at times, light sleet, light rain showers, moderate or heavy rain showers, light sleet showers, moderate or heavy sleet showers, and moderate or heavy rain with thunder, the cards showed a more general animation, a different condition's animation, or the clear-sky fallback, while the header widget showed the correct one. The dashboard cards now use the same artwork as the header widget for every condition. The widgets on your site are unaffected.

= 2.11.4 - 2026-10-13 =
* **Improvement: Forecast Tabs Stay on Your Chosen Category.** Switching the header widget between the 7 Day and Hourly forecasts always jumped back to the Temperature tab, so a visitor checking Rain Chance or UV Index had to pick it again after every switch. The widget now stays on the same category in both views, whichever 7 Day or Hourly button is pressed, including tabs chosen with the arrow keys. Choosing Wind in the 7-day view opens Gusts in the hourly view, its hourly counterpart.

For older releases, see [changelog.txt](https://plugins.svn.wordpress.org/global-weather-pro/trunk/changelog.txt).

== Third-Party Services ==

**Global Weather Pro API**

- Fetches weather data.

- No personal data collected.

- Accessed at:

  - [https://www.pointforecaster.com/api/geocodedata](https://www.pointforecaster.com/api/geocodedata)
  - [https://www.pointforecaster.com/api/alerts](https://www.pointforecaster.com/api/alerts)
  - [https://www.pointforecaster.com/api/forecasthourly](https://www.pointforecaster.com/api/forecasthourly)
  - [https://www.pointforecaster.com/api/forecastdaily](https://www.pointforecaster.com/api/forecastdaily)

- Privacy Policy: [https://globalweatherpro.com/gwpro-privacy-policy](https://globalweatherpro.com/gwpro-privacy-policy)

**WeatherAPI**

- Provides weather forecasts and alerts.
- Location data (entered by site owner) sent; no personal data collected.
- Accessed at:
  - [https://api.weatherapi.com/v1/alerts.json](https://api.weatherapi.com/v1/alerts.json)
  - [https://api.weatherapi.com/v1/forecast.json](https://api.weatherapi.com/v1/forecast.json)
- Weather condition icons served from: [https://cdn.weatherapi.com/weather/](https://cdn.weatherapi.com/weather/)
- By default, the Global Weather Pro service above makes these requests. If the site owner enters their own WeatherAPI key, the site's server sends them to WeatherAPI directly, including that key and the location (or its coordinates).
- Terms of Service: [https://www.weatherapi.com/terms.aspx](https://www.weatherapi.com/terms.aspx)
- Privacy Policy: [https://www.weatherapi.com/privacy.aspx](https://www.weatherapi.com/privacy.aspx)

**Geoapify API**

- Provides geolocation services.
- No personal data collected.
- Accessed at: [https://api.geoapify.com/v1/geocode/search](https://api.geoapify.com/v1/geocode/search)
- Privacy Policy: [https://www.geoapify.com/privacy-policy/](https://www.geoapify.com/privacy-policy/)

**Google Fonts API**
- This service is used to load and display the custom font selected in the widget settings, but only for fonts that have not yet been self-hosted. Once a font is downloaded via Settings > "Download & Self-Host All Fonts," it is served entirely from your own server and visitor browsers never contact Google.
- **Personal Data**: When a font loads from Google's CDN, Google may collect data such as visitor IP addresses in order to serve the font files. Self-hosted fonts send no visitor data to Google.
- **Access**: Visitor browsers access https://fonts.googleapis.com (stylesheet) and https://fonts.gstatic.com (font files) only while a selected font is not self-hosted. When the site owner runs the one-click download tool, these same two endpoints are contacted once, server-side by your WordPress site, never by your visitors, to fetch the font files.
- **Privacy Policy**: Refer to Google's privacy policy here: https://policies.google.com/privacy.

== Third-Party Fonts & Licenses ==

This plugin offers 18 Google Fonts as font-family options. When downloaded via Settings > "Download & Self-Host All Fonts," the actual font files are saved to this plugin's own /uploads/ directory (one subfolder per font, each including a LICENSE.txt). Both licenses below permit free use, modification, and self-hosted redistribution:

* **Apache License, Version 2.0** (Roboto, Roboto Mono) — http://www.apache.org/licenses/LICENSE-2.0
* **SIL Open Font License, Version 1.1** (Open Sans, Inter, Lato, Source Sans Pro, Raleway, Montserrat, Nunito, EB Garamond, Merriweather, Playfair Display, Lora, Crimson Text, Source Code Pro, Fira Code, Poppins, Quicksand) — https://scripts.sil.org/OFL

Until a given font is self-hosted, it is instead loaded live from Google Fonts under the same license terms; see "Google Fonts API" under Third-Party Services above for that data flow.
