Le WordPress d'aujourd'hui, décodé pour les développeurs

E-commerce

Vendre des parts sociales d’une coopérative agricole, un plugin maison

Une coopérative agricole veut vendre des parts sociales en ligne avec un statut d'adhérent distinct du simple client : voici comment un plugin maison articule cela avec WooCommerce.

Par WordPress Développement • 22 février 2020 • 5 min de lecture • Aucun commentaire
Vendre des parts sociales d'une coopérative agricole, un plugin maison

Peut-on vendre une part sociale comme on vend un sac d’engrais ? Presque, mais pas tout à fait. Une coopérative agricole qui veut ouvrir la souscription de parts sociales en ligne se heurte vite à une différence de nature : l’acheteur d’une part sociale n’est pas un client ordinaire, c’est un sociétaire, avec des droits et des devoirs propres au statut coopératif. WooCommerce gère très bien le paiement ; le statut d’adhérent, lui, demande un petit plugin maison.

L’idée retenue ici tient en une phrase : laisser WooCommerce s’occuper de la commande et du paiement, et ajouter une couche fine de code qui transforme un achat validé en un changement de statut sur le compte utilisateur. Rien d’exotique, mais un enchaînement précis à respecter pour ne pas mélanger client et sociétaire.

Un produit WooCommerce comme n’importe quel autre

La part sociale devient un produit simple dans WooCommerce, avec un prix fixe correspondant à la valeur nominale d’une part, et une quantité modifiable pour permettre la souscription de plusieurs parts en une seule commande. Rien de spécifique à ce stade : formulaire de commande, paiement en ligne, facture, tout suit le circuit standard de la boutique.

La coopérative choisit de ne pas passer par un plugin de vente d’actions généraliste, jugé disproportionné pour son besoin : quelques dizaines de souscriptions par an, presque toutes issues d’agriculteurs déjà connus du réseau local. Un développement ciblé, greffé sur WooCommerce, revient moins cher à maintenir qu’une solution complète pensée pour des levées de fonds bien plus importantes.

Un rôle WordPress dédié pour le sociétaire

Le cœur du plugin maison ajoute un rôle personnalisé via add_role(), par exemple societaire_cooperative, avec les capacités de base d’un client plus quelques capacités spécifiques utilisées ailleurs sur le site pour afficher du contenu réservé aux sociétaires. Ce rôle ne remplace pas le rôle customer habituel : il s’y ajoute, car un même compte reste aussi client pour ses achats d’intrants auprès de la coopérative.

L'essentiel à retenir : Rôle WordPress dédié distinct du rôle client ; Souscription de parts déclenchée par une commande validée ; Nombre de parts détenues stocké en métadonnée utilisateur

Le déclencheur : la commande passée à « terminée »

Le changement de statut du compte se fait sur le hook woocommerce_order_status_completed. Le code vérifie que la commande contient bien le produit « part sociale », récupère la quantité achetée, l’additionne à une métadonnée utilisateur existante via get_user_meta() et update_user_meta(), puis attribue le rôle societaire_cooperative si ce n’est pas déjà fait avec $user->add_role().

add_action( 'woocommerce_order_status_completed', function( $order_id ) {
    $order = wc_get_order( $order_id );
    $parts_achetees = 0;

    foreach ( $order->get_items() as $item ) {
        if ( 'part-sociale' === $item->get_product()->get_sku() ) {
            $parts_achetees += $item->get_quantity();
        }
    }

    if ( $parts_achetees > 0 ) {
        $user_id = $order->get_customer_id();
        $total   = (int) get_user_meta( $user_id, 'parts_sociales', true );
        update_user_meta( $user_id, 'parts_sociales', $total + $parts_achetees );

        $user = new WP_User( $user_id );
        $user->add_role( 'societaire_cooperative' );
    }
});

Ce que le statut de sociétaire ouvre concrètement

Une fois le rôle attribué, le site peut afficher un espace réservé présentant les documents propres aux sociétaires : rapport d’activité annuel, coordonnées du conseil d’administration, informations sur la répartition des excédents. Ce contenu se protège simplement avec une condition current_user_can() testant une capacité propre au rôle, plutôt qu’avec un plugin de restriction de contenu généraliste jugé superflu pour ce seul usage.

  • Un produit WooCommerce classique pour encaisser la souscription
  • Un rôle WordPress additionnel pour matérialiser le statut de sociétaire
  • Une métadonnée utilisateur qui cumule le nombre de parts détenues

Un rôle qui s’ajoute plutôt qu’un rôle qui remplace : le sociétaire reste client pour ses achats, tout en devenant autre chose sur le plan statutaire.

Ce que ce plugin ne traite pas

La gestion du vote en assemblée générale, la pondération des voix selon le nombre de parts détenues ou la convocation dématérialisée des sociétaires restent hors du périmètre décrit ici. Ces sujets touchent au droit coopératif et méritent un développement à part, généralement construit une fois que le socle « souscription et statut » fonctionne de manière fiable.

Pour aller plus loin

Ce montage montre qu’il n’est pas nécessaire de réinventer un système de gestion de sociétariat complet pour démarrer : WooCommerce encaisse, un rôle WordPress qualifie, une métadonnée cumule. Le développement reste limité à quelques dizaines de lignes, faciles à faire évoluer le jour où la coopérative voudra, par exemple, plafonner le nombre de parts par sociétaire ou distinguer plusieurs catégories de sociétaires.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi