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.

Vous recherchez un développeur WordPress capable de vous créer un thème sur-mesure ? C'est mon métier depuis plus de 8 ans, prenez contact et discutons de votre projet.

É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.

17 commentaires
  1. tab-ukulele

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

    Ukutchuss

  2. 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.

  3. Stev Plon

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

  4. guillaume

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

  5. 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.

  6. 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 !

  7. 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à.

  8. 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 !

  9. 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;
      }

Les commentaires sont fermés.