Gravity Forms y Mailpoet son dos de mis plugins favoritos para hacer cada uno su trabajo. Y es muy habitual que en una misma web haya formularios de uno de ellos y del otro.

Normalmente el formulario de suscripción genérico de la web lo implementamos mediante los formularios de MailPoet y el formulario de contacto mediante Gravity Forms.

¿Y qué ocurre si en el mismo formulario de contacto añadimos una posibilidad de suscribirse a las novedades? Ahí es donde entra el código que vamos a detallar a continuación.

Para implementar este código vamos a necesitar tener instalado el plugin Code Snippets o trabajar sobre el fichero functions.php. Os aconsejo claramente lo primero.

También tenemos que identificar el número del formulario Gravity Forms:

Inicialmente, tenemos que identificar los números de los campos del formulario Gravity Forms que vamos a conectar con MailPoet. En mi caso, suelen ser los siguientes dos campos:

  • Correo electrónico
  • Nombre

Y finalmente, tenemos que identificar el número de la lista de MailPoet de la siguiente manera:

Y por último, hay un campo muy importante, para cumplir con la normativa: la aceptación de ser miembro de la lista. Para ello añadimos un control de tipo «Casillas» de Gravity Forms con una única casilla, de esta forma:

El campo Aceptación, tendrá como código «4.1» ya que la casilla es la primera de una lista.

Código PHP para enviar contactos desde Gravity Forms a MailPoet

A continuación veremos el código, teniendo en cuenta que tenemos los siguientes identificadores:

  • Identificador del formulario Gravity Forms: 2
  • Identificador de la lista MailPoet: 3
  • Identificador del campo Nombre: 7
  • Identificador del campo Email: 3
  • Campo de aceptación: «4.1»
add_action('gform_after_submission', 'suscribir_a_mailpoet', 10, 2);
function suscribir_a_mailpoet($entry, $form)
{
    $formulario_id_deseado = 2;
	
    if ($form['id'] != $formulario_id_deseado) return;
    
    $casilla_suscripcion_id = "4.1";
    $quiere_suscribirse = rgar($entry, $casilla_suscripcion_id);
  
  	//El número del campo nombre
  	$campo_nombre = 7;
  	$nombre = rgar($entry, $campo_nombre);
  	
  
    // Verifica si la casilla de suscripción está marcada
    if ($quiere_suscribirse) 
	{
	  	
        // Asegúrate de reemplazar 'Z' con el ID del campo de correo electrónico en tu formulario
        $correo_electronico_id = 3;
        $correo_electronico = rgar($entry, $correo_electronico_id);
	  
        if (!empty($correo_electronico))
		{
            $lista_id = 3;
			$list_ids = array($lista_id);
          
		  	//El cf_1 es un customfield añadido en el formulario de suscripción de Mailpoet con la aceptación.
		  
		  	$subscriber_data = array(
                'email' => $correo_electronico,
                // Agrega el usuario a la lista especificada
			  	'first_name' => $nombre,
                // Puedes añadir más campos aquí si lo necesitas
                //'cf_1' => true,
            );
		  
            try
			{
                $subscriber = \MailPoet\API\API::MP('v1')->addSubscriber($subscriber_data,$list_ids);
                // Suscripción exitosa, puedes hacer algo aquí si lo necesitas
            }
		  catch (Exception $e)
			{
                // Manejo de error
			  	error_log('Error al suscribir a MailPoet: ' . $e->getMessage());
			  	
            }
        }
    }
}

En el código podréis ver esta parte:

$subscriber_data = array(
    'email' => $correo_electronico,
    // Agrega el usuario a la lista especificada
    'first_name' => $nombre,
    // Puedes añadir más campos aquí si lo necesitas
    //'cf_1' => true,
);

Donde hay un campo comentado llamado cf_1. Ese campo significa que podemos crear campos personalizados en MailPoet y la forma de identificarlos es mediante cf_1, cf_2, …

En el siguiente enlace se puede consultar más información, en el API de MailPoet.

Quizá te interese...
Deja un comentario...
Suscribirme
Notificación de
guest
0 Comentarios
Comentarios en línea
Ver todos los comentarios