2017-10-13 29 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

これを試してみてください:我々はフォームの送信データを取得することができます

  1. かどうかをチェック:

    あなたのコードにいくつかの変更を行い
    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; 
    
    } 
    

  2. フォームデータオブジェクトの変数名($ wpcf7_data)の一部を修正します。
  3. skip_mailとデータベースの挿入がMembership-2フォームの送信に対してのみ行われるようにします。
  4. remove_all_filters行を削除します。これは単にカスタム関数をアンフックするため、決して実行されません。
関連する問題