Бесплатные способы автоматизации отправки приглашений на Discourse через WordPress (и другие платформы)

Продолжаем обсуждение из темы Автоматизация отправки приглашений в Discourse через Zapier:

По пути к своей цели я наткнулся на эту тему. Это здорово, но Zapier, увы, не бесплатен :frowning:, поэтому я написал эти два скрипта. Надеюсь, они кому-то пригодятся. Добавьте их в файл functions.php вашей темы.

Если у вас есть подобные полезные коды, поделитесь со мной :smiley:! Я хочу больше узнать о API Discourse и о том, как бесплатно подключать его к WordPress с помощью кода ^^!

Отправка приглашения в Discourse после публикации комментария (статус «на проверке»)

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 ) {
  // отправить приглашение пользователю 
  wp_remote_post( 'https://forum.yourdomain.com/invites', array(
      'method' => 'POST',
      'headers' => array('Content-Type' => 'multipart/form-data', 
                         'Api-key' => 'yourapikey',
                         'Api-Username' => 'yourusername'),
                          'body' => array('email' => $comment_email,
  'custom_message' => 'Спасибо за комментарий! Пока ваша модерация идёт, почему бы не присоединиться к нашему форуму?!')
            )
      );  
     };
    }
    add_action('comment_post', 'invite_forum_from_comment');

Приглашение пользователя в Discourse после оформления заказа в WooCommerce

  function invite_forum_from_order( $order_id ) {
          // получить все данные заказа
          $order = new WC_Order($order_id);
          // получить email пользователя из заказа
          $order_email = $order->billing_email;   
          // отправить приглашение пользователю 
          wp_remote_post( 'https://forum.yourdomain.com/invites', array(
              'method' => 'POST',
              'headers' => array('Content-Type' => 'multipart/form-data', 
                                 'Api-key' => 'yourapikey',
                                 'Api-Username' => 'yourusername'),
              'body' => array('email' => $order_email,
  'custom_message' => 'Спасибо за ваш заказ! Зачем тратить время на ожидание? Просто присоединяйтесь к нашему форуму!')
                    )
              );  
          
        }
 // добавьте эту новую функцию на страницу «Спасибо за заказ»
  add_action( 'woocommerce_thankyou', 'invite_forum_from_order', 10, 1 );

Обновление: Этот код будет приглашать только одобренные комментарии, чтобы избежать приглашения спамеров.

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 ) {
  // пригласить пользователя
  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' => 'Спасибо. Ваш комментарий одобрен, и вы получили приглашение присоединиться к моему форуму.')
        )
  );  
 };
}
add_action('comment_unapproved_to_approved', 'invite_forum_from_approved_comment');

И пока я приглашал своих контактов из системы Mautic на форум, обнаружил, что в Mautic уже есть отличная функция вебхуков, способная отправлять POST-запросы в Discourse :D, ^^! Просто создайте действие в рамках кампании — и всё готово! Никакого кода не требуется :smiley:



Мне немного жаль Zapier — они хороши, но я предпочитаю бесплатные решения без ограничений :blush: