WordPress Plugin 功能整合

🧩 一、Plugin 功能清單(後台)

以下是你自製 Plugin(例如:wp-weatherhub)的主要功能項目,包含 PHP 與 Python 的整合介面:

🔧 系統核心功能

  1. 氣象站資料管理
    • 可新增多個氣象站(station_id, station_name, location, API Key, API URL
    • 儲存於自建資料表 wp_weather_stations
    • 可啟用/停用特定氣象站
    • 自動檢查 API Key 是否有效
  2. API 資料擷取(PHP 端)
    • 可從中央氣象署開放資料平台以 REST API 擷取資料
    • 支援排程(例如每小時自動更新)
    • 可設定不同的氣象資料來源(溫度、降雨、風速、紫外線等)
  3. Python 資料爬取整合
    • 可於後台新增爬蟲任務(網址、解析類型、間隔時間)
    • 透過 exec() 或背景執行觸發 Python 腳本(例如 weather_crawler.py
    • 將爬取結果(JSON 格式)寫入資料表 wp_weather_data
    • 支援 log 與錯誤紀錄檔(方便除錯)
  4. 資料儲存與快取
    • MySQL 資料表:
      • wp_weather_stations(氣象站清單)
      • wp_weather_data(爬取/API 資料)
      • wp_weather_logs(執行紀錄與錯誤)
    • 支援 transient / object cache 提升前端效能
  5. 後台管理介面
    • 使用 WordPress 原生設定頁(admin_menu
    • 設定分頁:
      • 🔑 API 管理(新增中央氣象署 API Key、更新頻率)
      • 🌦 氣象站管理(CRUD 操作)
      • 🧠 Python 爬蟲任務(網址、執行狀態、上次更新時間)
      • 🧾 執行紀錄(log browser)
    • 支援 AJAX 即時測試 API 與爬蟲執行

🎨 二、前端可呈現內容清單(使用 Blocksy + Highcharts + TablePress)

📊 圖表與視覺化呈現(Highcharts)

  1. 溫度變化折線圖
    • 每日或每小時氣溫變化
    • 支援多氣象站對照(多條線)
  2. 降雨量柱狀圖
    • 顯示過去 24 小時 / 7 天的降雨量
  3. 風速風向圖
    • 使用 Highcharts Wind Barb 模組
  4. 紫外線、濕度、氣壓對照圖
    • 可切換資料項目
  5. 即時監控面板(Dashboard)
    • 顯示最新各站的即時值
    • 使用 Highcharts Gauges(儀表板式圖表)

📋 資料表呈現(TablePress 或自建表格)

  1. 氣象資料總覽
    • 每個氣象站的即時數據(溫度、濕度、風速、降雨量)
    • 資料可從 Plugin 的資料表動態產生
  2. 歷史資料查詢表
    • 透過 shortcode [weather_table station="Tamsui"] 生成
    • 支援 DataTables 分頁、排序、搜尋
  3. 異常事件記錄
    • 顯示爬蟲失敗、API 超時、資料異常的紀錄

🔌 Shortcodes 與 Gutenberg Blocks

  1. [weather_chart type="temperature" station="all"]
    • 顯示多站氣溫折線圖
  2. [weather_dashboard]
    • 顯示當前最新數據儀表板
  3. [weather_table station="Tamsui"]
    • 顯示單站歷史表格資料
  4. [weather_map]
    • 可擴充成顯示氣象站分佈地圖(Leaflet.js)

🌐 外觀整合(Blocksy 主題)

  • Plugin 可輸出自定義區塊或 Widget(例如首頁顯示天氣小卡片)
  • 支援 Blocksy 的動態資料掛鉤(Dynamic Data Hooks)
  • 可設計簡約卡片樣式(溫度 + 圖示 + 更新時間)

🔮 延伸功能(可日後加入)

Telegram 通知(異常或 API 失敗)

Webhook 支援(Python 爬完即自動通知 Plugin 更新)

REST API 端點(供外部系統讀取氣象資料)

定時快照(每日自動存成 CSV / JSON)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *