WordPress Send Mail
1. Include [wp-form-settings.php] at the top of the page before any headers get sent to prevent 'headers/redirect errors'
2. Never use 'name' to capture names in a contact form (in WordPress).
<?php
global $wpdb;
if(isset($_POST['submit'])) {
$post_fields_array = array(
"full_name", // NOTE: never use 'name' for WP forms
"company",
"phone",
"email"
);
foreach( $post_fields_array as $post_field ) {
$$post_field = htmlspecialchars($_POST[$post_field]);
// validation for empty fields
if( !isset($_POST[$post_field]) || empty($_POST[$post_field]) ) {
$error = true;
}
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$error = true;
}
$table_name = "pages_submissions";
$table_array = array(
"form_url" => $_SERVER['REQUEST_URI'],
"ip_address" => $_SERVER['REMOTE_ADDR']
);
foreach( $post_fields_array as $post_field ) { // 'post_fields_array'
$table_array[$post_field] = $$post_field;
}
if (!$error) {
$success = $wpdb->insert($table_name, $table_array);
if ($success) {
$msg = "Your information has been submitted!";
$subject = "New submission from example.com";
$body =
"
Name: $full_name<br>
Company: $company<br>
Phone: $phone<br>
Email: $email<br>
";
$to = "rafaelp@bayardad.com";
// message
$message = "<html><head></head><body>$body</body></html>";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Additional headers
$headers .= "From: " . ucwords($full_name) . " <$email>" . "\r\n";
wp_mail($to, $subject, $message, $headers);
wp_redirect('http://example.com/thank-you.html');
exit();
} else {
$msg = "Error. Please try again.";
}
}
}
?>
<form id="wp-pages" action="" method="post">
<h5 class="item form-title">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor.
</h5>
<input class="item" type="text" name="full_name" placeholder="NAME" maxlength="40" required>
<input class="item" type="text" name="company" placeholder="COMPANY" maxlength="40" required>
<input class="item" type="phone" name="phone" placeholder="PHONE" maxlength="15" required>
<input class="item" type="email" name="email" placeholder="E-MAIL" maxlength="40" required>
<button name="submit" type="submit">
<span>Submit</span> <i class="fa fa-long-arrow-right"></i>
</button>
</form>