Descripció
一介資男(Mxp.TW) 開發工具箱不是單一功能外掛,而是一個 WordPress 開發、維運、搬站與站點管理工具包。套件內含主要工具箱與四個可獨立啟用的子外掛,讓管理員只啟用目前站台需要的能力。
套件架構
Dev Tools - Mxp.TW:主要工具箱。提供外掛/主題安裝、打包、取代、資料庫維護、網站設定檢視與檔案異動檢查。Dev Tools: Snippets - Mxp.TW:常用維運片段。集中處理安全強化、登入/後台調整、媒體上傳政策、報告排程與網域到期檢查。Dev Tools: Site Manager - Mxp.TW:多站管理輔助。匯出/匯入站台資訊,並以 passkey、加密 token 與 HMAC 提供跨站快速登入。Dev Tools: Hide Login Page - Mxp.TW:登入路徑防護。將預設登入入口改為自訂路徑,並把原始登入與未登入後台入口導向 404。Dev Tools: Feedback Reporter - Mxp.TW:登入用戶全站問題回報。前台與後台可擷取目前頁面、錄製短片、標註截圖、填寫描述後由本站安全轉送 webhook。
Dev Tools – Mxp.TW(主要工具箱)
主要工具箱面向高權限管理員與開發者,功能集中在「安裝、搬站、檢查、替換」:
- 開發常用外掛清單:從遠端清單與 WordPress.org API 取得外掛資訊,支援安裝、更新與啟用。
- Themeforest List:輸入 Envato 或 MXP 授權碼後,列出可下載的主題、外掛與其他檔案,並支援線上安裝。
- 外掛搜尋工具:在後台嵌入作者整理的外掛搜尋介面,從可信來源帶回下載連結後安裝。
- 外掛/主題打包:可從外掛列表、主題工具、最近異動檔案、
wp-content或wp-config.php產生 ZIP 下載。 - 外掛/主題取代:上傳 ZIP 後解析外掛或主題資訊,比對既有項目,取代前建立備份,失敗時回滾。
- 調整內容作者工具:依 Post Type 批次改寫內容作者。
- 查看網站各項設定:顯示外部網路資訊、
wp-config.php常數、使用者定義常數、.htaccess與.user.ini。 - 主機 PHP 設定:在
phpinfo()可用時顯示 PHP/主機設定。 - 資料庫檢視與匯出:列出資料庫與資料表,支援單表、全表、背景 SQL 匯出與
wp-content打包。 - 資料庫關鍵字取代:以 Search Replace DB 類別處理序列化資料安全的預覽與實際取代。
- WP 資料庫最佳化:檢視大型 autoload options,清理 orphan/duplicate meta、未使用 option、使用者 metabox,也提供重置 WordPress 的高風險操作。
- 查看最近變更檔案:掃描並分類近期異動的核心、上傳、主題、外掛與其他檔案。
- Hook 執行時間除錯:登入狀態下加上
?debug時,在 admin bar 顯示 hook 執行時間統計。
Dev Tools: Snippets – Mxp.TW(常用片段與站台行為)
Snippets 子外掛會直接接管多個 WordPress hook,適合用 wp-config.php 先定義 MDT_* 常數後再啟用。
- 安全強化:停用 XML-RPC、隱藏 REST 使用者資料、移除多種前端 metadata/oEmbed/shortlink 輸出、隱藏作者資訊與頭像、停用 self-ping。
- HTTP 標頭:可輸出 frame-options、XSS protection、content type options、cross-domain policy 與 HSTS 類型標頭。
- 檔案修改保護:預設啟用
DISALLOW_FILE_MODS/DISALLOW_FILE_EDIT,並保護指定管理員不被一般後台列表、編輯、刪除或降權流程影響。 - 登入與後台調整:登入頁 Logo、登入後導向、管理信箱同步、註冊開關、封鎖使用者登入、顯示內容/分類/使用者 ID、使用者註冊時間欄位、隱藏非管理員更新提示與 Customize 選單。
- 媒體與上傳政策:可停用縮圖產生、停用大圖縮放、上傳圖片大小限制、自動填入圖片標題/alt/content,並對特權管理員與一般使用者套用不同的檔案大小與 MIME 規則。
- Bot/垃圾防護:登入、註冊、WooCommerce 與留言表單加入 honeypot 與時間戳檢查。
- 前台 Basic Auth:可啟用簡易前台驗證,並以指定 query key/cookie 暫時略過。
- 外部 HTTP 請求管控:可封鎖指定網域,或啟用全域封鎖後只允許白名單。
- 站台健康回報與自動更新排程:可透過排程回報站台資訊,也可在排程內更新指定外掛。
- 網域到期檢查:Dashboard widget 顯示
home_url()、site_url()、多站、額外指定網域與 filter 網域的 RDAP/WHOIS 結果,包含到期日、註冊商、狀態、DNSSEC、Name Server、原始資料與通知狀態。
網域到期檢查常用設定:
MDT_DOMAIN_EXPIRY_CHECK:是否啟用網域到期檢查,預設true。MDT_DOMAIN_EXPIRY_NOTICE_DAYS:到期通知門檻,預設90, 60, 30, 14, 7, 3, 1天。MDT_DOMAIN_EXPIRY_EXTRA_DOMAINS:額外指定檢查網域,支援陣列或逗號分隔字串。MDT_DOMAIN_EXPIRY_OBSERVE_HOSTS:是否自動記錄非設定來源的 HTTP_HOST,預設false。MDT_DOMAIN_EXPIRY_OBSERVED_HOST_RETENTION_DAYS:觀察到的 HTTP_HOST 紀錄保留天數,預設180。MDT_DOMAIN_EXPIRY_MAX_DOMAINS_PER_RUN:單次排程最多查詢數量,預設20。MDT_DOMAIN_EXPIRY_STORE_RAW_DATA:是否儲存 RDAP/WHOIS 原始資料,預設true。
Dev Tools: Site Manager – Mxp.TW(多站管理)
Site Manager 用來把多個 WordPress 站台整理成一個維運主控台,同時保留既有匯出/匯入與快速登入流程。
- 匯出目前站台資訊:包含站台 URL、站名、管理員信箱、IPv4、IPv6、DNS A/NS 記錄、Whois/網域到期資訊、Site Manager 版本、登入協議版本、外掛/佈景主題/核心更新、PHP/MySQL 版本、檔案異動、cron 狀態與環境快照。
- 匯入其他站台匯出的設定字串,經格式、URL、passkey 與欄位結構驗證後仍儲存在
mxp_dev_sites_info_db站台選項;新版主控台會同步寫入mxp_sm_sites、mxp_sm_site_credentials、mxp_sm_site_snapshots、mxp_sm_site_events、mxp_sm_site_jobs、mxp_sm_site_job_logs等資料表。 - 主控台顯示總覽卡片、站台狀態、環境/客戶/標籤備註、更新數、網域到期、最近 heartbeat、事件紀錄與遠端工作紀錄;後台輸出會移除 passkey/secret/token/HMAC/signature 並轉義顯示內容。
- 快速登入:新版站台使用具版本標記的加密 token、HMAC-SHA256、audience、jti 與 15 秒時間窗;目標站會以 transient 防止同一 token 重放。舊版匯入資料仍維持相容的 legacy token,建議重新匯入以升級登入協議。
- 安全配對:先以既有匯出字串內的 passkey 作一次性 bootstrap,完成後改用獨立 remote secret;Hub/Agent REST 請求使用 HMAC-SHA256 簽署 canonical request、5 分鐘時間窗與 replay 防護。
- 遠端控制開放 Level 0/1 安全動作:heartbeat、capabilities、inventory、refresh_snapshot、clear_object_cache、flush_rewrite_rules、trigger_cron、rotate_pair_credential、issue_login_ticket。一次性登入票券只在當次 AJAX 回應交付,不寫入 job 結果或 dashboard state。
- Level 2 中風險操作已提供基本中控能力:update_plugin、update_theme、update_core_minor、activate_plugin、deactivate_plugin。每站預設關閉,需在該站 policy 啟用;production 站另需勾選 production Level 2。所有 Level 2 都必須先 dry-run,由後端簽發 10 分鐘 confirmation token,execute 時再驗 token;同站同時只允許一個 Level 2 running job,multisite execute 預設拒絕。
- Level 3(DB search replace/reset、刪除或任意安裝外掛/佈景、編輯檔案、使用者/角色變更等)仍預設未實作且政策拒絕,不顯示可執行按鈕。
- 重置站台密鑰:刪除本機 passkey 並在下次使用時重建;既有匯出字串會因此失效,已配對的 remote secret 也應解除配對後重新建立。
- 支援單站 Tools 頁面與 multisite Network Admin 頁面;頁面與 AJAX 使用同一個可 filter 的 capability。
匯出的字串包含 passkey,等同可請求快速登入與配對 bootstrap 的高權限憑證。請只在可信任管理員與可信任傳輸渠道中保存或分享;若曾外洩,請立即重置站台密鑰、解除配對並重新匯出/配對。
Dev Tools: Hide Login Page – Mxp.TW(登入路徑防護)
Hide Login Page 沒有設定頁,透過常數控制:
MDT_LOGIN_PATH:預設admin-staff,登入網址會變成/admin-staff/;未啟用 pretty permalink 時使用/?admin-staff。MDT_LOGIN_PATH_DISPLAY:預設true;設為false時可在外掛列表隱藏此子外掛。
啟用後,wp-login.php、/login、wp-register、wp-activate 與非 multisite 的 wp-signup 會走 404 流程;未登入的 /wp-admin/ 請求也會被導到 /404。此外掛也會改寫 WordPress 產生的登入 URL、redirect URL、welcome email 中的登入連結,以及 WooCommerce 密碼重設連結。
Dev Tools: Feedback Reporter – Mxp.TW(全站問題回報)
Feedback Reporter 沒有設定頁,透過 MDT_FEEDBACK_REPORTER_* 常數控制。啟用外掛後預設啟用回報功能;只允許登入並符合 role / user ID 規則的使用者在前台與後台看到回報入口。若要關閉,可在 wp-config.php 將 MDT_FEEDBACK_REPORTER_ENABLE 定義為 false。
- 前台使用明確的「回報問題」浮動按鈕;後台使用低干擾的小型「回報」入口,避免遮住主要操作或一直提醒使用者回報。
- 使用者點擊後才啟動回報流程,可選擇擷取目前頁面「當下捲動視野」,或開啟獨立錄影控制器錄製最長 60 秒短片;控制器留在獨立視窗中,原頁跳轉或重新整理不會中斷錄影,錄影中會顯示倒數與停止按鈕,不必錄滿一分鐘。
- 截圖模式可在截圖上畫框、箭頭、文字、自由畫筆與馬賽克;錄影模式會送出錄影檔與自動產生的封面截圖。若自動 DOM 截圖無法呈現互動畫面,可上傳 PNG/JPEG/WebP 或從剪貼簿貼上外部截圖取代,再填寫問題描述。
- 前端只送到本站 REST endpoint;webhook URL 與 secret 不會輸出到瀏覽器。
- WordPress server-side 驗證登入、nonce、role/user ID、rate limit、截圖與錄影 MIME,並在 webhook 前重新檢查與壓縮截圖大小;未設定 webhook 時仍會保存本機 log/截圖/錄影,設定 webhook 後才送出外部通知;匿名回報也會保存解析後的回報 IP 與 IP hash,方便追蹤濫用來源。
- 回報 IP 會優先使用可信任反向代理還原出的真實用戶 IP:預設會從 Cloudflare 官方
ips-v4/ips-v6清單取得並快取可信 edge CIDR,抓取失敗時才回退到內建 Cloudflare 範圍;只有當REMOTE_ADDR落在可信代理 CIDR 內才讀取CF-Connecting-IP、CF-Connecting-IPv6、True-Client-IP、X-Real-IP、Forwarded或X-Forwarded-For,避免直接打到 origin 的請求偽造 client IP header。若 origin 已由防火牆限制只能經 Cloudflare 進站,也仍建議保留此閘門作為防呆;不建議無條件信任 header。 - log 目錄預設在
wp-content/uploads/mxp-dev-tools/feedback-reporter/,每次回報會寫入不可預測的隨機子目錄與隨機檔名;Apache/LiteSpeed 會透過.htaccess關閉目錄列表並拒絕 JSON log 直連,但允許圖片/影片媒體檔讓內部 webhook 連結可直接開啟,nginx 需由站台自行決定是否加上等效規則;再依保留天數與檔案數上限自動清理,移除 Feedback Reporter 子外掛時預設會刪除 log/截圖/錄影。 - Discord webhook 會以附件方式上傳截圖並在訊息中預覽;Slack incoming webhook 只送出 JSON + Block Kit 文字欄位與 Log / 檔案連結,不使用 image block,避免站台圖片 URL 被主機資安策略阻擋時造成整包通知失敗。
常用常數:
MDT_FEEDBACK_REPORTER_ENABLE:是否啟用全站回報,預設true;可設為false關閉。MDT_FEEDBACK_REPORTER_ADMIN_ENABLE:是否在wp-admin輸出低干擾後台回報入口,預設true。MDT_FEEDBACK_REPORTER_ADMIN_BUTTON_MODE:後台入口樣式,預設subtle-tab,另可用compact-pill。MDT_FEEDBACK_REPORTER_WEBHOOK_URL:接收回報的 webhook URL;預設要求 HTTPS,未設定時仍可回報並保存本機 log/截圖/錄影,但不送出外部通知。MDT_FEEDBACK_REPORTER_WEBHOOK_FORMAT:webhook payload 格式,預設auto;Discord 與 Slack incoming webhook URL 會自動送出相容格式,也可設為generic、discord或slack。MDT_FEEDBACK_REPORTER_WEBHOOK_SECRET:webhook HMAC 簽章 secret,預設空字串。MDT_FEEDBACK_REPORTER_WEBHOOK_REQUIRE_HTTPS:是否要求 webhook URL 使用 HTTPS,預設true;設為false時可接受 HTTP,但仍會拒絕 private/reserved IP。MDT_FEEDBACK_REPORTER_WEBHOOK_SSL_VERIFY:是否驗證 HTTPS 憑證,預設true;設為false時可接受自簽憑證。MDT_FEEDBACK_REPORTER_ALLOWED_ROLES:允許回報的角色,預設administrator。MDT_FEEDBACK_REPORTER_ALLOWED_USER_IDS:額外允許回報的使用者 ID。MDT_FEEDBACK_REPORTER_DENIED_USER_IDS:禁止回報的使用者 ID,優先權最高。MDT_FEEDBACK_REPORTER_DENIED_PATHS:不輸出回報入口的 path prefix,預設只排除/wp-login.php。MDT_FEEDBACK_REPORTER_LOG_RETENTION_DAYS:本機 log/截圖/錄影保留天數,預設30。MDT_FEEDBACK_REPORTER_MAX_LOG_FILES:本機 log/截圖/錄影檔案數上限,預設500。MDT_FEEDBACK_REPORTER_TRUST_PROXY_HEADERS:是否在可信反向代理後方解析真實用戶 IP,預設true。MDT_FEEDBACK_REPORTER_TRUSTED_PROXY_CIDRS:Cloudflare 官方清單抓取失敗時使用的 fallback Cloudflare 代理 CIDR;此閘門是為了防止繞過 CDN 直打 origin 時偽造CF-Connecting-IP/X-Forwarded-For。MDT_FEEDBACK_REPORTER_ADDITIONAL_TRUSTED_PROXY_CIDRS:額外信任的自家 proxy / load balancer CIDR,會與 Cloudflare 官方清單合併;為相容舊設定,若MDT_FEEDBACK_REPORTER_TRUSTED_PROXY_CIDRS內含不屬於內建 Cloudflare fallback 的 CIDR,也會視為額外可信代理。MDT_FEEDBACK_REPORTER_CLOUDFLARE_IPS_AUTO_UPDATE:是否自動抓取 Cloudflare 官方 IP 清單更新可信代理 CIDR,預設true。MDT_FEEDBACK_REPORTER_CLOUDFLARE_IPS_CACHE_TTL:Cloudflare IP 清單快取秒數,預設 7 天;抓取失敗時使用上一份有效 transient 或MDT_FEEDBACK_REPORTER_TRUSTED_PROXY_CIDRSfallback。MDT_FEEDBACK_REPORTER_CLOUDFLARE_IPS_V4_URL/MDT_FEEDBACK_REPORTER_CLOUDFLARE_IPS_V6_URL:Cloudflare IP 文字清單來源,預設https://www.cloudflare.com/ips-v4與https://www.cloudflare.com/ips-v6。MDT_FEEDBACK_REPORTER_MAX_VIDEO_SECONDS:錄影模式最長秒數,預設60。MDT_FEEDBACK_REPORTER_MAX_VIDEO_BYTES:錄影檔案大小上限,預設50 MiB。MDT_FEEDBACK_REPORTER_DELETE_LOGS_ON_UNINSTALL:移除 Feedback Reporter 子外掛時是否刪除 log/截圖/錄影,預設true。
使用風險
- 此套件設計給可信任管理員、開發者與站台維護者使用,不適合開放給一般後台使用者。
- 搜尋取代、資料庫最佳化、WordPress 重置、批次改作者、外掛/主題取代都會改寫資料或檔案;操作前請先確認備份可還原。
- 主要工具箱會讀取並顯示
wp-config.php、.htaccess、.user.ini、PHP 設定與資料庫資訊。 ZipArchive、網路連線、檔案系統權限與主機 PHP 限制會影響打包、匯出、安裝、替換與前端回報轉送功能。
Captures

