Spelhubben Weather

Описание

Этот плагин отображает текущую погоду и дополнительный прогноз. Он может агрегировать данные от бесплатных глобальных поставщиков погоды (Open-Meteo, SMHI, Yr/MET Norway, FMI, Open-Weathermap и Weatherapi.com) и вычислять простой консенсус. Работает по всему миру с отличным покрытием в Европе и за ее пределами.

Features
Шорткод [spelhubben_weather], Gutenberg block, and classic widget
6 Weather Providers: Open-Meteo, SMHI, Yr (MET Norway), FMI, Open-Weathermap, Weatherapi.com — enable any combination
Icon Themes: Classic, Modern Flat, Modern Gradient, Modern 2026, Modern 3D (selectable in admin settings)
Multiple Layouts: inline, compact, card, detailed
Daily Forecast: 3–10 days customizable
Provider Comparison: Side-by-side data from all enabled providers
Leaflet Map: OpenStreetMap tiles with proper attribution (ODbL)
Wind direction display: Rotated arrow with cardinal labels (optional via show=wind_dir)
Local Icons: SVG icons (no CDN dependency), responsive scaling
Performance: 6-30x faster settings page, lazy-loaded plugin showcase, optimized caching
Fully GDPR Compliant: No cookies, no tracking, no personal data collection
Translation-Ready: English base strings, Swedish and Norwegian translations included

Не аффилирован с Open-Meteo, SMHI, Yr/MET Norway, FMI, Leaflet или OpenStreetMap. Названия используются только в описательных целях. Данные карты © участники OpenStreetMap (ODbL).

License

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

Full license text is included in the LICENSE file in the plugin root.

Feedback & Bug Reports

Feedback and bug reports can be posted here: https://github.com/K3NT4/spelhubben-weather/issues
For common questions see the FAQ: https://github.com/K3NT4/spelhubben-weather/blob/main/Docs/FAQ.md
For Roadmap: https://github.com/users/K3NT4/projects/2
License: GPLv3 or later
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Виджет погоды и блок с дополнительной картой и ежедневным прогнозом. Может объединять данные Open-Meteo, SMHI, Yr/MET, FMI, Open-Weathermap и Weatherapi.com.

Переводы

Плагин полностью переводимый и включает встроенные переводы для шведского (sv_SE) и норвежского Bokmål (nb_NO).

Как перевести плагин

Вариант 1: Внесите вклад в translate.wordpress.org (рекомендуется).
— Посетите translate.wordpress.org.
— Выберите свой язык и добавьте переводы через интерфейс браузера.
— Ваши переводы будут автоматически включены в будущие релизы

Вариант 2:Локальные файлы перевода\n
Если вам нужно добавить или изменить перевод локально:

  1. Сгенерируйте или обновите POT-файл(шаблон перевода):\n
    wp i18n make-pot . languages/spelhubben-weather.pot --slug=spelhubben-weather

  2. Создайте PO-файл для вашего языка (например, spelhubben-weather-ru_RU.po):

    • Скопируйте файл .pot и переименуйте его в соответствии с Вашей локалью (например, de_DE).
    • Используйте такой инструмент перевода, как Poedit или текстовый редактор.
    • Переведите все строки в файле PO
    • Сохраните файл под именем spelhubben-weather-de_DE.po.
  3. Сгенерируйте MO-файл(скомпилированный бинарный формат):\n
    msgfmt spelhubben-weather-de_DE.po -o spelhubben-weather-de_DE.mo

  4. Разместите файлы в плагине:

    • Храните оба файла .po и .mo в /languages/.
    • Также сгенерируйте файл .l10n.php (WordPress 6.0+):
      wp i18n make-json languages/spelhubben-weather-de_DE.po --no-purge.
  5. Активируйте ваш перевод:

    • Измените язык Вашего WordPress так, чтобы он соответствовал коду локали (Настройки Общие Язык сайта).
    • Плагин автоматически загрузит переведенные строки

Translation file structure:
languages/
spelhubben-weather.pot (template for all translations)
spelhubben-weather-sv_SE.po (Swedish source text)
spelhubben-weather-sv_SE.mo (Swedish compiled)
spelhubben-weather-sv_SE.l10n.php
spelhubben-weather-nb_NO.po (Norwegian source text)
spelhubben-weather-nb_NO.mo (Norwegian compiled)
spelhubben-weather-nb_NO.l10n.php

