Author : Jhon
Publicado : 23 junio, 2019
La función wp_mail() de wordpress nos permite enviar los correos con los datos que recogemos de los formularios pero esto nos dará problemas si no sabemos como configurar bien los datos que pasamos a esta función.
Ademas debemos tener en cuenta el orden en el que ponemos los parámetros que le pasamos a esta función pues esta es la parte más importante, pues de ello dependerá que nuestro correo funcione correctamente o no..
iré directamente al grano así que que empezare desde donde recogemos los datos del formulario.
Recogemos los datos del formulario.
$name = nombre del usuario que recogemos del formulario.
$email = email del usuario que recogemos del formulario.
$message = mensaje que recogemos del formulario.
Creamos la estructura de parámetros que pasaremos a la función wp_mail(),
parámetros :
$to
$subject
$message
$headers
$to
Este sera el mail de nuestra empresa o marca.,Podemos configurarlo de dos maneras :
$to = get_option(‘admin_email’);
$to = array(‘micorreo@gmail.com’, ‘micorreo2@gmail.com);
con esta segunda opción podremos poner mas de un correo.
$subject
Aqui pondremos el asunto del mensaje
$message
Esta variable recogerá la información del mensaje.
$headers
Los headers o encabezados corresponden a elementos adicionales de un mensaje de correo como puede ser «DE:», «Cc» o «CCO» para especificar de donde procede el mail y si se desea enviar con copia o copia oculta.
//$headers From llevara el nombre del que envia el mensaje + el correo
$headers[]= ‘From: «‘ . $name . ‘» < ‘ . $email . ‘ >’;
//Cc es a donde queremos enviar la copia del correo
$headers[]= «Cc: Persona1 <persona1@gmail.com>»;
//El Bcc es un destinatario en copia oculta
$headers[]= «Bcc: Persona2 <persona2@wordpress.org>»;
Ahora ya podremos utilizar la función wp_mail();
wp_mail( $to, $subject, $message, $headers );
Por ultimo aquí dejo el código de la función
public function atr_save_form_contactme(){
/**
* esta funcion almacena en la BBDD los datos delm formulario contactme
*/
global $wpdb;
if (isset($_POST[‘enviar’]) ):
if( $_POST[‘name’]==null && $_POST[‘email’]==null && $_POST[‘message’]==null ):
//echo $message;
elseif( $_POST[‘name’]!=null && $_POST[‘email’]!=null && $_POST[‘message’]!=null && $_POST[‘oculto’] == «1» ):
$name = sanitize_text_field( $_POST[‘name’] );
$email = sanitize_text_field( $_POST[‘email’] );
$message = sanitize_text_field( $_POST[‘message’] );
//Paso 1 : Tabla
$tabla = $wpdb->prefix . ‘contactme’;
//Paso 2 : Datos
//aqui pondremos el nombre de las columnas y los datos a insertar
$datos = array(
‘nombre’ => $name,
‘correo’ => $email,
‘mensaje’ => $message
);
//Paso 3 : Formato s=string, d=para numeros f=flotante, numeros con decimales por ejempo(3.50, 0.0003, etc)
$formato =array(
‘%s’,
‘%s’,
‘%s’
);
//Paso 4 : realizamos la consulta
$wpdb->insert( $tabla, $datos, $formato );
//Paso 5 envio de correo, aqui utilizaremos la funcion wp_mail();
// $to = array(‘info@newtheme.eu’);
$to = get_option(‘admin_email’);
//subject, aqui va el asunto del mensaje
$subject = ‘Consulta NewTheme’;
//message, aqui ira todo el contenido del mensaje que se envia
//Crearemos un mensaje personalizado html
$message = «
<table class=’tabla-email’ width=’100%’>
<tr>
<th></th>
<th><img src=’https://newtheme.eu/wp-content/uploads/2018/11/logo.png’ alt=’Logo New theme’></th>
<th></th>
</tr>
<tr>
<td colspan=’3′><p style=’color: brown; font-family: sans-serif; font-size: 18px ‘>'» . $message . «‘</p></td>
</tr>
</table>
«;
//$message = $message;
//attachments: (string|array) (Optional) estos son los archivos adjuntos en el caso de que deseemos enviarlos también.
//$attachments = array (‘WP_CONTENT_DIR.’/uploads/archivo.png’);
//headers, los headers o encabezados corresponden a elementos adicionales de un mensaje de correo como puede ser
//“DE:” , “C.C:”, “CCO:” para especificar de donde procede el email, si se desea enviar con copia o copia oculta.
//$headers = $email;
//$headers From llevara el nombre del que envia el mensaje + el correo
$headers[]= ‘From: «‘ . $name . ‘» < ‘ . $email . ‘ >’;
//Cc es a donde queremos enviar la copia del correo
$headers[]= «Cc: Jhon Jairo <jhonja14795@gmail.com>»;
//El Bcc es un destinatario en copia oculta
$headers[]= «Bcc: otro <persona2@wordpress.org>»;
//wp_mail( $to, $subject, $message, $headers, $attachments );
wp_mail( $to, $subject, $message, $headers );
//Paso 6 :
// redireccionamos, crearemos una pagina nueva en el cpanel, la llamaremos(message);
$url = get_page_by_title(‘message’);
$location = get_permalink($url->ID);
//wp_safe_redirect( $location, $status ); esta funcion siempre va acompañada de un exit();
wp_redirect($location);
exit();
endif;
endif;
}
Deja una respuesta