[orca-admin] 支援Forminator垃圾郵件實戰 - 蔡大痣:SEO 顧問及 WordPress 網站專家,鑽研 AI 工具研發

文章分類/

[orca-admin] 支援Forminator垃圾郵件實戰

1 瀏覽
2025-07-27 更新

在現代網站開發中,表單垃圾郵件是一個持續存在的問題
因此,虎鯨orca-admin外掛採用OpenAI/Gemini API建立一個過濾信件的系統,減低惱人的垃圾信問題。

今天我將分享如何為 Forminator 外掛加上你自已的郵件檢查邏輯呢? 有一樣需求的朋友再看看吧

找不到官網文件時,直接看Forminator的原始碼即可,這也是我喜歡WP外掛生態圈可以常常基於其他外掛的Hook進行二次開發(功能擴展)

如何Hook Forminator的表單呢?

Forminator提供一個表單寄送前檢查的action: forminator_custom_form_mail_before_send_mail

 add_action('forminator_custom_form_mail_before_send_mail', 
                   array($this, 'validate_before_send_mail'), 10, 4);
        
<?php
public function validate_before_send_mail($mail_instance, $custom_form, $data, $entry) {
    try {
        // 取得表單基本資訊
        $form_id = $custom_form->id ?? 'unknown';
        $form_name = $custom_form->settings['formName'] ?? "Forminator Form $form_id";
        
        ORCA_Logger::log("Forminator Form - ID: $form_id, Name: $form_name");
        
        // 組合表單內容
        $content = $this->format_forminator_data($data, $custom_form);
        
        // 智慧表單類型檢測
        if ($this->is_subscription_form($data)) {
            // 簡易檢查模式(僅驗證 Email 格式)
            $this->validate_subscription_form($data);
        } else {
            // 完整垃圾郵件檢測
            $this->validate_form_content($content, $form_name);
        }
        
    } catch (\Exception $e) {
        // 錯誤處理:支援 AJAX 和一般請求
        ORCA_Logger::log("垃圾郵件檢測失敗: " . $e->getMessage());
        
        if (wp_doing_ajax()) {
            wp_send_json_error([
                'message' => $e->getMessage(),
                'type' => 'spam_detected'
            ]);
        }
        
        wp_die($e->getMessage(), '垃圾郵件檢測', [
            'back_link' => true,
            'response' => 403
        ]);
    }
}

結果如下:

可以成功把攔到的錯誤訊息也回傳給Forminator顯示

✦ 虎鯨 OrcaBiz SEO 優化專業團隊 ✦

專業 SEO 公司幫助你將流量累積成看得見的業績,成為長期有效的最強業務!

載入中…
沒有更多相關文章可閱讀