«Что переводится:\n»
«-Все строки фронтенда (вывод шорткода, метки виджета, описания погоды, коды WMO)\n»
«-Настройки админки и метки интерфейса\n»
«-Строки JavaScript (развернуть/свернуть, статусные сообщения)\n»
«-Сообщения об ошибках и уведомления»

Рекомендации:\n
-Используйте контекстные подсказки в POT-файле (msgctxt), чтобы различать похожие фразы\n
-Тестируйте свой перевод в WordPress, чтобы убедиться, что форматирование и множественные числа работают правильно\n
-Проверьте, что переведённый интерфейс правильно выровнен для вашего языка (RTL или LTR)

Скриншоты

  • Примеры фронтенда: inline, compact, card, detailed, с опциональной картой.
  • Frontend example: New look and wind direction
  • Страница настроек: значения по умолчанию, провайдеры, кэш, единицы измерения и формат.
  • Alerts page: active warnings and smart recommendations for extreme conditions.
  • Shortcodes page: searchable examples, copy buttons, and admin live preview.
  • Performance page: cache statistics, API usage and «Clear cache» action.

Блоки

Этот плагин предоставляет 1 блок.

  • Spelhubben Weather Current weather and optional daily forecast with map, subtle animations, and multiple layouts.

Установка

  1. Загрузите/активируйте плагин.
  2. Перейдите в Настройки Spelhubben Weather и установите значения по умолчанию (место, отображаемые поля, макет, провайдеры, время кэширования, единицы измерения/формат).
  3. Добавьте погоду на ваш сайт любым из этих способов:

Блок (Гутенберг)

  • Редактируйте страницу/запись нажмите Добавить блок найдите “Spelhubben Weather”.
  • Опционально: переопределите значения по умолчанию на боковой панели блока (место/lat,lon, макет, карта, прогноз).

Шорткод

  • Вставьте [spelhubben_weather] в любое место, где поддерживаются шорткоды.
  • Examples:
    • Базовый: [spelhubben_weather]
    • Компактный с картой и анимацией: [spelhubben_weather place="Gothenburg" layout="compact" map="1" animate="1"]
    • Встроенный, без карты: [spelhubben_weather lat="57.7089" lon="11.9746" layout="inline" map="0" show="temp,icon"]
    • Детальный + ежедневный прогноз (5 дней) + смесь поставщиков: [spelhubben_weather place="Umeå" layout="detailed" forecast="daily" days="5" providers="smhi,yr,openmeteo,fmi"]
    • With wind direction: [spelhubben_weather place="Stockholm" show="temp,wind,wind_dir,icon" layout="compact" animate="1"]

Классический виджет

  • Перейдите в Внешний вид Виджеты добавьте Spelhubben Weather.
  • Настройте параметры для каждого виджета (заголовок, место или lat/lon, поля, макет, карта, прогноз, дни, CSS-класс).

Часто задаваемые вопросы

Откуда берутся данные?

Из публичных API, таких как Open-Meteo, SMHI, Yr/MET Norway и FMI (Финский метеорологический институт). Вы выбираете поставщиков в разделе Настройки Spelhubben Weather или для каждого блока/шорткода/виджета через атрибут providers.

Нужен ли API-ключ?

Нет. Для Open-Meteo, SMHI и FMI ключи не требуются. Для Yr/MET Norway рекомендуется указать контактную информацию (email/URL) в Настройки Spelhubben Weather Yr contact/UA, чтобы ваш User-Agent был корректным.

Блок, шорткод или виджет — в чём разница?

Все три отображают одинаковый интерфейс. Используйте блок в редакторе блоков, шорткод в классических областях контента и виджет в боковых панелях (Внешний вид Виджеты). Каждый позволяет переопределить глобальные настройки по умолчанию.

Как работают место и координаты?

Если указаны lat и lon, они имеют приоритет. В противном случае плагин геокодирует строку place (например, place="Umeå"). Установите глобальное место по умолчанию в настройках.

Какие поля я могу показывать/скрывать?

Use show="temp,wind,icon" (comma separated). Defaults are set in settings. Add wind_dir to show wind direction arrow and label.

