Accueil

Référence développeur · WordPress

Websource Connexion sociale pour WordPress — référence développeur

Blocs, shortcodes, hooks, adresses et classes de l'extension Websource Connexion sociale.

Version 1.0.0 · WordPress 6.4+, PHP 7.4+, site en HTTPS, WooCommerce 8+ (facultatif) · Mis à jour le 08/10/2026

Guide utilisateur

Cette extension existe aussi pour : PrestaShop

Vue d'ensemble

  • Espace de noms Websource\SocialLogin, classes dans src/ (PSR-4, chargeur intégré, aucune dépendance Composer).
  • OAuth 2.0 « Authorization Code » ; OpenID Connect pour Google, LinkedIn, Microsoft et Apple (id_token RS256 vérifié avec le JWKS du réseau : iss, aud, azp, exp, iat, nbf, nonce).
  • state de 32 octets, à usage unique, valable 10 minutes, lié au navigateur par le cookie wssl_bind (HttpOnly, SameSite=Lax ; None pour Apple qui répond en POST). PKCE S256 quand le réseau le gère.
  • Aucun jeton d'accès n'est conservé. Les secrets sont chiffrés (libsodium secretbox, clé dérivée de wp_salt('secure_auth')).

Blocs

BlocAttributsRendu
websource/socialloginplace (string, login par défaut : login, register, checkout, header, wishlist) ; force (bool, true par défaut : ignore le réglage « Où afficher les boutons »)Boutons des réseaux actifs, pour les visiteurs non connectés. Vide si aucun réseau actif.
websource/sociallogin-accountaucunListe « Connexions sociales » de l'utilisateur connecté (lier / délier).

Les deux blocs sont rendus côté serveur (block.json, render_callback). L'éditeur est écrit avec wp.element.createElement, sans étape de build (blocks/editor.js).

Shortcodes

[websource_sociallogin place="login" force="1"]
[websource_sociallogin place="header"]
[websource_sociallogin_account]

force="0" respecte le réglage des emplacements. L'emplacement header impose la présentation compacte (grille d'icônes, sans mention RGPD).

Emplacements automatiques

EmplacementHook utilisé
loginfiltre login_message (wp-login.php), action woocommerce_login_form_end
registerfiltre login_message (action=register), action woocommerce_register_form_start
checkoutaction woocommerce_before_checkout_form (commande classique), filtre render_block_woocommerce/checkout (commande en blocs)
header, wishlistaucun hook automatique : bloc, shortcode ou action de thème
Connexions socialespoint de terminaison WooCommerce social-logins dans « Mon compte » ; page /websource-sociallogin/account et section du profil sans WooCommerce

Action de thème :

<?php do_action('websource_sociallogin', 'header'); ?>

Les feuilles assets/css/front.css et assets/js/front.js ne sont chargées que sur les pages où des boutons ou une page de l'extension sont rendus.

Adresses

AdresseMéthodeRôle
/websource-sociallogin/start?provider=<id>&back=<url>GET (visiteur)Crée le state, pose le cookie de liaison, redirige vers le réseau. back : chemin du site ou URL du domaine du site, sinon ignoré.
/websource-sociallogin/startPOST (utilisateur connecté)Liaison depuis « Connexions sociales ». Champs : provider, wssl_link=1, _wssl_nonce (action wsx_sl_account).
/websource-sociallogin/callbackGET, POST (Apple)URL de redirection à enregistrer chez le réseau. Paramètres : state, code, error.
/websource-sociallogin/pending?type=confirm\|email\|verify&t=<jeton>GET, POSTConfirmation par mot de passe, saisie de l'e-mail, lien de vérification.
/websource-sociallogin/accountGETConnexions sociales (redirige vers « Mon compte » avec WooCommerce).

Sans permaliens, les mêmes adresses s'écrivent /?wsx_sl=start, /?wsx_sl=callback, etc. Ces adresses ne sont pas des routes REST : elles ont besoin du cookie de session de WordPress.

Exemple de démarrage :

GET /websource-sociallogin/start?provider=google&back=%2Fboutique%2F
→ 302 Location: https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=…&redirect_uri=https%3A%2F%2Fvotre-site.fr%2Fwebsource-sociallogin%2Fcallback&scope=openid%20email%20profile&state=…&nonce=…&code_challenge=…&code_challenge_method=S256

En cas d'échec, l'utilisateur est renvoyé vers la page de connexion avec ?wsx_sl_msg=<clé> (err_session, err_provider, err_cancelled, err_rate, err_unavailable, err_csrf, err_disabled, err_linked_other, err_already_provider, err_attempts, err_registration_closed, msg_linked, msg_unlinked). Seules les clés connues sont affichées.

Routes REST

L'extension n'enregistre aucune route REST.

Actions

