2017-09-29 3 views
0

Sur notre communauté, nous voulons envoyer des e-mails de suivi x jours après l'inscription, comme un tutoriel pour l'utilisation de notre plate-forme. Par exemple, 1 jour après l'inscription, nous vous apprenons à faire quelque chose, le jour 3 nous vous envoyons un autre courriel expliquant autre chose ... afin que nous puissions avoir un suivi avec les gens, afin qu'ils ne se sentent pas abandonner sur la communauté.Comment envoyer des emails dans wordpress x jours après l'inscription

J'ai cherché des plugins capables de faire cela sans succès.

Donc je suis allé dans la partie codage et voir si je peux le faire d'une manière ou d'une autre. Avec un CronJob, et un script personnalisé en dehors de Wordpress, bien sûr, je peux faire, mais ce n'est pas une solution sophistiquée quand la plate-forme doit être gérée par des personnes sans connaissances en codage. Je cherchais quelque chose où vous pouvez ajouter les courriels comme sur la section par défaut de Wordpress.

Je sais que je devrais poster quelques choses que j'ai essayées, mais malheureusement je n'ai rien trouvé ou aucune solution capable de faire ceci.

Nous utilisons Wordpress + Buddypress + Learndash.

Répondre

0

Eh bien, nous ne suggérons généralement pas de plugin ici. Pour ce genre de suggestions s'il vous plaît aller pour le site Software Recommendations, ils ont un WordPress tag. Comme pour une recommandation avec ce WordPress tag.

Maintenant venu à la solution de concept de codage comment nous pouvons gérer l'envoi de courrier après un certain laps de temps. Ici, je peux vous suggérer une Way-

function the_dramatist_handle_scheduled_mail($arg_1 = '', $arg_2 = []) { 
    wp_schedule_single_event(
     // Here time() is the time when this is firing and 259200s = 72h = 3d 
     time() + 259200, 
     // Declaring a hook at this point. You can hook any function to this point which you want to fire after three days of any base event. 
     'the_dramatist_send_email_after_three_days', 
     // You can add number of arguments to the hook also. 
     [ $arg_1, $arg_2 ] 
    ); 
    return true; 

} 

maintenant à ce crochet the_dramatist_send_email_after_three_days vous ajoutez une fonction comme ci-dessous pour envoyer le Email-

add_action('the_dramatist_send_email_after_three_days', 'the_dramatist_send_email_after_three_days_function', 10, 2); 

function the_dramatist_send_email_after_three_days_function($arg_1, $args_2) { 

    $to = '[email protected]'; 
    $user = get_user_by('email', $to); 
    if (1 === get_user_meta($user->ID, 'after_three_days_email', true)) { 
     return false; 
    } 

    $subject = 'The subject'; 
    $body = 'The email body content'; 
    $headers = array('Content-Type: text/html; charset=UTF-8'); 

    $mail_sent = wp_mail($to, $subject, $body, $headers); 
    // After sending the email to every person I prefer to put a record. 
    if ($mail_sent) { 
     update_user_meta($user->ID, 'after_three_days_email', 1); 

     return true; 
    } 
} 

maintenant après votre événement de base que vous appelez simplement le the_dramatist_handle_scheduled_mail() avec des arguments . De cette façon, vous pouvez gérer les événements planifiés dans WordPress par wp_schedule_single_event() fonction.

Espérons que cette réponse ci-dessus vous aide.

0

Je recommande d'étendre le profil de l'utilisateur en ajoutant un champ avec le jour d'expiration. Par exemple, l'exemple suivant utilise le champ _profile_extend_expires. Ensuite, vous pouvez utiliser le filtre meta_query pour vérifier le jour d'expiration.

Cordialement, Ed.

function member_expires_one_day() { 
 

 
    $date_today = today_date(); 
 

 
    $date_to_expire = new DateTime($date_today); 
 
    $date_to_expire->add(new DateInterval('P1D')); 
 
    $expires = $date_to_expire->format('Y-m-d'); 
 

 
    $args = array(
 
     'meta_query' => array(
 
        array(
 
         'key' =>  '_profile_extend_expires', 
 
         'value' => $expires, 
 
         'compare' => '==' 
 
        ), 
 
     ) 
 
    ); 
 

 
    $users = get_users($args); 
 

 
}