Antes de continuar, debes ver los siguientes artículos:
1. Formulario de contacto WordPress,
2. Verificación de formulario con reCAPTCHA,
Para enviar formulario por correo debemos configurar primero, SMTP (Para no hacer doble trabajo, esto lo haremos después de la migración, en el servidor del cliente)
Luego modificamos el archivo receive-contact.php para incluir la función de envío de correo de wodpress wp_mail().
Cuando se haga la configuración final del SMTP y si el código está bien, cada que se envíe un formulario, le llegará al correo del cliente los datos del formulario.
Archivos Usados
1.
receive-contact.php
PHP
wp-content/themes/depura_theme/functions/posts/
Setting
receive-contact.php
PHP
wp-content/themes/depura_theme/functions/posts/
Setting
Importante resaltar que la variable $adminmail debe guardar el correo al cual queremos que llegue la información cuando se envíe el formulario.
<?php
add_action('admin_post_nopriv_process_form_contact', 'receive_contact');
add_action('admin_post_process_form_contact', 'receive_contact');
function receive_contact()
{
//variables
$id_form = '#frm-contact';
$uri = sanitize_url( $_POST['uri'] );
$name = sanitize_text_field($_POST['name']);
$email = sanitize_email($_POST['email']);
$interest = sanitize_text_field($_POST['interest']);
$interest_term = get_term_by('slug', $interest, 'interest', 'post_contact');
$message = sanitize_text_field($_POST['message']);
//Cuerpo del mensaje
$msg = "Tema de Interés: " . $interest_term->name . "\n";
$msg .= "Nombre: " . $name . "\n";
$msg .= "Correo: " . $email . "\n";
$msg .= $message;
//Envío de correo
$adminmail = "info@hidrotecno.com.mx"; //email destino
$subject = $interest_term->name; //asunto
$headers = "Reply-to: " . $name . " <" . $email . ">";
$recaptcha = custom_recaptcha_verification($uri, $id_form);
//Guardar el post en DB
if ($recaptcha){
$post_id = wp_insert_post([
'post_title' => 'Mensaje de ' . $name,
'post_type' => 'post_contact',
'post_content' => $msg,
'post_status' => 'private',
]);
wp_set_object_terms($post_id, $interest, 'interest', false);
wp_mail( $adminmail, $subject, $msg, $headers);
}
}