ActionParamètresMoment
websource_socialloginstring $placeÀ appeler dans un gabarit pour afficher les boutons.
websource_sociallogin_register_providersProviderRegistry $registryAjout d'un réseau.
websource_sociallogin_user_createdint $userId, array $profileAprès la création d'un compte par connexion sociale.
websource_sociallogin_eventstring $event, string $provider, string $code, int $userIdJournal : start, login, created, linked, unlinked, confirm_failed, error, rate_limited, mail_sent. Avec WooCommerce, les mêmes lignes vont dans le journal websource-sociallogin.

L'action WordPress wp_login est déclenchée à chaque connexion sociale.

Filtres

FiltreValeurRôle
websource_sociallogin_redirect_uristringURL de redirection envoyée aux réseaux.
websource_sociallogin_default_redirectstringDestination après connexion quand aucune adresse de retour n'est connue (Mon compte, sinon l'accueil).
websource_sociallogin_login_redirectstring $url, WP_User $user, string $provider, bool $createdDestination finale après connexion.
websource_sociallogin_allow_registrationboolAutorise la création de comptes (par défaut : WooCommerce actif ou « Tout le monde peut s'inscrire »).
websource_sociallogin_user_can_loginbool, WP_User $userPermet d'interdire la connexion sociale à certains comptes (par exemple les administrateurs).
websource_sociallogin_allow_insecure_httpbool, string $urlAutorise un appel sortant en http://. À réserver aux essais en local.

Exemple : interdire la connexion sociale aux administrateurs.

add_filter('websource_sociallogin_user_can_login', function ($ok, $user) {
    return $ok && !user_can($user, 'manage_options');
}, 10, 2);

Ajouter un réseau

Implémentez Websource\SocialLogin\Provider\ProviderInterface (ou étendez OidcProvider pour un fournisseur OpenID Connect), puis enregistrez-le :

add_action('websource_sociallogin_register_providers', function ($registry) {
    $registry->register(new Mon_Reseau_Provider());
});

Méthodes à fournir pour OidcProvider : id(), label(), defaultScopes(), usesPkce(), authorizeEndpoint(), tokenEndpoint(), jwksUrl(), issuer(), profileFromClaims(). L'identifiant suit ^[a-z][a-z0-9]{0,19}$. Le réseau apparaît alors dans l'écran de réglages avec ses champs.

Données

ÉlémentContenu
Option wsx_sociallogin_settingsRéglages (clés WSSL_*). Secrets préfixés enc1:.
Table {prefix}wsx_sociallogin_linkuser_id, blog_id, provider, provider_user_id, email, consent_date, date_add, date_last_login. Unique par réseau + identifiant + site, et par utilisateur + réseau.
Table {prefix}wsx_sociallogin_flowÉtats OAuth et étapes intermédiaires : empreinte du jeton, type, charge utile JSON, empreinte du navigateur et de l'IP, échéance. Purgée à chaque création.
Transients wsx_sl_jwks_*Clés publiques des réseaux (6 heures).
Cookieswssl_bind (1 heure, HttpOnly), wssl_last (180 jours).

Limite de débit : 30 démarrages par tranche de 10 minutes et par adresse IP.

Variables CSS

Les boutons héritent du thème par des variables, toujours avec une valeur de repli.

VariableRôle
--wssl-radius, --wssl-border-w, --wssl-bg, --wssl-fg, --wssl-bcPosées par les réglages d'apparence sur le conteneur .wssl.
--color-ink, --color-line, --color-surfaceTexte, bordures et fond repris du thème Websource.
--color-brand-50 à --color-brand-800Style « Neutre », survol, boutons d'action des pages de l'extension.
--color-accent-500Pastille « Dernier utilisé ».
--radius-xlArrondi par défaut.

Classes utiles : .wssl, .wssl--outline|brand|neutral, .wssl--stack|grid, .wssl--place-<emplacement>, .wssl-btn, .wssl-btn--<réseau>, .wssl-page, .wssl-rows, .wssl-notice.

Fonctions publiques

$plugin = Websource\SocialLogin\Plugin::instance();
$plugin->redirectUri();                 // URL de redirection
$plugin->endpointUrl('start', ['provider' => 'google']);
$plugin->activeProviders();             // ProviderInterface[]
$plugin->buttons()->render('login', false, true); // HTML des boutons
$plugin->account()->render(false);      // HTML de « Connexions sociales »
$plugin->links()->listForCustomer($userId);

Traduction

Domaine websource-sociallogin, chaînes sources en anglais, languages/websource-sociallogin-fr_FR.po|.mo. Les textes saisis (« Texte du bouton », « Mention RGPD ») sont déclarés à Polylang (pll_register_string) et à WPML (wpml-config.xml, wpml_register_single_string). Les guides pas à pas sont fournis en français et en anglais (src/Guide/data_fr.php, data_en.php).