WP Manifestindependent plugin directory
manifest / forms / cdx-forms

Codotx Forms

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

by Codotx · github.com/oberonlai/cdx-forms · website

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/oberonlai/cdx-forms/archive/refs/heads/main.zip

以 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.phpwp-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