Comment empêcher qu’un simple visiteur anonyme, voire un concurrent, ne récupère en quelques clics les coordonnées directes d’un fournisseur référencé sur une place de marché B2B ? La question se pose dès qu’un annuaire de fournisseurs affiche systématiquement un email ou un numéro de téléphone en clair sur chaque fiche, sans vérifier qui consulte réellement cette information.
La réponse ne nécessite pas de repenser tout le système d’inscription : il suffit de conditionner l’affichage des coordonnées à une capacité WordPress personnalisée, attribuée uniquement aux comptes professionnels dont l’inscription a été validée manuellement par l’équipe de la place de marché.
Créer une capacité dédiée
Plutôt que de vérifier un rôle générique comme subscriber, une capacité personnalisée exprime clairement l’intention du contrôle d’accès. Elle s’ajoute au rôle existant lors de la validation manuelle du compte par un administrateur :
function wpm_valider_compte_pro( $user_id ) {
$utilisateur = new WP_User( $user_id );
$utilisateur->add_cap( 'voir_coordonnees_fournisseurs' );
}
Cette validation reste un acte humain, déclenché depuis l’administration après vérification du numéro d’entreprise ou d’un document justificatif fourni à l’inscription, un contrôle que le code ne peut pas automatiser sans risque.
Conditionner l’affichage des coordonnées

function wpm_afficher_coordonnees_fournisseur( $post_id ) {
if ( ! is_user_logged_in() ) {
echo '<p>Connectez-vous avec un compte professionnel validé pour voir les coordonnées</p>';
return;
}
if ( ! current_user_can( 'voir_coordonnees_fournisseurs' ) ) {
echo '<p>Votre compte est en attente de validation</p>';
return;
}
$email = get_post_meta( $post_id, 'email_fournisseur', true );
$telephone = get_post_meta( $post_id, 'telephone_fournisseur', true );
echo '<p>Email : ' . esc_html( $email ) . '</p>';
echo '<p>Téléphone : ' . esc_html( $telephone ) . '</p>';
}
Distinguer les trois cas possibles
Cette structure en trois branches — visiteur anonyme, compte en attente, compte validé — évite l’ambiguïté d’un simple test binaire. Un visiteur anonyme comprend qu’il doit créer un compte, tandis qu’un utilisateur inscrit mais non validé comprend que sa demande est en cours de traitement plutôt que rejetée.
Protéger aussi l’export et l’API REST
Comme pour toute donnée sensible, il ne suffit pas de masquer le champ dans le template affiché. Si les fiches fournisseurs sont exposées via l’API REST, le même contrôle doit s’appliquer avant l’envoi de la réponse :
add_filter( 'rest_prepare_fournisseur', 'wpm_masquer_coordonnees_api_rest', 10, 2 );
function wpm_masquer_coordonnees_api_rest( $response, $post ) {
if ( ! is_user_logged_in() || ! current_user_can( 'voir_coordonnees_fournisseurs' ) ) {
unset( $response->data['meta']['email_fournisseur'] );
unset( $response->data['meta']['telephone_fournisseur'] );
}
return $response;
}
Éviter la fuite via le flux RSS ou un export CSV
- Vérifier qu’aucun flux RSS des fiches fournisseurs n’inclut ces champs par défaut, ce qui contournerait complètement le contrôle mis en place sur le template.
- S’assurer qu’un éventuel export CSV de l’annuaire, réservé à l’administration, applique la même vérification de capacité si un jour une version publique de cet export venait à être envisagée.
- Documenter cette liste de points de sortie potentiels dans le code, pour qu’une future extension du site n’ouvre pas une brèche par inadvertance.
Conseil maison : une donnée sensible protégée dans un seul endroit du site n’est jamais réellement protégée. Listez systématiquement tous les points de sortie possibles — template, API REST, flux, export — avant de considérer le travail terminé.
Ce que cette technique ne traite pas
Elle ne définit pas le processus de validation d’un compte professionnel lui-même, ni les critères retenus pour accorder ou refuser cette validation. Elle se concentre uniquement sur la conséquence de ce statut : ce que le visiteur peut ou ne peut pas voir une fois son compte créé, validé ou en attente.
En résumé
Une capacité WordPress personnalisée, vérifiée systématiquement à chaque point où l’information pourrait fuiter, protège efficacement les coordonnées d’un fournisseur du démarchage non désiré. Le contrôle reste simple à comprendre et à maintenir, tant que la vérification est appliquée de façon cohérente partout où la donnée pourrait transiter.