Permettre le paiement de certains produits sans créer de compte avec WooCommerce et LearnDash

Si vous utilisez WooCommerce pour vendre vos formations publiée avec LearnDash, il est fort possible que vous vendiez aussi d’autres produits que vos formations dans votre boutique. En utilisant WooCommerce comme moyen de paiement, LearnDash demande que vous obligiez la création d’un compte lors du paiement ou de l’inscription. C’est logique, car nous utilisons la page “mon-compte” de WooCommerce pour afficher la ou les formations achetées ou inscrites. Ainsi, au paiement, l’utilisateur se verra attribuer un compte avec son courriel et recevra un mot de passe par courriel. Tout va bien jusque-là !

Le problème d’avoir à se créer un compte pour acheter un produit

Si vous opérez une boutique avec WooCommerce, vous savez à quel point la moindre distraction au moment du paiement peut faire échouer une transaction. Donc, si dans votre boutique, vous vendez des produits physique ou virtuel en plus de vos formations, il y a de forte chance que l’étape de création d’un compte soit un irritant au moment de vouloir payer. Pire, si l’acheteur a déjà acheté dans votre boutique par le passé, il a été inscrit comme client et ne pourra pas terminer la transaction sans se connecter. La majorité des acheteurs sur internet souhaite faire l’achat de leur produit en mode invité ou du moins avoir l’option de se créer un compte s’il le désire.

Ajouter une option pour forcer la création d’un compte à un produit

Une solution simple à ce problème, est de permettre sur la fiche produit, de sélectionner si l’on désire forcer ou pas, la création d’un compte lors de l’achat d’un produit, ou bien d’une formation. Pour ajouter cette fonction à votre boutique WooCommerce, il suffit d’ajouter le code suivant à votre thème enfant ou par l’intermédiaire de l’extension Code Snippets.

/*--------------------------------------
Woocommerce - Disallow Guest Checkout on Certain products
----------------------------------------*/

// Display Guest Checkout Field
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_disable_gc_fields' );
function woo_add_disable_gc_fields() {
  global $woocommerce, $post;
  
  echo '<div class="options_group">';
  
  // Checkbox
  woocommerce_wp_checkbox( 
  array( 
	'id'            => '_disable_guest_checkout', 
	'label'         => __('Checkout', 'woocommerce' ), 
	'description'   => __('Disable Guest Checkout', 'woocommerce' ) 
	)
   );
  
  echo '</div>';
}

// Save Guest Checkout Field
add_action( 'woocommerce_process_product_meta', 'woo_add_disable_gc_fields_save' );
function woo_add_disable_gc_fields_save( $post_id ){
	$woocommerce_checkbox = isset( $_POST['_disable_guest_checkout'] ) ? 'yes' : 'no';
	update_post_meta( $post_id, '_disable_guest_checkout', $woocommerce_checkbox );
}

// Disable Guest Checkout on Certain products
add_filter( 'pre_option_woocommerce_enable_guest_checkout', 'disable_guest_checkout_based_on_product' );
function disable_guest_checkout_based_on_product( $value ) {

  if ( WC()->cart ) {
    $cart = WC()->cart->get_cart();
    foreach ( $cart as $item ) {
      if ( get_post_meta( $item['product_id'], '_disable_guest_checkout', true ) == 'yes' ) {
        $value = "no";
      } else {
        $value = "yes";
        break;
      }
    }
  }
  
  return $value;
}

Le code est disponible sur le répertoire GitHub, merci à Ted Barnett pour la fonction.

Une fois le code ajouté et activé à votre site web, vous aurez l’option d’enlever le mode invité pour l’achat ou l’inscription à une formation créée avec LearnDash.

Dernière étape, pensez à bien configurer WooCommerce pour permettre la création ou l’inscription d’un compte au paiement. Aller dans l’onglet paramètre et ajuster les options comme ci-dessous.

Avec cette fonction activée, il sera maintenant possible d’offrir des produits autre que vos formations sans la nécessité de créer un compte pour bénéficier d’un minimum de friction lors du paiement.

Autres trucs et astuces pour WordPress