Как работают макеты?

Выберите layout="inline|compact|card|detailed". «Detailed» поддерживает строку прогноза на несколько дней.

Можно ли увидеть данные отдельных провайдеров (для сравнения)?

Да!Используйте comparison=\"1\", чтобы показать данные всех включённых провайдеров рядом. Полезно для отладки или сравнения того, какие провайдеры доступны в вашем местоположении.\n
Пример:[spelhubben_weather place=\"Стокгольм\" comparison=\"1\" providers=\"openmeteo,smhi,yr,fmi,openweathermap,weatherapi\"]

Какие темы иконок доступны?

The plugin offers multiple themes: Classic (traditional), Modern Flat (clean, minimalist), Modern Gradient (contemporary with subtle gradients), Modern 2026 (duotone/stroke modern style), and Modern 3D (subtle gradients + drop-shadows). Choose in Settings Spelhubben Weather Icon style. All themes include icons for sun, partly-cloudy (including alternate), cloud, fog, rain, sleet, snow, storm/thunder, and hail where applicable.

Как включить карту и установить её размер?

map=»1″ показывает карту Leaflet (OpenStreetMap). Управляйте высотой с помощью map_height="240" (пикселей). Глобальные значения по умолчанию задаются в настройках.

Как включить анимацию?

animate=»1″ adds subtle UI animation. Global default is in settings. The renderer also accepts true, yes, or on as truthy values for convenience.

Как получить суточный прогноз?

Установите forecast="daily" и days="3–10". Пример: forecast="daily" days="5".

How do i use Moon phase?

Use the new phase and illumination fields to show moon information. Example shortcode: [spelhubben_weather show="temp,icon,phase,illumination"] — available in Block inspector and Widget options as well.

Могу ли я смешивать провайдеры и получать согласованные данные?

Да. Установите providers="smhi,yr,openmeteo,fmi" (порядок не имеет значения). Плагин вычисляет простой консенсус по доступным поставщикам для отображаемых полей.

Единицы измерения и формат?

Выберите пресет с помощью units="metric|metric_kmh|imperial". Вы можете переопределить отдельные части через temp_unit="C|F", wind_unit="ms|kmh|mph", precip_unit="mm|in" и date_format для меток прогноза. У всех есть глобальные значения по умолчанию в настройках (раздел Единицы измерения и формат).

Кэширование — как долго хранятся данные?

Responses are cached with WordPress transients. Change TTL (minutes) in settings. Clear via the Clear cache button on the Performance page (Settings Performance) or by changing attributes (which creates a new cache key).

Работает ли без JavaScript?

Да, рендеринг происходит на стороне сервера. Для карты (Leaflet) требуется JavaScript.

Переводы?

Плагин полностью переводим. Включенные переводы: шведский (sv_SE), норвежский (nb_NO). Строки также доступны на translate.wordpress.org. Отправьте .pot/.po/.mo в /languages.

GDPR / конфиденциальность?

Плагин сам по себе не устанавливает cookie. Если вы включаете карту, тайлы Leaflet/OpenStreetMap запрашиваются на стороне клиента. При необходимости укажите OSM в вашем уведомлении о конфиденциальности.

Советы по устранению неполадок

  • Ничего не отображается: проверьте, что в настройках выбран хотя бы один провайдер.
  • Неверное местоположение: укажите точные lat/lon или более конкретное place (например, «Uddevalla, SE»).
  • Карта не видна: убедитесь, что установлен map="1" и что ваша тема/контейнер достаточно широкий/высокий; увеличьте map_height.
  • Ограничение частоты запросов: уменьшите количество обновлений или увеличьте TTL кэша.

Отзывы

Нет отзывов об этом плагине.

Участники и разработчики

«Spelhubben Weather» — проект с открытым исходным кодом. В развитие плагина внесли свой вклад следующие участники:

Участники

«Spelhubben Weather» переведён на 2 языка. Благодарим переводчиков за их работу.

Перевести «Spelhubben Weather» на ваш язык.

Заинтересованы в разработке?

Посмотрите код, проверьте SVN репозиторий, или подпишитесь на журнал разработки по RSS.

Журнал изменений

  • = 1.9.5 =
  • New: Moon phase support — phase (name) and illumination (percent) available in renderer, shortcodes, block and widget.

  • = 1.9.4 =

  • Fixed: Wind direction cardinal calculation and arrow rotation; ensured text-domain i18n call fixed for VC integration; asset sanitization workaround for wind arrow rotation (data-deg + frontend JS).

  • = 1.9.3 =

  • New: wind_unit override in Block inspector, Widget settings and Shortcodes Quick Builder.
  • Improved: metric_knt preset for metric display with knots.
  • Fixed: Wind direction arrow rotation corrected to match compass degrees.
  • Fixed: Shortcode wind_unit reliably overrides resolved units and renderer emits data-svv-wind-unit for debugging.
  • Fixed: Alert threshold comparisons now converted into display units to avoid false alerts.
  • Fixed: PHP parse error in admin page resolved.
  • Changed: Plugin version bumped to 1.9.3; readme stable tag updated.
  • = 1.9.2 =
  • New: Shortcode/Block/Widget theme attribute — theme="auto|light|dark" to force UI theme per instance (default auto).
  • New: Quick Builder theme selector in admin Shortcodes page; example shortcode added.
  • Improved: Renderer emits data-svv-theme and svv-theme-<value> class for easier CSS targeting.
  • Improved: Frontend CSS and map styling — darker Leaflet tiles in dark theme and darker alert box styles for better contrast.
  • Changed: Admin JS updated to include theme when generating shortcodes; docs updated across readmes.

  • = 1.9.0 =

  • New: Weather Alerts system with smart recommendations for extreme conditions
  • New: Storm Warning alert for wind speeds exceeding 24.5 m/s
  • New: Settings Export & Import feature for easy configuration management
  • New: Performance Dashboard to track API usage, cache efficiency, and response times
  • New: Full Dark Mode support for all frontend and admin interfaces
  • New: 3 Gutenberg Block Patterns (Compact, Detailed, Forecast)
  • New: Alert toggles for Blocks, Widgets, and Shortcodes
  • New: Wind direction display (wind_dir) — rotated arrow + cardinal labels (optional via show=wind_dir)
  • New: Shortcode Quick Builder in admin Shortcodes page with selectable options, one-click copy and live preview
    • New: Rotating Tips panel on the Settings page with contextual admin tips (Shortcodes, Alerts, Performance)
    • New: Compact action buttons in the Tips panel for quick access to Shortcodes, Alerts and Performance
    • New: «Reset to defaults» button on the Settings page (nonce-protected) to restore plugin defaults
    • Improved: Tips text is translation-ready, rotates more slowly for readability (15s), and uses aria-live for accessibility
  • Improved: animate attribute parsing is more tolerant (accepts 1, true, yes, on)
  • Improved: Full English translation and i18n readiness (English is now the base language)
  • Improved: Refined alert thresholds based on meteorological standards

1.8.6

  • Fixed: Map not rendering in widgets due to missing Leaflet asset detection
  • Fixed: Block name mismatch (spelhubben/weather spelhubben-weather/spelhubben-weather) preventing proper asset enqueuing
  • Improved: Enhanced Leaflet initialization with better timing and error handling in map.js
  • Improved: Added widget detection in asset loading logic using is_active_widget()
  • Improved: Added fallback height (height: 240px;) to .svv-map CSS class for better Leaflet container sizing
  • Improved: Better error reporting and retry logic in map initialization with Leaflet availability checks

1.8.5

  • Performance: Conditional Leaflet asset loading — only loads when shortcode or Gutenberg block is present on the page.
  • Fix: Added .htaccess files to prevent WordPress rewrite rules from interfering with static assets.
  • Fix: Ensure correct MIME types for CSS and JS files to prevent browser strict MIME checking warnings.
  • UX: Eliminates unnecessary 404 errors on pages without weather widget.

1.8.4

  • Maintenance: Added centralized configuration constants file (includes/constants.php) for improved code maintainability and reduced magic numbers.
  • Performance: Settings page now loads 6-30x faster with lazy-loaded WP.org plugin showcase via AJAX.
  • Fix: Fixed memory leaks from uncleanup event listeners in admin interface with proper cleanup handlers.
  • Fix: Fixed WMO weather code duplication—fog (codes 45, 48) now displays correctly instead of showing cloud icon.
  • Fix: Fixed geocoding cache to include API language, ensuring proper locale-specific results for multi-language sites.
  • Fix: Fixed widget null-safety with null-coalesce operators to prevent PHP Notices.
  • Fix: Standardized API error handling with consistent response validation across all providers.
  • Fix: Fixed syntax error in WP.org plugin showcase API call (missing closing parenthesis).
  • Compliance: Verified full WordPress Consent API and GDPR compliance—no cookies, no tracking, no personal data collection.
  • Code Quality: Debounce timeout optimized (400ms 600ms) reducing AJAX traffic by 50% during live preview.
  • Documentation: Comprehensive audit and testing guides included for developers.

1.8.3

  • Version bump for production release.

1.8.2

  • Fix: WordPress naming convention compliance – all global functions and variables now use proper sv_vader_ prefix.
  • Fix: Corrected asset paths for Leaflet library (vendor directory structure).
  • Tech: Code review and standards compliance (no breaking changes).
  • Tested up to: WordPress 6.9

1.8.1

  • New: 3 selectable icon themes: Classic, Modern Flat, and Modern Gradient (set in Settings Icon style).
  • Performance: Optimized icon rendering with static variable caching for icon style preference (reduces repeated sv_vader_get_options() calls).
  • Tech: Added private helper method build_icon_url() to centralize icon URL logic and improve maintainability.
  • All icon themes include: sun, partly-cloudy, cloud, fog, rain, sleet, snow, thunderstorm (8 distinct weather conditions per theme).
  • Updated README and readme.txt with icon theme documentation and admin settings guide.

1.8.0

  • BREAKING CHANGE: Removed legacy [sv_vader …] shortcode. Use [spelhubben_weather …] exclusively.
  • New Providers: Added Open-Weathermap and Weatherapi.com for better global coverage (6 total providers).
  • New Feature: comparison="1" attribute shows all providers’ data side-by-side for easy comparison and debugging.
  • Performance: Fixed memory leak in map.js (persistent MutationObserver, proper ResizeObserver cleanup).
  • Performance: Added 7-day transient caching for geocoding lookups to reduce external API calls.
  • Performance: CSS containment (contain: layout style paint) optimizes rendering on pages with multiple weather cards.
  • Caching: Improved debounce function to prevent race conditions during window resizes.
  • Security: Fixed unsafe XML parsing in FMI provider (now uses LIBXML_NOCDATA flag with proper error handling).
  • Feature: New plugin showcase on settings page displaying other Spelhubben plugins (grid layout, auto-fetches from WordPress.org).
  • UX: Plugin showcase auto-excludes Spelhubben Weather itself to avoid redundancy.
  • Протестировано до: WordPress 6.8+

1.7.5

  • Протестировано до: 6.9
  • Новое: FMI (Финский метеорологический институт) в качестве бесплатного опционального поставщика (t2m, ws_10min, r_1h, n_man через WFS). Включение/выключение в Настройки Поставщики и через providers="…" в блоке/шорткоде/виджете.
  • Шорткоды/Блоки: providers теперь принимает значение fmi.
  • Документация: Обновлены примеры и FAQ с включением FMI.

1.7.0

  • Новое: страница админки Шорткоды с доступными для поиска примерами, копированием в один клик и копированием всех.
  • Новое: Живой предпросмотр внутри админки WordPress (песочница iframe), который отображает шорткоды и загружает фронтенд-ресурсы (Leaflet, CSS/JS виджета).
  • Новое: настройки Единицы измерения и формат (пресет + переопределения: единицы температуры/ветра/осадков, date_format).
  • Новое: кнопка Очистить кэш (transients) на странице настроек.
  • Новое: Включены переводы: шведский (sv_SE), норвежский (nb_NO), английский (en_US).
  • UX: унифицированный светлый дизайн карточек на всех страницах админки.
  • Технологии: надёжная очередь скриптов/стилей в админке с обходом кэша через filemtime.
  • i18n: Все строки админки локализованы (включая JS: развернуть/свернуть, статусы).
  • Документация: устаревший шорткод помечен как устаревший – скоро будет удалён.

1.6.2

  • Незначительные исправления и обновления readme.

1.6.1

  • Version bump for WordPress.org sync. No functional changes.