2012-11-01 39 views
1

我有點麻煩在Wordpress的Contact Form 7插件中實現一些自定義功能。添加行動聯繫表格7提交w/PHP鉤子

我想要做的事很簡單。有問題的聯繫表是一個正常的聯繫查詢表,所以我需要保留常用功能(郵寄數據)。不過,我也有一個表格上的複選框,允許發件人選擇是否訂閱客戶的郵件列表以及郵寄聯繫人查詢。

客戶使用Bronto作爲羣發郵件(類似於CC或Mailchimp)。 Bronto有一個「直接添加」功能(more info here),允許您發送參數以通過嵌入url的圖像添加聯繫人到Bronto帳戶,其url包含必要的參數(電子郵件地址,訂閱列表等)。

我可以使用聯繫人窗體參數構造圖像url沒有問題,但實際上獲取發送的圖像請求是另一回事。我在PHP和JS這邊都不知所措,不確定要採取什麼措施。

目前我使用內置於CF7中的wpcf7_before_send_mail php鉤子,這似乎允許我收集表單數據並構建URL。然而,由於插件使用AJAX,並且實際上並沒有重定向到表單提交中的另一個頁面,所以似乎我無法成功使用任何類型的PHP輸出(echo,alert,甚至是error_log),大概是因爲服務器不知道什麼它應該寫信給。

在functions.php中:

add_action('wpcf7_before_send_mail', 'bronto_contact_add'); 
function bronto_contact_add($cf7) { 
    $emailcf = $cf7->posted_data['email']; 
    echo $emailcf; 
} 

這只是一個測試,看看是否呼應的作品 - 它沒有。相反,表單只是在提交時掛起,我會永遠看到旋轉的加載gif。

我需要做的是使用cf7對象的參數(我可以沒有問題)構建圖像url,然後以某種方式將該圖像請求發送到Bronto服務器(這是我感到困惑的部分)。如果這是一個正常的表單,在提交時重定向到另一個php頁面,我完全可以做到這一點,但它使用了我不太瞭解的AJAX,所以我現在很迷茫。

任何人都可以幫助揭示如何完成這個最好的方法嗎?

回答

2

我碰到你的線程,同時尋找類似的解決方案來解決與CF7相同的問題 - 嘗試將信息傳遞到我自己的數據庫後端CRM時提交掛起。

我沒有在網絡上的任何地方看到關於CF7集成的問題的答案,所以我想在這裏發佈我發現的問題以及它是如何修復的。我不是專業人士,但解決方案在測試中起作用,如果任何人有任何東西需要添加到這個解決方案,請致電

基本上,如果您使用的是Wordpress,假設您的數據庫表與您的Wordpress網站數據庫不在同一個數據庫中。然後你試圖做的是同時建立兩個數據庫連接,但是在連接到你的CRM時,參考ID將被重用於你的Wordpress數據庫。我發現這是測試期間提交掛起的根本原因。

我使用PHP 4仍然工作在PHP 5,的mysql_connect棄用的命令,:

mysql_connect('localhost', 'root', '', true); 

通過傳遞「真」作爲第四個參數,你都能夠保持連接從一個運行的不同爲您的WordPress的網站。這是否和CF7提交沒有掛起,它提交給CRM並同時發送出去作爲電子郵件,沒有問題。

請注意,如果您的CRM數據提交語法錯誤(即錯誤的變量等),它也會掛起。如果傳遞'true'不起作用,請首先檢查您的代碼以確保它是乾淨的。

如果有人讀到這個命令與'mysqli'命令有相同的解決方案,我很想知道它,我嘗試使用mysqli並且無法使它工作。

3

如果在您附加函數後提交掛起,至少您知道它有效果。我對聯繫表格7並不熟悉,但這可能不是回聲的適當位置,我的猜測是它掛起,因爲你正在寫入緩衝區,然後它試圖做一個重定向(檢查你的錯誤日誌)。如果你想看到的$cf7內容,更好的方式來做到這一點是:然後

// first option, using print_r() 
error_log(print_r($cf7, true)); 

// second option, using var_dump() if you need the additional output 
ob_start();     // start buffer capture 
var_dump($cf7);    // dump the values 
$contents = ob_get_contents(); // put the buffer into a variable 
ob_end_clean();    // end capture 
error_log($contents);   // log contents of $cf7 

$cf7變量的內容會在你的PHP錯誤日誌,它會告訴你如何訪問不同組件。

0

是否有某些原因讓你無法在表名稱前添加它們並將它們添加到同一個數據庫中?看來這將是一個更好的解決方案,並會與mysqli,而不是使用古老,不安全的司機罰款工作.....

我想,我只是沒有看到在這種情況下使用兩個數據庫的觀點。 ..我會嘗試使用一個。