2013-01-06 45 views
7

我在多種形式的wordpress站點中使用聯繫表格7。 我需要將一個表單導向不同於其他表單的動作url。如何更改聯繫表單7的表單動作url?

我發現下面的回覆是針對之前的帖子,但我不知道該怎麼做。 有人可以指定什麼確切的代碼需要包含在「附加設置」 以及在functions.php中的代碼是什麼樣子?

感謝您的幫助!


回覆來自差異。線程,我不完全明白...

*是的,你必須使用此過濾鉤子wpcf7_form_action_url更改窗體中的「動作」屬性。 (代碼是什麼?)你可以在主題的functions.php中添加鉤子,然後在ASP頁面中處理表單數據。 (代碼?) *


+1

鏈接到前一個主題?你有什麼嘗試?所以不會爲你編寫代碼,儘管它可以幫助你處理你已經寫入的代碼 – FelipeAls

+0

[你試過了什麼?](http://whathaveyoutried.com) – maiorano84

+0

我很抱歉,我是一個設計WP在我之前建立的網站。看到聯繫表格7已經安裝並設置了各種表格,我添加了一個新表格並且收到了電子郵件通知。但是我需要將新表單的數據發送到與默認不同的.asp。在線搜索後,似乎可以通過向CF7,add_filter(wpcf7_form_action_url,________)和function.php文件中的其他設置添加代碼來完成此操作?我已經找到了無數的PHP代碼如何重定向的網址,但沒有任何關於PHP來更改表單動作的URL ...道歉在黑暗中重新:這.. – user1102824

回答

25

既然你不熟悉PHP代碼在所有的,我給你一點速成班在WordPress的API中的編碼。

首先,您需要知道函數和變量之間的區別。變量是代表任意值的單個實體。值可以是任何東西。數字,別人的名字或複雜的數據。

函數是執行一系列動作的東西,可以發回 - 或返回 - 變量,或更改給定的變量。

<?php 
$a = 1; //Number 
$b = 'b'; //String *note the quotes around it* 
$c = my_function(); //Call to a function called my_function 
echo $a; //1 
echo $b; //b 
echo $c; //oh, hello 
function my_function() 
{ 
    return 'oh, hello'; 
} 
?> 

WordPress的利用鬆散的基礎上的Event-Driven Programming風格自己的行動和過濾系統。

這是什麼意思是說,Wordpress正在「偵聽」某個事件發生,當它發生時,它執行附加到該事件(也稱爲回調)的函數。這些是「操作」和「過濾器」。那有什麼區別?

操作是做的東西
篩選功能返回的東西

那麼,如何這一切適合你的問題的功能?

聯繫表單7有其自己的過濾器,返回信息將通過其形式發送到的URL。

所以在Filter Hook

add_filter('hook_name', 'your_filter'); 
  1. 的的add_filter的基礎知識,讓我們看看是告訴WordPress的,它需要聽 特定事件的功能。
  2. 'hook_name'是Wordpress正在偵聽的事件。
  3. 'your_filter'是函數或回調 - 當'hook_name'事件被觸發時被調用。

上一個線程的鏈接指出您需要使用的鉤子名稱是'wpcf7_form_action_url'。這意味着您只需要調用add_filter,將'hook_name'設置爲'wpcf7_form_action_url',然後將'your_filter'設置爲您將設置爲回調函數的名稱。

完成之後,您只需定義一個名稱與您替代'your_filter'的名稱匹配的函數,並確保它返回一個URL以修改表單操作。

現在問題來了:這將改變你的所有表單。但第一件事是第一件事:看你是否可以自己做一些有效的代碼。只需在functions.php中編寫代碼,並讓我們知道它的結果。

UPDATE:

,你能這麼快得到它事實上是美好的,並顯示出你正在投入這項研究工作的量。

把所有這一切都在的functions.php

add_filter('wpcf7_form_action_url', 'wpcf7_custom_form_action_url'); 
function wpcf7_custom_form_action_url() 
{ 
    return 'wheretopost.asp'; 
} 

正如前面提到的,這將影響您的所有形式。如果這個情況應該只是一個影響給定頁面上的表單,你可以做這樣的事情:

add_filter('wpcf7_form_action_url', 'wpcf7_custom_form_action_url'); 
function wpcf7_custom_form_action_url($url) 
{ 
    global $post; 
    $id_to_change = 1; 
    if($post->ID === $id_to_change) 
     return 'wheretopost.asp'; 
    else 
     return $url; 
} 

所有你需要做的是$ id_to_change值更改爲一個數字,它代表的標識您試圖影響的Post/Page。因此,如果 - 例如 - 您有一個關於頁面,您想要更改操作URL,則可以在管理控制檯中找到關於頁面的ID號(只需轉到頁面編輯器並在您的URL中查找該ID號碼),並將1改爲任何ID號碼。

希望這可以幫助你,並祝你好運。

+0

我故意沒有立即給你完整的答案。你需要通讀這一點,拿出正確的add_filter調用和你自己的回調函數。一旦你這樣做,我們可以引導你通過更多。所有的作品都在你身邊。 – maiorano84

+0

maiorano84,非常感謝回覆。是的,我確實得到了add_filter('wpcf7_form_action_url','formname');但你的解釋澄清了邏輯。如何「確保它返回一個URL來修改表單動作」是我完全失去的地方。如果這是在CF7/WP之外,我只是在html中編寫

,但不知道PHP的版本是什麼?再次,我對我缺乏理解表示歉意。謝謝。 – user1102824

+1

好吧,我會再看看它,因爲我覺得我手裏拿着這些東西,完全失明。非常感謝。 – user1102824

0

可以成功提交,如documentation says

添加過濾器會在這個意義上的工作,它會改變窗體上的操作後添加操作但不幸的是它也將打破插件的功能。如果您像其他答案一樣添加過濾器,建議表單在提交後會保持微調狀態。

可以使表單做別的事情上,使用先進的設置,如提交:

on_submit: "alert('submit');" 

更多關於高級設置here細節。