** 常用外掛操作列表 ** – 作者常用外掛安裝、啟用批次操作區域。

** Themeforest 外掛、主題下載 ** – 輸入 Themeforest 建立的授權碼取得帳號下購買的主題或外掛,線上安裝。

** 批次修改全站內容作者 ** – 指定內容類型全站調整作者權限,讓客戶帳號方便作業。

** 超快速搜尋外掛工具 ** – 作者自行整理的官方外掛庫,每日更新,用來快速找對外掛資源。

** 主題打包工具 ** – 網站主題一鍵打包下載功能。

** 外掛列表頁面打包工具 ** – 網站外掛一鍵打包下載功能。

** 資料庫與資料表檢視與匯出工具 ** – 查看資料庫與資料表設定,並提供匯出備份功能。

** 資料庫關鍵字搜尋與取代工具 ** – 指定或全站資料表掃描固定字眼並取代的功能,搬家時換網域常用。
Instal·lació
- Upload the plugin files to the
/wp-content/plugins/mxp-dev-tools/directory, or install the plugin from the WordPress Plugins screen. - Activate the main
Dev Tools - Mxp.TWplugin through the Plugins screen in WordPress. - Activate optional sub-plugins only when needed:
Dev Tools: Snippets - Mxp.TW,Dev Tools: Site Manager - Mxp.TW,Dev Tools: Hide Login Page - Mxp.TW, orDev Tools: Feedback Reporter - Mxp.TW. - Open 「開發工具箱」 or the relevant sub-plugin admin page in the WordPress admin menu.
- For advanced behavior, define the documented
MDT_*constants inwp-config.phpbefore WordPress loads.
PMF
-
Why are there multiple plugin entries after installation?
-
The package intentionally contains a main plugin plus optional sub-plugins. This lets a site enable only the tools it needs while keeping one shared release package and update path.
-
Should I activate every sub-plugin?
-
No. Activate the main toolbox for development and maintenance tools. Activate Snippets, Site Manager, or Hide Login Page only when the site needs those behaviors, because each sub-plugin changes runtime hooks.
-
Where are Snippets settings configured?
-
Most Snippets behavior is controlled with
MDT_*constants defined before WordPress loads, usually inwp-config.php. Some behavior also has filters documented in the source. -
Will observed HTTP_HOST domains be shown on the domain expiry dashboard?
-
No by default. Since 3.5.9,
MDT_DOMAIN_EXPIRY_OBSERVE_HOSTSdefaults tofalse, and observed-only hosts are kept behind a separate detail page instead of the main dashboard list. -
How do I add extra domains to the expiry check?
-
Define
MDT_DOMAIN_EXPIRY_EXTRA_DOMAINSinwp-config.phpas an array or comma-separated string. -
Define
MDT_LOGIN_PATHbefore WordPress loads. The default slug isadmin-staff. -
No. The exported site string includes the passkey used for quick-login tokens and the first pairing bootstrap. Treat it like an administrator credential, share it only through trusted channels, and rotate the passkey plus re-pair the site if it may have leaked. After pairing, remote control uses a separate encrypted shared secret, HMAC-signed requests, replay protection, and only Level 0/1 low-risk actions.
-
How do I configure Feedback Reporter?
-
Activate the Feedback Reporter sub-plugin. The reporter is enabled by default after activation and can save local logs/screenshots/recordings even before a webhook is configured; define
MDT_FEEDBACK_REPORTER_ENABLEasfalseto disable it. SetMDT_FEEDBACK_REPORTER_WEBHOOK_URLbefore WordPress loads when you want external notifications.autodetects Discord and Slack incoming webhook URLs; setMDT_FEEDBACK_REPORTER_WEBHOOK_FORMATtogeneric,discord, orslackonly when you need to force a payload type. By default the webhook must be HTTPS with a valid certificate; setMDT_FEEDBACK_REPORTER_WEBHOOK_REQUIRE_HTTPSorMDT_FEEDBACK_REPORTER_WEBHOOK_SSL_VERIFYtofalseonly for trusted internal/self-signed receivers. UseMDT_FEEDBACK_REPORTER_ALLOWED_ROLES,MDT_FEEDBACK_REPORTER_ALLOWED_USER_IDS, andMDT_FEEDBACK_REPORTER_DENIED_USER_IDSto limit who can submit reports. -
Does Feedback Reporter expose my webhook secret to visitors?
-
No. The browser only receives the local REST endpoint and nonce. WordPress sends the webhook server-side and signs it with
MDT_FEEDBACK_REPORTER_WEBHOOK_SECRETwhen configured. -
Do I need to back up before using database or replacement tools?
-
Yes. Database search/replace, optimization, cleanup, reset, bulk author changes, and file replacement tools can modify production data or files. Always keep a verified backup before running destructive actions.
Col·laboradors i desenvolupadors
«一介資男(Mxp.TW) 開發工具箱» és programari de codi obert. La següent gent ha col·laborat en aquesta extensió.
Col·laboradorsTraduïu «一介資男(Mxp.TW) 開發工具箱» a la vostra llengua.
Interessats en el desenvolupament?
Navegueu pel codi, baixeu-vos el repositori SVN, o subscriviu-vos al registre de desenvolupament per fisl de subscripció RSS.
Registre de canvis
3.6.11
- Site Manager 遠端 Level 2 execute 會在已驗證簽章與 policy 後切入管理員 capability context,避免 REST Agent 無登入使用者時 WordPress upgrader 直接拒絕外掛/佈景/核心更新。
- Site Manager 新增外掛操作改為多來源流程:可選 WordPress.org slug 或外部 ZIP URL,ZIP 來源會驗證
http/https、.zip路徑與下載主機,執行前會先檢查 ZIP 只含單一有效外掛入口,預檢畫面會顯示來源類型、下載主機、預期 slug、既有安裝狀態與安裝後啟用選項。 - Site Manager 主控台重整站台詳細頁、操作分組與變更預覽介面;配對後依 Agent 回報功能預設開放可用操作,移除畫面上的 Level 術語與一次性 alert,改為持久的頁內狀態回饋。
- Site Manager 遠端操作失敗時會恢復按鈕狀態,並在操作區塊內保留可除錯的錯誤明細(action、job、Agent 回應摘要等),避免只顯示無法追查的頁首錯誤。
- Site Manager 匯入網站設定後會立即使用匯出字串內的 bootstrap passkey 嘗試配對 Agent;只有連線、安全檢查或版本能力不足時,畫面才會提示用「重新配對」恢復。
- Site Manager 新增
wp mxp-site-manager export|import|pair|list指令;CLI 匯入預設會直接配對,也可用--skip-pair只保存站台設定,支援自動化佈署與救援流程。 - Site Manager Agent 驗證 Hub 簽章時會鎖定目前站台的配對 credential,避免同一 Hub 管多站時誤用其他站台較新的密鑰而讓遠端操作回 403。
- Site Manager Dashboard 改用專屬
MXPSiteManager前端設定物件,避免其他管理頁腳本覆寫共用MXPnonce 後造成「登入」等 AJAX 操作出現錯誤驗證。 - Site Manager 站台列表新增「移除」操作,會先確認再刪除 Hub 端保存的站台設定與配對憑證。
- Site Manager Level 2 預檢會保留原始 payload 並用該 payload 執行確認,避免畫面重繪後 select 重置造成啟用、停用、更新操作的 confirmation token 驗證失敗。
- Site Manager 外掛更新、啟用、停用改為表格式批次操作;可勾選多個外掛,一次預檢、一組確認後依序執行。
- Site Manager 變更操作表格補上明確的功能矩陣說明、列尾「加入批次」按鈕、已選數量與「預檢並準備執行」主按鈕,避免只看到下拉選單卻不知道如何執行。
- Site Manager 操作結果改為可讀表格與摘要,並在預檢、批次結果、錯誤回饋產生後自動聚焦到對應區塊,避免使用者執行後還停在原畫面找不到結果。
- Site Manager 的 Inventory / Refresh Snapshot 回饋改為專用可讀摘要:以卡片呈現 WordPress、PHP、DB、Agent、外掛/佈景數量、更新狀態、WP-Cron、檔案修改、時區與語系,並列出實際可更新項目,不再把
plugins.items/themes.items物件陣列或英文 action key 直接塞進欄位。 - Site Manager 狀態同步與維護工具按鈕保留原本卡片結構,執行中只更新主標與說明,不再把按鈕內容壓成純文字;快照資料庫版本改用
$wpdb->db_version()正確擷取。 - Site Manager 變更操作新增 WordPress.org 外掛安裝:輸入 slug 後先做 Level 2 預檢,確認後才安裝,並可選擇安裝後立即啟用。
3.6.10
- Feedback Reporter 載入 Painterro 後會還原既有
window._,避免 Painterro 內含的 Lodash 4 覆蓋 WordPress admin 依賴的 Underscore,造成媒體庫_.contains is not a function並讓特色圖片無法選取。
3.6.9
- Feedback Reporter 儲存 log、webhook 與匿名 IP hash/rate limit 時,改為只在
REMOTE_ADDR符合可信代理 CIDR 後解析 Cloudflare / reverse proxy client IP header;可信 Cloudflare CIDR 會從官方ips-v4/ips-v6文字清單抓取並以 transient 快取,抓取失敗時回退內建清單;預設支援 CloudflareCF-Connecting-IP,並在 Cloudflare Pseudo IPv4 overwrite 模式下改用CF-Connecting-IPv6保留真實 IPv6,避免直接請求偽造X-Forwarded-For;匿名回報現在也會保存解析後的完整 IP 供濫用追蹤,且該 IP 會隨已設定的第三方 webhook 一併送出。 - Feedback Reporter 前台回報 modal / editor / controls 強化 CSS 隔離,避免站台主題覆寫按鈕、標題 pseudo element、表單控制項與回報卡片樣式。
- Feedback Logs 後台列表修正長 Trace ID、URL、檔案路徑與 webhook 文字撐破欄位的問題,改用固定表格寬度、水平捲動與欄內斷行。
3.6.8
- Feedback Reporter 的 Slack incoming webhook 不再送出 Block Kit image block;截圖與錄影仍保留在文字欄位與「開啟 Log」入口,避免 WordPress.com、Cloudflare、WAF、登入保護或靜態檔案策略阻擋圖片 URL 時造成 Slack 回
invalid_blocks並讓整包通知失敗。 - Discord webhook 維持 multipart attachment 上傳截圖檔案的既有行為,不受此調整影響。
3.6.7
- Feedback Reporter 新增可選匿名前台回報:設定
MDT_FEEDBACK_REPORTER_ALLOW_ANONYMOUS=true後,未登入訪客可使用同一套截圖、標註與錄影流程送出回報;匿名路徑使用短效 challenge、同站 Origin/Referer 驗證、honeypot、IP/UA/path rate limit、較小的預設檔案上限,且後台不對匿名訪客顯示。 - 匿名模式第一版即支援錄影回報(
MDT_FEEDBACK_REPORTER_ANON_ALLOW_VIDEO預設 true),預設限制為 20 秒 / 15 MiB,截圖預設 2 MiB;log 會標記anonymous使用者並保存 IP hash,不在匿名 log 中保存完整 IP。 - Feedback Reporter 修正前台與後台回報入口的捲軸鎖定:開啟回報模式視窗時改用可還原的 scroll lock 保留原視覺位置,避免 WordPress 後台因
overflow:hidden被瀏覽器重設到頁面頂端。 - 所有 modal、錄影 popup 與送出完成流程改用 prevent-scroll focus,關閉或選擇截圖時會還原原始 scroll position,確保後續 Browser Screen Capture / SnapDOM fallback 都從使用者當下的 viewport 進行。
3.6.6
- Feedback Reporter 在支援且安全的瀏覽器環境中優先使用 Browser Screen Capture API,並採用接近線上會議的螢幕/視窗/分頁分享選擇器;需要包含 DevTools 或瀏覽器外框時可選整個螢幕或視窗,使用者取消或瀏覽器不支援時才回落到 SnapDOM/DOM 截圖。
- 新增錄製短片回報模式:支援 MediaRecorder 的安全桌機瀏覽器會開啟獨立錄影控制器,可選擇分頁、視窗或螢幕錄影,預設最長 60 秒;原頁跳轉不會中斷錄影,錄影中顯示倒數與停止按鈕,使用者可提前結束;送出時會附上錄影檔與封面截圖,後台 Feedback Logs 可預覽影片。不支援或彈窗被阻擋時會回落到頁內錄影/截圖流程。
- Discord / Slack webhook 會盡量使用一致的詳細資訊:使用者描述、頁面、SEO、回報者、角色、裝置、請求資訊、Console errors、Log、Screenshot、Video;Slack 使用 Block Kit + mrkdwn 欄位與可用時的截圖 image block,Video 欄位使用錄影檔案的站點完整 URL,方便內部通知直接點開;Apache/LiteSpeed
.htaccess會配合允許圖片/影片媒體檔直連並保留 JSON log 阻擋。 - 標註編輯器改成只縮放 CSS 預覽,實際 canvas 保留原始截圖像素;預設截圖上限提高到 3840×8192、檔案上限提高到 5 MiB,改善文字與細節模糊問題。
- Feedback Reporter viewport 截圖保留 client-side 資源 URL 正規化:對同站台的 www/non-www 圖片、
srcset、inline style 與 computed background/mask image,改用目前頁面的 origin 讓 SnapDOM 直接讀取,避免常見跨 host alias 的 CORS/dataURL 失敗與截圖破碎。 - 保持不走預設後端圖片 proxy;真正第三方且未提供 CORS 的資源在 SnapDOM fallback 仍受瀏覽器安全模型限制,可用 Browser Screen Capture、來源端 CORS、上傳或貼上截圖 fallback。
3.6.5
- Feedback Reporter Logs 列表新增截圖縮圖,詳細頁新增大型截圖預覽;圖片透過後台權限與 nonce 保護的
admin-post.phpendpoint 讀取,保留既有私有 log 目錄保護。 - 修正 WordPress.org Test Preview 藍圖:先安裝並啟用
mxp-dev-tools,再啟用 Feedback Reporter 子外掛,避免 Playground 在外掛尚未安裝時執行activatePlugin造成Plugin file does not exist。
3.6.4
- 修正 Feedback Reporter 捲動頁面的 viewport 截圖:以暫存 viewport 舞台擷取目前畫面,並把 fixed/sticky 元素依實際視窗座標重疊,避免 DDEV 固定底部操作列在桌機與手機截圖中位移或遮蓋錯誤。
- 移除標註視窗中的「貼上截圖」按鈕;保留 Ctrl/⌘+V paste 事件與「上傳截圖」fallback,避開瀏覽器 Clipboard API 權限不一致造成的空按鈕體驗。
3.6.3
- 修正 Feedback Reporter 自動截圖範圍:截圖前不再先鎖定頁面捲動,並以目前 viewport 捲動位置裁切,避免回報內容誤抓頁面頂端。
- 新增截圖取代功能:標註視窗可上傳 PNG/JPEG/WebP,或在支援的瀏覽器按 Ctrl/⌘+V 從剪貼簿貼上圖片。
- 強化替代截圖流程的 RWD 介面、圖片尺寸壓縮、格式檢查與錯誤提示,讓桌機、手機與不同瀏覽器都有檔案上傳 fallback。
3.6.2
- Feedback Reporter 啟用子外掛後預設可直接回報並保存本機 log/截圖;
MDT_FEEDBACK_REPORTER_ENABLE=false仍可覆寫關閉。 - Feedback Logs 頁面新增 webhook 設定提醒:未設定時顯示通知,已設定時顯示目前通知類型與 host。
- 新增 Slack incoming webhook 自動偵測與
MDT_FEEDBACK_REPORTER_WEBHOOK_FORMAT=slack,使用 JSON + Block Kit 送出摘要與本機 log/截圖路徑。 - 新增 WordPress Playground
assets/blueprints/blueprint.json,支援 WordPress.org 外掛頁即時預覽。 - 移除外部服務依賴說明段落。
3.6.1
- 更新 Feedback Reporter vendored SnapDOM 至
3.2.0。 - 確認 SnapDOM 3.2.0 與現有截圖流程相容:新增 ESM 動態載入 fallback,維持
snapdom(target, options)、toBlob()、viewport clip、ignore selector 與遮罩流程可正常運作。 - 強化 Feedback Logs 後台檢視頁:重要資訊分卡片顯示、webhook 狀態 badge、補送/刪除操作、Raw JSON 與手機版 RWD 呈現。
3.6.0
- 新增
Dev Tools: Feedback Reporter - Mxp.TW子外掛,支援前台與後台登入用戶截圖、標註、填寫描述與 webhook 回報。 - 新增
MDT_FEEDBACK_REPORTER_*常數設定:啟用狀態、後台低干擾入口、webhook、HTTPS/憑證嚴格度、role/user ID 限制、截圖大小、遮罩 selector、rate limit、log 保留天數與檔案數上限。 - 新增本機 JSON log + screenshot 檔案薄紀錄與每日清理機制;管理員可從「工具 Feedback Logs」讀取檔案型回報紀錄、檢查 webhook 送出狀態、手動補送 webhook,並刪除紀錄;移除子外掛時預設刪除 log。
- 強化 Feedback Reporter 送出流程:後端在 webhook 前重新壓縮超限截圖,並將截圖頁面的 SEO meta/canonical/Open Graph/Twitter/H1/JSON-LD 型別摘要一併寫入 log 與 webhook。
3.5.9
- 調整網域到期檢查的 observed host 行為:預設不再自動記錄 HTTP_HOST,可用
MDT_DOMAIN_EXPIRY_OBSERVE_HOSTS啟用。 - 新增 observed host 180 天保留規則、獨立檢視頁與刪除操作,避免非主要網域直接出現在控制台。
3.5.8
- 新增網域到期檢查資訊的註冊商、註冊日期、網域狀態、DNSSEC 與 Name Server 等基本細節。
- 調整網域到期通知文案,改用「已進入到期前提醒」並加入註冊商資訊,方便確認續約平台。
3.5.7
- 調整網域到期檢查資訊顯示完整主機名稱,避免子網域被簡化為主網域。
- 調整網域到期通知規則,僅通知 home_url / site_url 類型來源,純 observed_host 不寄送通知。
3.5.6
- 調整網域到期檢查資訊的後台文案,移除不易理解的英文術語。
