WordPress plugin for parsing and displaying NOAA weather forecasts with automatic alert detection.
Features
- Automated NOAA Parsing: Downloads and parses weather forecasts hourly
- Alert Detection: Automatically extracts warnings, watches, and advisories
- Three Forecast Types:
- Standard Forecast (miz071.txt)
- Marine Forecast (lmz845.txt)
- Extended Forecast
- Smart Caching: Efficient file-based caching system
- Flexible Display: Multiple shortcodes with different formats
- Emoji Support: Visual indicators for weather conditions and alert severity
Installation
- Upload the plugin folder to
/wp-content/plugins/ - Activate the plugin through the ‘Plugins’ menu in WordPress
- The plugin will automatically create
/wp-content/wx/directory for cache files - Forecasts will be downloaded automatically every hour
Alert System
The plugin automatically detects and categorizes weather alerts:
Alert Types
WARNING (🔴 Severe)
- Highest severity
- Requires immediate action
- Examples: Gale Warning, Tornado Warning, Flood Warning
- Emoji indicators: 🌬️💨 (Gale), ⛈️ (Storm), 🌪️ (Tornado), ❄️ (Winter)
WATCH (🟠 High)
- Conditions are favorable for severe weather
- Be prepared to take action
- Examples: Tornado Watch, Flood Watch, Winter Storm Watch
- Emoji indicators: 👀⚠️ (Generic), ⛈️👀 (Storm), 🌪️👀 (Tornado)
ADVISORY (🟡 Moderate)
- Less severe but still important
- Examples: Small Craft Advisory, Wind Advisory, Fog Advisory
- Emoji indicators: ⛵⚠️ (Small Craft), 💨 (Wind), 🌫️ (Fog)
Shortcodes
Alert Shortcodes
Display weather alerts and warnings:
[weather_alerts]
[marine_alerts]
[extended_alerts]
[all_weather_alerts]
[weather_alerts] - Standard forecast alerts
[marine_alerts] - Marine forecast alerts (e.g., Gale Warnings)
[extended_alerts] - Extended forecast alerts
[all_weather_alerts] - All alerts from all forecast types
Format Options:
[marine_alerts format=”banner”]
[marine_alerts format=”list”]
[marine_alerts format="banner"] - Large banner style (default)
[marine_alerts format="list"] - Compact list style
Individual Forecast Periods
Display a specific forecast period:
[weather_verbose index=”0″] – Standard forecast, first period
[weather_marine index=”0″] – Marine forecast, first period
[weather_extended index=”0″] – Extended forecast, first period
[weather_verbose index="0"] - Standard forecast, first period
[weather_marine index="0"] - Marine forecast, first period
[weather_extended index="0"] - Extended forecast, first period
Index values:
0= First period (e.g., “REST OF TODAY”)1= Second period (e.g., “TONIGHT”)2= Third period, etc.
All Forecasts
Display all forecast periods:
[weather_verbose_all] – All standard forecasts
[weather_marine_all] – All marine forecasts
[weather_extended_all] – All extended forecasts
[weather_verbose_all] - All standard forecasts
[weather_marine_all] - All marine forecasts
[weather_extended_all] - All extended forecasts
Format Options:
[weather_marine_all format=”cards”]
[weather_marine_all format=”table”]
[weather_marine_all format=”simple”]
- Cards Format (default)
[weather_marine_all format="cards"]
- Grid layout with styled cards
- Best for visual appeal
- Each period in its own card
- Table Format
[weather_marine_all format="table"]
- Structured table layout
- Good for comparing periods
- Compact view
- Simple Format
[weather_marine_all format="simple"]
- Plain text with minimal styling
- Fastest to load
- Good for sidebar widgets
Example Usage
Display Marine Alerts and Today’s Forecast
<!-- Show any marine warnings prominently -->
[marine_alerts]
<!– Show current marine conditions –> <h3>Current Marine Conditions</h3>
[weather_marine index=”0″]
Complete Weather Page
<!-- All active alerts -->
<div class="weather-alerts-section">
<h2>Active Weather Alerts</h2>
[all_weather_alerts]
</div> <!– Standard forecast –> <div class=”standard-forecast”> <h2>Local Forecast</h2>
[weather_verbose_all format=”cards”]
</div> <!– Marine forecast –> <div class=”marine-forecast”> <h2>Marine Forecast</h2>
[weather_marine_all format=”cards”]
</div>
Sidebar Widget
<!-- Compact alert display -->
[marine_alerts format=”list”]
<!– Today’s weather only –>
[weather_verbose index=”0″]
Real-World Alert Examples
Gale Warning (Marine)
🌬️💨 WARNING: GALE WARNING IN EFFECT THROUGH LATE TONIGHT
Small Craft Advisory
⛵⚠️ ADVISORY: SMALL CRAFT ADVISORY IN EFFECT UNTIL 8 PM
Winter Storm Watch
❄️👀 WATCH: WINTER STORM WATCH FROM FRIDAY EVENING THROUGH SATURDAY
Styling
The plugin includes comprehensive CSS classes for customization:
Alert Styling
.weather-alert-banner– Banner format alerts.alert-severe– Red styling for warnings.alert-high– Orange styling for watches.alert-moderate– Yellow styling for advisories
Forecast Styling
.weather-card– Individual forecast cards.weather-table– Table format styling.weather-type-marine– Marine-specific colors.weather-type-extended– Extended forecast colors
Custom CSS Example
/* Make marine warnings more prominent */
.weather-type-marine .alert-severe {
border-left-width: 8px;
font-size: 1.2em;
}
/* Change card colors */
.weather-type-marine .weather-card-header {
background: linear-gradient(135deg, #005f73 0%, #0a9396 100%);
}
Data Files
The plugin creates these files in /wp-content/wx/:
Forecast Files
extracted_verbose.php– Parsed standard forecastsextracted_marine.php– Parsed marine forecastsextracted_extended.php– Parsed extended forecasts
Alert Files
alerts_verbose.php– Standard forecast alertsalerts_marine.php– Marine forecast alerts (warnings, advisories)alerts_extended.php– Extended forecast alerts
Raw Files
miz071.txt– Raw standard forecast from NOAAlmz845.txt– Raw marine forecast from NOAAextended.txt– Raw extended forecast from NOAA
Manual Updates
Use the admin page to manually trigger forecast updates:
- Go to Weather Verbose in WordPress admin
- Click Download & Parse Forecasts Now
- Check the status section to verify updates
Troubleshooting
Alerts Not Appearing
- Check if alerts exist: View the raw forecast files in
/wp-content/wx/ - Verify parsing: Check that
alerts_marine.phpcontains data - Manual update: Trigger a manual forecast download
- Check shortcode: Ensure using correct shortcode (e.g.,
[marine_alerts]not[weather_alerts]for marine warnings)
Example Alert Detection
The parser looks for lines like:
...GALE WARNING IN EFFECT THROUGH LATE TONIGHT...
...SMALL CRAFT ADVISORY UNTIL 8 PM EST...
...WINTER STORM WATCH FROM FRIDAY EVENING...
Cache Issues
If forecasts seem outdated:
- Delete files in
/wp-content/wx/ - Trigger manual update from admin page
- Check file timestamps in admin page
Technical Details
Update Schedule
- Automatic: Every hour via WordPress cron
- Manual: Admin page button
- Cron job: Can be triggered via
wp-cron.php
Alert Detection Logic
The parser:
- Identifies alert lines (starting with
...) - Extracts alert text
- Categorizes by type (WARNING, WATCH, ADVISORY)
- Assigns severity level
- Adds appropriate emoji
- Stores separately from forecasts
Performance
- File-based caching: No database queries
- Efficient parsing: Regex-based extraction
- Smart updates: Only downloads when scheduled
- Minimal overhead: Cached PHP arrays
Support
For issues or questions:
- Check
/wp-content/debug.logfor errors - Verify NOAA URLs are accessible
- Ensure
/wp-content/wx/is writable
Version
Current version: 1.0.0
Author
Rick Xaver, genius