gravity forms 是 rocketgenius 的一款產(chǎn)品,是 WordPress 的綜合表單解決方案。任何開發(fā)人員都會告訴您,構(gòu)建表單有時會非常耗時,尤其是當它需要做的不僅僅是處理消息時。
如果您需要一個表單來根據(jù)特定條件將用戶注冊到您的網(wǎng)站,該怎么辦?或者,如果您需要一個允許用戶從前端角度將內(nèi)容發(fā)布到您的網(wǎng)站的表單,該怎么辦? Gravity Forms 可以做到所有這些,而它無法做到的開箱即用的功能,您可以利用其內(nèi)置的鉤子和過濾器自行構(gòu)建。
在我討論 Gravity Forms 如何擴展您的 WordPress 安裝之前,請務(wù)必注意 Gravity Forms 是一個高級插件。要獲得本文中討論的一些好東西,您至少需要一個重力形式的商業(yè)許可證,但是我強烈推薦開發(fā)人員許可證,因為它可以為您帶來最大的收益。現(xiàn)在我們已經(jīng)解決了這個問題,讓我們看一下 Gravity Forms 擴展 WordPress 網(wǎng)站的幾種方法。
擴展用戶注冊表
可以通過向 functions.php 文件添加代碼來向注冊表單添加額外的字段,但您可以通過讓 Gravity Forms 完成繁重的工作來避免在后臺花費太多時間。使用 Gravity Forms 創(chuàng)建用戶和分配用戶角色非常簡單,您只需創(chuàng)建一個表單,將您的字段與 WordPress 默認字段相匹配,然后選擇提交時要分配的用戶角色。您還可以對同一個表單進行多個“注冊”。
重力形式如何擴展用戶注冊過程的一個例子是條件注冊。例如,如果您的會員網(wǎng)站僅允許電子郵件地址為“@xyz.com”和“@abc.com”的用戶進行注冊,則您可以添加僅創(chuàng)建用戶并將其分配給基于角色的注冊源。判斷他們是否符合該標準,同時不允許其他人注冊。
這種條件邏輯遠遠超出了用戶注冊的范圍,您可以在任何類型的表單中創(chuàng)建條件字段。例如,如果您想根據(jù)用戶的年齡組向用戶顯示其他字段,您可以根據(jù)用戶的響應(yīng)選擇顯示(或選擇隱藏)其他字段來自定義字段。
使用重力形式進行前端內(nèi)容提交
如果您希望為用戶提供更強大的前端,重力表單可以是一個很好的解決方案,它允許用戶直接向帖子提交內(nèi)容。您所需要做的就是創(chuàng)建一個使用內(nèi)置帖子字段功能的表單。這些帖子字段映射到默認帖子標題、正文內(nèi)容、摘錄、特征圖像、類別和標簽。 Gravity Forms 還將表單數(shù)據(jù)映射到自定義字段。要將您的內(nèi)容映射到自定義字段:
當 Gravity Forms 與插件 Gravity Forms + 自定義帖子類型結(jié)合使用時,該組合通過允許將表單數(shù)據(jù)映射到自定義帖子類型(因此成為該插件的名稱)來提供更多功能。如果您擔心安裝太多插件 – 并且只需要對自定義分類法的支持 – 您始終可以通過 functions.php 文件掛鉤到 Gravity Forms 來手動添加支持。
談到鉤子和過濾器
重力形式附帶大量文檔。如果你能夢想,你就可能實現(xiàn)它。您可以利用多種掛鉤和過濾器,最好的部分是您可以將它們分配給單獨的表單。假設(shè)您希望允許用戶向您的網(wǎng)站提交帖子,但您希望控制其標題長度,您可以創(chuàng)建自定義驗證邏輯來??限制輸入的長度。請參閱示例。
add_filter( 'gform_validation_7', 'title_size' ); function title_size( $validation_result ) { $form = $validation_result["form"]; // assuming we don't want input_3 to be longer than 75 characters. if ( strlen( $_POST['input_3'] ) > 75 ) { // set the form validation to false $validation_result["is_valid"] = false; // find field with ID we're looking for and marking it as failed validation foreach ( $form["fields"] as &$field ) { // replace 3 with the field id number you're validating if ( $field["id"] == "3" ) { $field["failed_validation"] = true; $field["validation_message"] = "Title is too long."; break; } } } // change object back to the result $validation_result["form"] = $form; return $validation_result; } ?>
代碼的第一部分使用過濾器進行重力形式驗證,并創(chuàng)建一個測試相關(guān)字段長度的函數(shù)。請注意此片段中的數(shù)字 7 和 3。 7表示表單ID,3表示正在測試的實際輸入ID。
重力形式文檔包括可用鉤子和過濾器的列表,以及每個鉤子和過濾器的詳細示例 – 有時您甚至可以看到何時/為何需要它們。
結(jié)論
如果您正在尋找一種開箱即用的表單解決方案,其功能不僅僅是發(fā)送電子郵件,那么重力表單是一個不錯的選擇 – 并且可以節(jié)省時間。可能性是無限的。對于那些因購買價格而對使用重力形式爭論或持觀望態(tài)度的人來說,它可能看起來很高,但使用重力形式所節(jié)省的好處和開發(fā)時間是值得的。