monopoly-e-commerce

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.

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.

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');

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.

10 commentaires

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

Laisser un commentaire