# Carnet de commandes artisanales affiché en thème, sans espace client

> Un artisan veut informer ses clients de l'avancement de leurs commandes sur mesure sans construire un espace client complet. Comment un simple gabarit de thème a suffi.

- Auteur : Clément Hadrot
- Publié le : 2026-04-09
- Mis à jour le : 2026-04-09
- Catégorie : Thèmes
- URL : https://wpmoderne.dev.wordpress-developpement.fr/themes/carnet-commandes-artisanales-theme-sans-espace-client/

## L’essentiel

- Un espace client complet n'était pas nécessaire pour ce besoin précis
- Un lien unique par commande évite la gestion de comptes utilisateurs
- Le statut d'avancement vit dans une simple métadonnée du CPT

Est-il vraiment nécessaire de construire un espace client avec identifiants et mot de passe pour qu'un artisan puisse simplement dire à son client où en est sa commande sur mesure ? La question s'est posée concrètement pour un ébéniste qui fabrique des meubles à la commande, avec des délais de plusieurs semaines, et qui recevait régulièrement des appels de clients impatients demandant où en était leur pièce.

La réponse la plus simple n'était pas de construire un espace client complet, avec inscription, connexion et mot de passe oublié à gérer, mais d'exploiter ce que le thème gérait déjà : un type de contenu personnalisé pour chaque commande, avec un statut affiché sur une page accessible via un lien unique envoyé par e-mail, sans compte à créer.

## La structure retenue : un CPT commande, un statut, un lien

Chaque commande devient une entrée d'un type de contenu personnalisé `commande`, enregistré via `register_post_type` avec `'public' => false` et `'publicly_queryable' => true`, ce qui la rend invisible dans les archives ou les résultats de recherche du site tout en restant accessible directement par son URL exacte, transmise uniquement au client concerné.

```
register_post_type( 'commande', array(
    'label'               => 'Commandes',
    'public'              => false,
    'publicly_queryable'  => true,
    'show_ui'             => true,
    'show_in_menu'        => true,
    'has_archive'         => false,
    'rewrite'             => array( 'slug' => 'suivi' ),
    'supports'            => array( 'title', 'custom-fields' ),
) );
```

## Le statut d'avancement, une métadonnée simple

> L'essentiel à retenir : Un espace client complet n'était pas nécessaire pour ce besoin précis ; Un lien unique par commande évite la gestion de comptes utilisateurs ; Le statut d'avancement vit dans une simple métadonnée du CPT

Le statut de chaque commande vit dans une métadonnée `statut_commande`, mise à jour manuellement par l'artisan depuis l'administration, avec quatre valeurs possibles suffisantes pour couvrir tout le cycle observé sur ce type d'activité : « Commande reçue », « En fabrication », « Finitions en cours », « Prête à récupérer ». Un gabarit dédié, `single-commande.php`, affiche ce statut avec une mise en forme adaptée à chacune des quatre valeurs.

```
$statut = get_post_meta( get_the_ID(), 'statut_commande', true );

$etapes = array(
    'recue'      => 'Commande reçue',
    'fabrication' => 'En fabrication',
    'finitions'   => 'Finitions en cours',
    'prete'       => 'Prête à récupérer',
);
```

Le gabarit parcourt ce tableau pour afficher une frise des quatre étapes, avec l'étape courante mise en valeur, sans qu'aucune base de données supplémentaire ni aucune extension de gestion de commandes ne soit nécessaire pour ce niveau de suivi.

### Ce que ce choix a délibérément laissé de côté

- Aucune authentification : le lien unique, difficile à deviner, tient lieu de contrôle d'accès suffisant pour ce niveau de confidentialité
- Aucune prise de commande en ligne, qui reste gérée en atelier comme auparavant, hors périmètre de ce chantier
- Aucune notification automatique par e-mail à chaque changement de statut, l'artisan préférant garder la main sur ce contact

## Générer le lien unique sans dépendance externe

Le lien transmis au client repose simplement sur le slug de l'article, généré automatiquement par WordPress à partir du titre de la commande, mais rendu suffisamment peu prévisible en y ajoutant un identifiant aléatoire au moment de la création de la fiche, via la fonction `wp_generate_password` utilisée ici uniquement pour produire une chaîne aléatoire, sans lien avec un quelconque mot de passe :

```
function wpm_creer_slug_commande( $titre ) {
    $suffixe = wp_generate_password( 8, false );
    return sanitize_title( $titre . '-' . $suffixe );
}
```

Ce suffixe aléatoire, ajouté au moment de la création de la commande, suffit à rendre l'URL suffisamment difficile à deviner pour l'usage visé, sans complexité technique supplémentaire côté serveur.

> Un espace client complet résout un problème qui n'existe pas toujours : parfois, un simple lien et quatre statuts suffisent à répondre exactement à la question du client.

## En résumé

Construire un espace client avec comptes et mots de passe aurait représenté des semaines de développement pour un besoin qui, en réalité, se résumait à informer sans authentifier. Le type de contenu personnalisé, associé à un lien unique par commande, a couvert ce besoin en quelques jours, sans complexité inutile, et reste facilement modifiable si l'artisan souhaite un jour ajouter une cinquième étape à son cycle de fabrication.
