2017-10-13 96 views
0

我想從我們的Contact7表單中發佈數據,然後將該數據保存在mysql表中。我對WordPress很新。我遵循其他人的代碼。但是我沒有運氣來接收我的表格中的數據。我覺得add_action-wpcf7_before_send_mail不能掛鉤我的函數,因爲我在函數內部寫了錯誤的拼寫或錯過的代碼來測試它是否工作。但是當我從wordpress表單提交數據時沒有錯誤。以下是我的代碼,請評論任何可能有用的信息。謝謝!add_action('wpcf7_before_send_mail')不會調用/掛接我的函數

add_action('wpcf7_before_send_mail','contactform7_before_send_mail',1); 

function contactform7_before_send_mail($contact_form) {  
    $wpcf7_data->skip_mail = true; 
    global $wpdb; 
    $title = $contact_form->title(); 

    $submission = WPCF7_Submission::get_instance(); 
    if ($submission) { 
    $formData = $submission->get_posted_data();  
    } 

    if ('Membership-2' == $title) { 
    $name = $formData['your-name'];  
    $email = $formData['your-email']; 
    $company = $formData['your-company']; 
    $title = $formData['your-title']; 
    $location = $formData['your-location']; 
    } 

    $wpdb->insert('aoe84i5nxf_member_info', array('id' => null,'name' => $name,'email' => $email,'company' => $company,'title' => $title, 'location' => $location), array(null,'%s','%s','%s','%s','%d')); 
} 
remove_all_filters ('wpcf7_before_send_mail'); 
+0

你在末尾有'remove_all_filters',它會刪除你添加到鉤子上的東西。爲了保存表單值,你嘗試過插件Flamingo嗎? https://wordpress.org/plugins/flamingo/ – mmm

+0

非常感謝你,是的,它現在可以工作! :) – Ange

回答

0

試試這個:

add_action('wpcf7_before_send_mail','contactform7_before_send_mail',1); 

function contactform7_before_send_mail($contact_form) {  

    if (!isset($contact_form->posted_data) && class_exists('WPCF7_Submission')) { 
     $submission = WPCF7_Submission::get_instance(); 
     if ($submission) { 
      $formData = $submission->get_posted_data();  
     } 
    } else { 
     // We can't retrieve the form data 
     return $contact_form; 
    } 

    if ('Membership-2' == $contact_form->title()) { 
     $contact_form->skip_mail = true; 

     $name = $formData['your-name'];  
     $email = $formData['your-email']; 
     $company = $formData['your-company']; 
     $title = $formData['your-title']; 
     $location = $formData['your-location']; 

     global $wpdb; 
     $wpdb->insert('aoe84i5nxf_member_info', array('id' => null,'name' => $name,'email' => $email,'company' => $company,'title' => $title, 'location' => $location), array(null,'%s','%s','%s','%s','%d')); 
    } 

    return $contact_form; 

} 

這使得你的代碼的一些變化:我們

  1. 檢查是否可以獲取表單提交數據。
  2. 更正一些表單數據對象變量名稱($ wpcf7_data)。
  3. 確保Skip_mail和數據庫插入僅發生在Membership-2表單提交中。
  4. 刪除remove_all_filters行 - 這隻會解開你的自定義函數,所以它永遠不會運行。