Formas gratuitas de automatizar el envío de correos de invitación de Discourse con WordPress (y otras plataformas)

Continuando la discusión de Automatizar el envío de correos de invitación de Discourse con Zapier:

En mi camino para alcanzar mis objetivos, encontré este tema. ¡Qué genial! Pero Zapier no es gratis, al final :frowning:, así que creé estos dos fragmentos, espero que sean útiles para alguien. Colócalos en el archivo functions.php de tu tema.

Y si tienes algún código útil similar, ¡dímelo :smiley:! Quiero aprender más sobre la API de Discourse y formas gratuitas de conectarla con WordPress simplemente programando ^^!

Enviar invitación a Discourse después de que un usuario envíe un comentario (estado pendiente)

function invite_forum_from_comment($comment_ID) {
 $comment = get_comment( $comment_ID );
 $comment_email = get_comment_author_email($comment);
 $maybe_notify = ( '0' == $comment->comment_approved );
 if ( $maybe_notify ) {
  // invitar usuario 
  wp_remote_post( 'https://forum.tudominio.com/invites', array(
      'method' => 'POST',
      'headers' => array('Content-Type' => 'multipart/form-data', 
                         'Api-key' => 'tuapikey',
                         'Api-Username' => 'tuusuario'),
                          'body' => array('email' => $comment_email,
  'custom_message' => '¡Gracias por tu comentario! Mientras esperas la moderación, ¿por qué no unirte a nuestro foro?!')
            )
      );  
     };
    }
    add_action('comment_post', 'invite_forum_from_comment');

Invitar al usuario a Discourse después de realizar un pedido en WooCommerce

  function invite_forum_from_order( $order_id ) {
          // obtener todos los datos del pedido
          $order = new WC_Order($order_id);
          // obtener el correo del usuario desde el pedido
          $order_email = $order->billing_email;   
          // invitar usuario 
          wp_remote_post( 'https://forum.tudominio.com/invites', array(
              'method' => 'POST',
              'headers' => array('Content-Type' => 'multipart/form-data', 
                                 'Api-key' => 'tuapikey',
                                 'Api-Username' => 'tuusuario'),
              'body' => array('email' => $order_email,
  'custom_message' => '¡Gracias por tu pedido! ¿Por qué perder el tiempo esperando? ¡Únete a nuestro foro!')
                    )
              );  
          
        }
 // añade esta función recién creada a la página de agradecimiento
  add_action( 'woocommerce_thankyou', 'invite_forum_from_order', 10, 1 );

Actualización: Este código invitará solo a comentarios aprobados para evitar invitar a spammers.

function invite_forum_from_approved_comment($comment_ID) {
 $comment = get_comment( $comment_ID );
 $comment_email = get_comment_author_email($comment);
 $maybe_notify = ( '1' == $comment->comment_approved );
 if ( $maybe_notify ) {
  // invitar usuario 
  wp_remote_post( 'https://forum.fususu.com/invites', array(
      'method' => 'POST',
      'headers' => array('Content-Type' => 'multipart/form-data', 
                         'Api-key' => 'xxxxxxxxxxxxxxxxxxxx',
                         'Api-Username' => 'xxxx'),
      'body' => array('email' => $comment_email, 
                     'custom_message' => 'Gracias. Tu comentario ha sido aprobado y has ganado una invitación para unirte a mi foro.')
        )
  );  
 };
}
add_action('comment_unapproved_to_approved', 'invite_forum_from_approved_comment');

Y mientras invitaba a mis contactos en un sistema Mautic al foro, descubrí que Mautic ya tenía una función de webhook muy buena que podía enviar un POST a Discourse :D, ^^! Solo hay que crear una acción dentro de una campaña, ¡y listo! No se necesita código :smiley:



Le doy mis disculpas a Zapier, son buenos, pero me gusta más una solución gratuita sin limitaciones :blush: