WP Manifestindependent plugin directory
manifest / forms / cdx-forms

Codotx Forms

以 CPT 管理課前問卷、前台互動式問卷(沿用網站 header)、作答存後台並寄通知信。由 Claude Design 移植。

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/oberonlai/cdx-forms/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

以 CPT 管理「課前問卷」內容,前台顯示互動式問卷(沿用網站既有 header),作答結果存入後台並寄送通知信。

由 Claude Design 專案 課前問卷.dc.html 移植而成,已改寫為純 vanilla JS,不再依賴原始的 DC runtime 與外部送信服務。

功能

  • 註冊「課前問卷」CPT,後台可建立多份問卷、各自管理內容。
  • 題型支援單選、複選(可多選)、填寫內容(自由文字),每題可獨立切換。
  • 每份問卷可編輯:開場標題/說明、題目與選項(可增刪)、主題色、 是否收集聯絡資料、聯絡步驟文案、完成訊息、通知信箱。
  • 前台為互動式單選問卷(開場 → 逐題作答 → 聯絡資料 → 完成), 支援鍵盤操作(A/B/C/D 選項、Enter、Backspace)。
  • 前台沿用佈景主題既有的 header/footer(不套設計自帶的品牌列)。
  • 支援 WordPress Abilities API:可透過 MCP 用 AI 新增/編輯題目、管理回覆名單(需安裝 Abilities API)。
  • 送出後將回覆存為「問卷回覆」CPT,並寄一封通知信到設定的信箱。

使用方式

  1. 於後台「課前問卷 → 新增問卷」建立問卷,新問卷會預帶一組預設題目。
  2. 編輯題目、選項與設定後發佈。
  3. 直接開啟該問卷的網址即可(沿用網站 header),或用短碼 [cdx_survey id="問卷ID"] 嵌入任一頁面。
  4. 回覆會出現在「課前問卷 → 問卷回覆」,並寄到設定的通知信箱。

安全性

  • AJAX 送出以 nonce 驗證,答案在後端以「儲存的題目」重建(不信任前端傳來的題目標籤)。
  • 前台注入的 JSON 設定以 JSON_HEX_TAG 等旗標跳脫,避免 </script> 破格。
  • 公開送出端點加上 per-IP 節流與 payload 長度上限,降低機器人洗版與外送信件濫用。
  • 通知信不將使用者名稱帶入郵件標頭。

測試

composer global require phpunit/phpunit   # 或使用已安裝的 phpunit
phpunit

單元測試涵蓋「答案以伺服器端題目重建」的安全邏輯(tests/), 不需 WordPress 測試資料庫即可執行。

販售 / 授權(Licento)

本外掛可搭配 Licento 授權伺服器販售:客戶輸入序號啟用後才提供自動更新。

賣家設定(在主檔 cdx-forms.php 或 wp-config.php 定義常數):

define( 'CDX_FORMS_LICENSE_SERVER', 'https://your-licento-site.com' );
define( 'CDX_FORMS_LICENSE_PRODUCT_ID', 123 ); // Licento 後台的產品 ID
  • 未設定時授權機制完全關閉(外掛照常運作、不顯示提示)。
  • 設定後為硬性閘門:未啟用有效序號前,前台表單不顯示、送出被拒、MCP 管理停用。
  • 後台「Codotx Forms → 授權」可輸入/停用序號;每日自動心跳驗證。
  • 有效授權才會收到自動更新;更新套件從 Licento(GitHub Releases)取得,下載時即時換發單次 token。
  • 自動更新的版本來源正是本 repo 的 release.yml(打 v* tag 會建立 GitHub Release)。

備註

  • 原設計標題字體使用 Sansation(需自備字型檔),本外掛以 Google Fonts 的 Outfit 作為替代。
  • 通知信透過 wp_mail() 寄出,站台建議搭配 SMTP 外掛。

License

GPL-2.0-or-later