Proposer l’inscription à la newsletter MailPoet sur la page de commande de WooCommerce

16 commentaires
Proposer l’inscription à la newsletter MailPoet sur la page de commande de WooCommerce

Si vous utilisez une boutique en ligne WooCommerce sur votre WordPress, et que vous souhaitez envoyer une newsletter à vos clients via MailPoet (anciennement Wysija), il peut être intéressant de pouvoir demander directement à l’internaute depuis la page de commande, s’il souhaite s’inscrire ou non à votre newsletter.

Étape 1 – Créer une liste d’abonné

Aller dans Wysija, créer une nouvelle liste d’abonné. Pour se faire, connectez-vous à votre administration WordPress et rendez-vous dans dans Wysija puis Abonnés.

Cliquez ensuite sur le bouton en haut Ajouter une liste, saisissez le nom de votre nouvelle liste et validez en cliquant sur le bouton bleu Ajouter une liste.

Étape 2 – Repérer l’ID de votre liste

Toujours, dans Wysija, cliquez sur Abonnés puis sur le bouton bleu en haut Modifier les listes. Dans la nouvelle page qui apparaît, survolez le nom de la liste que vous souhaitez utiliser. En bas et à gauche de votre écran apparaît une URL.

Il vous suffit enfin d’identifier le chiffre situé après &id= pour connaître l’ID de votre liste, dans mon cas, l’ID est 4.

Étape 3 – Ajouter une fonction dans votre fichier functions.php

Copiez le code ci-dessous et ajoutez le au fichier functions.php de votre thème.

function mgris_subscription_checkbox() {
// changer cette variable en fonction de l'id de votre liste
$nl_list_id = 4;

if(!is_user_logged_in()) {
echo '<p>';
_e('<span>Recevez toute l\'année les offres promotionnelles en vous inscrivant à notre newsletter</span><br />','textdomain');
_e('<label for="subscription-box">S\'inscrire à notre newsletter</label>', 'textdomain');
echo '<input id="subscription-box" type="checkbox"name="subscribe_newsletter" value="'.$nl_list_id.'" />';
echo '</p>';
}
}

add_action('woocommerce_checkout_after_customer_details', 'mgris_subscription_checkbox');

function mgris_subscription_newsletter_checkout() {
// changer cette variable en fonction de l'id de votre liste
$listID = array(4);

$subscrib = $_POST['subscribe_newsletter'] ;
$email = $_POST['billing_email'];

if(!empty($subscrib) && !empty($email)) {
$userData=array(
'email' => $email,
'firstname' => $_POST['billing_first_name'],
'lastname' => $_POST['billing_last_name']
);

$data=array(
'user' => $userData,
'user_list' => array( 'list_ids'=> $listID )
);

$userHelper=&WYSIJA::get('user','helper');
$userHelper->addSubscriber($data);
}
}

add_action('init','mgris_subscription_newsletter_checkout');

Modifiez les deux variables $nb_list_id (situé à la 3ième ligne) et $listID (situé à la ligne 18) par l’ID de votre liste. Pour rappel, dans mon cas l’ID est 4.

Concrètement, ce code va ajouter une phrase – que vous pouvez aisément modifier ligne 7 de ce code, avec une case à cocher dans la page Commander.  Lorsque cette case est cochée, l’internaute sera enregistré dans votre liste d’abonné Wysija.

N.B : si vous avez activez la création de compte lors du passage d’une commande, la fonction que vous venez d’ajouter est pensée pour ne s’afficher que lorsque l’internaute n’est pas connecté. Cela permet de proposer à votre client de s’inscrire qu’une seule fois (et non à chaque commande…).

Ci-dessous, un exemple du résultat final sur la page de commande.

resultat

Attention : si vous êtes connecté avec votre compte administrateur, la case à cocher ne s’affichera pas si vous essayez de passer une commande.

Par Mickaël Gris

Mickaël est un « Digital Native » converti à WordPress. Il travaille en agence où il intervient comme développeur/intégrateur Web. En 2013, avec Aurélien Denis, ils fondent l'association WordPress Meet & eXchange afin de fédérer les utilisateurs passionnés de cette fabuleuse technologie qu'est WordPress.

