簡體   English   中英

需要自定義wordpress聯系人form-7表單字段驗證

[英]Need to customize wordpress contact form-7 form fields Validation

在我的Wordpress網站上,我安裝了Contact Form-7插件,並且遇到了問題。 我認為對於文本字段沒有特殊的驗證。 同樣對於電話字段,Contact Form-7插件僅提供對not nullblank字段的基本驗證。

我的問題是:對於那些問題,我應該怎么解決? 我可以修改核心插件文件,也可以創建自己的聯系表。

在聯系表7中,用戶輸入驗證被實現為過濾器功能。 用於驗證的過濾器掛鈎根據表單標簽的類型而有所不同,並確定為:wpcf7_validate_ + {表單標簽的類型}。 因此,對於文本表單標簽,使用了過濾器掛鈎wpcf7_validate_text。 同樣,wpcf7_validate_email *用於email *表單標簽。

假設您在表單中具有以下電子郵件字段:

  Email:         [email* your-email]
  Confirm email: [email* your-email-confirm]

以下清單顯示了驗證兩個字段是否具有相同值的代碼。

add_filter('wpcf7_validate_email*', 'custom_email_confirmation_validation_filter', 20, 2);

function custom_email_confirmation_validation_filter($result, $tag) {
    $tag = new WPCF7_Shortcode($tag);

    if ('your-email-confirm' == $tag->name) {
        $your_email = isset($_POST['your-email']) ? trim($_POST['your-email']) : '';
        $your_email_confirm = isset($_POST['your-email-confirm']) ? trim($_POST['your-email-confirm']) : '';

        if ($your_email != $your_email_confirm) {
            $result->invalidate($tag, "Are you sure this is the correct address?");
        }
    }
    return $result;
}

兩個參數將傳遞給過濾器函數:$ result和$ tag。 $ result是WPCF7_Validation類的實例,該類管理一系列驗證過程。 $ tag是由給定的form-tag組件組成的關聯數組; 如您在前面的食譜中所見,可以使用WPCF7_Shortcode類來處理此類數據。

查看過濾器功能的內部。 首先,檢查表單標簽的名稱,以確保僅將驗證應用於特定字段(您的電子郵件確認)。

然后比較兩個電子郵件字段值,如果它們不匹配,則將調用$ result-> invalidate()。 您需要將兩個參數傳遞給invalidate()方法:第一個參數應該是$ tag變量,第二個參數是希望字段顯示的驗證錯誤消息。

最后,不要忘記返回$ result。

新的聯系表7插件提供了其最新更新的內置驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM