How do I check if email submitted via Contact form 7 exists in my database?

后端 未结 2 1562
有刺的猬
有刺的猬 2021-01-07 01:53

When customer submits email via contact form 7, how do I check if email already exists in my database and change notification message to \"Your email already exists in our d

2条回答
  •  误落风尘
    2021-01-07 02:27

    Here is a solution that is working for me with the plugin Advanced Contact form 7 DB

    function email_already_in_db ( $result, $tags ) {
        // Retrieve the posted form
        $form  = WPCF7_Submission::get_instance();
        $form_posted_data = $form->get_posted_data();
    
        // Get the field name that we want to check for duplicates.
        // I added 'unique' to the beginning of the field name in CF7
        // Checking for that with preg_grep
        $unique_field_name = preg_grep("/unique(\w+)/", array_keys($form_posted_data));
    
        // $unique_field_name comes back as array so the next three lines give us the key as a string
        reset($unique_field_name);
        $first_key = key($unique_field_name);
        $unique_field_name = $unique_field_name[$first_key];
    
        // Check the form submission unique field vs what is already in the database
        $email = $form->get_posted_data($unique_field_name);
        global $wpdb;
        $entry = $wpdb->get_results( "SELECT * FROM wp_cf7_vdata_entry WHERE name LIKE '$unique_field_name' AND value='$email'" );
    
        // If already in database, invalidate
        if (!empty($entry)) {
          $result->invalidate($field_name, 'Your email: '.$email.' already exists in our database.');
          }
        // return the filtered value
      return $result;
    }
    

提交回复
热议问题