16 commentaires
  1. sanvean17

    Merci 🙂

  2. sanvean17

    Bonsoir, tout d’abord merci pour ce tuto! Est il possible de rajouter quelques lignes de codes pour pouvoir obtenir un résultat similaire à votre exemple (l’encadrement rouge et la couleur de la police) ?

    1. Mickaël Gris auteur de l’article

      Bonjour !

      Merci pour ce retour 🙂 .
      Oui bien entendu vous pouvez personnaliser ce cadre comme bon vous semble. Dans la fonction “mgris_subscription_checkbox()”, ajouter une classe sur la balise P et ensuite, il vous suffit d’appliquer la mise en forme de votre choix dans le fichier style.css de votre thème.

      Un exemple rapide : modification de la fonction “mgris_subscription_checkbox()” :
      Après le if(!is_user_logged_in()), rajouter une class sur la balise P (p class=’subscribe-newsletter’ dans cet exemple).

      Et enfin, dans votre fichier style.css, ajouter le code ci-dessous à la toute fin :
      p.subscribe-newsletter {
      background-color: #BD0926;
      border-radius: 5px;
      color: #fff;
      padding: 10px;
      }

      p.subscribe-newsletter span {
      color: #E1B903;
      display: block;
      font-weight: bold;
      }

  3. boulgourculture

    Bonsoir, vous pensez que c’est possible de faire la même chose mais avec les commentaires ?

    Je m’explique : pour commenter sur mon blog il faut entrer nom et email et donc je voudrais y ajouter une checkbox pour proposer de souscrire à ma newsletter. Je pense bien que c’est possible avec votre script, mais alors mes compétences en php me limite fortement pour l’adapter…

    Merci

    Bonne soirée,

    boulgourculture

    1. Aurélien Denis

      C’est une option disponible de base dans le plugin MailPoet.

      1. boulgourculture

        Ah oui exact, désolé pour cette question inutile 🙂

        Merci !

  4. jeanletulzo

    Autre symptôme, le nombre de tables sur phpmyadmin passe de 11 à 26. Est ce normal?

    Merci Aurélien et bon weekend 😉

    1. Aurélien Denis

      Très bizarre ta situation… tu dois avoir des soucis ailleurs. Difficile à dire là.

  5. jeanletulzo

    Merci pour cette réponse Aurélien,

    J’ai suivi ce conseil et opéré une réinitialisation de mon wordpress en local, en suivant ton tuto d’ailleurs (au passage, parfait la technique du WordPress reset).

    J’ai donc ensuite réinstallé mailpoet. Mais la c’est encore pire : je me fais déconnecter de wordpress et un message sur mozylla :

    La connexion a été réinitialisée

    La connexion avec le serveur a été réinitialisée pendant le chargement de la page.

    Le site est peut-être temporairement indisponible ou surchargé. Réessayez plus tard ;
    Si vous n’arrivez à naviguer sur aucun site, vérifiez la connexion au réseau de votre ordinateur ;
    Si votre ordinateur ou votre réseau est protégé par un pare-feu ou un proxy, assurez-vous que Firefox est autorisé à accéder au Web.

    Je remarque qu’en local il ne réagit pas pareil qu’en ligne….

    Par avance merci Aurélien !

  6. jeanletulzo

    Bonjour,

    J’ai installé Mailpoet sur mon blog et l’onglet “réglage” de mailpoet bug énormément.
    Il affiche sur plusieurs lignes :

    WordPress database error: [Table ‘lesitedevmod1.wp_wysija_user’ doesn’t exist]
    SELECT user_id FROM `wp_wysija_user` WHERE keyuser=”2cae438fe1073cc333fed7c74e5f6410″

    Avez vous un avis sur ce problème? Je ne vois pas comment régler ce problème…

    Par avance merci beaucoup pour votre aide!!

    1. Aurélien Denis

      WordPress est-il à jour ? Si oui, tentez une réinstallation car ce n’est pas normal.

  7. guillaume

    Super info! Merci! J’ai deux listes, je souhaite pouvoir donner le choix en proposant deux cases à cocher… c’est possible j’imagine?

  8. Stev Plon

    Merci, je garde le tuto en favoris, utile pour mes clients

  9. Kim

    Cool de voir des hacks!

    À noter qu’on va sortir une demi douzaines de add-ons gratuits en début 2014, dont celui-ci pour WooCommerce.

    1. Aurélien Denis

      Vas-y fais nous rêver ! #teasing

  10. tab-ukulele

    Merci, je garde le tuto en favoris, utile pour mes clients.

    Ukutchuss

Laisser un commentaire