Proposer l’inscription à la newsletter Wysija (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.

17 commentaires

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

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

  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

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

Laisser un commentaire

Thèmes & Plugins
Premium By WP Channel

WP Alacarte propose des produits et services de qualité
made in France pour la plateforme WordPress.

Tout est prêt pour créer votre site à la carte !

  • Thèmes et extensions premium
  • Facilité d’utilisation garantie
  • Temps de chargement optimisé
  • Personnalisation avancée
Découvrir

Rejoignez la communauté WordPress !

Faites partie de l’aventure en devenant membre d’une association WordPress. Conférences, ateliers, BarCamp, WordCamp… Venez
partager votre passion pour WordPress !

Aurélien DENIS,
président des associations WordPress Francophone et WPMX