WordPress
Le plugin WordPress vskstudio/takt-wordpress emballe le cœur PHP sous forme de plugin clé en main : il injecte le snippet dans wp_head et, quand WooCommerce est actif, remonte les commandes terminées en événements d'achat serveur-à-serveur. Nécessite WordPress 6.0+ et PHP 8.1+. Cette page décrit la version 0.5.2.
Installation
Le plugin est livré en ZIP autonome, sans composer install sur le serveur. Télécharge takt-analytics.zip depuis la dernière release, puis dans Extensions → Ajouter → Téléverser une extension, dépose-le et active-le.
wp plugin install takt-analytics.zip --activate Toutes les dépendances (le cœur PHP et sa pile PSR-7) sont préfixées sous Takt\WP\Vendor\ : le plugin n’entre jamais en conflit avec les librairies d’une autre extension. Les requêtes serveur-à-serveur passent par le wp_remote_post natif de WordPress, sans aucun client HTTP embarqué.
Configuration
Tout se règle dans Réglages → Takt Analytics :
| Réglage | Description |
|---|---|
| Domaine | L’identifiant du site envoyé avec chaque événement (ex. exemple.fr). |
| Mode du script | inline (snippet embarqué, anti-adblock), cdn (jsDelivr), asset (fichier que tu héberges) ou sdk (module ES, seul mode qui accepte les chemins exclus, les routes masquées, les gabarits de pages et le nettoyage d’URL). |
| Origine du script | Origine first-party qui sert le runtime du tracker ; l’ingestion navigateur passe alors par cette origine plutôt que par le domaine Takt. Doit être en https, localhost compris. |
| Exclure localhost | Ne pas suivre les hôtes locaux. Décochée par défaut : coche-la explicitement, sinon le trafic localhost et consorts est compté. |
| Clics sortants / Téléchargements / Événements balisés / Pages 404 | Bascules d’autocapture du tracker navigateur. |
| Extensions téléchargeables | Restreint les téléchargements comptés à ces extensions (pdf, zip, docx). Vide = liste par défaut du tracker. |
| Taux d’échantillonnage | Fraction des hits envoyés, entre 0 et 1 (0.5). Vide = tout est envoyé. |
| Conserver la query string | Garde la query string et le hash dans l’URL enregistrée ; sinon ils sont retirés. |
| Paramètres de requête conservés | Allowlist de paramètres conservés (utm_source, utm_medium). |
| Chemins exclus du suivi (mode SDK) | Préfixes de chemin jamais suivis (/app, /account). Ignoré hors mode sdk. |
| Routes masquées (mode SDK) | Gabarits de routes envoyés à la place du chemin réel, séparés par des virgules (ex. /verify/{token}, /reset/{code}). Une contrainte de segment comme {code<\d{1,3}>} est acceptée. Une valeur qui ne respecte pas sa contrainte n’est pas masquée et sort en clair (/reset/1234 avec {code<\d{1,3}>}), et le motif /* réécrit toutes les pages : évite-le. S’applique aussi aux achats serveur-à-serveur. Ignoré hors mode sdk, avec un avis d’administration qui signale que les chemins bruts sont envoyés. |
| Toutes les pages sous leur gabarit (mode SDK) | Envoie chaque page sous son gabarit, jamais sous son chemin réel : le filtre takt_route_template s’il est défini, sinon / pour l’accueil, /{post_type}/{slug} pour un contenu unique et /[redacted] pour le reste (archives, recherche, 404). Ignoré hors mode sdk, avec un avis d’administration qui signale que les chemins bruts sont envoyés. |
| Ignorer Do-Not-Track | Cesse de respecter le signal Do Not Track du navigateur. |
| Suspendre le suivi | Coupe-circuit : le snippet est rendu mais n’envoie plus rien. |
| Suivi WooCommerce (achats) | Envoyer un événement d’achat quand une commande atteint le statut déclencheur. |
| Déclencheur de la commande | Statut de commande qui déclenche l’achat (Terminée ou En traitement). |
| Origine d’ingestion | L’origine d’ingestion Takt, https://taktlytics.com pour le service hébergé. L’URL de collecte complète (https://taktlytics.com/api/event) est aussi acceptée : le plugin la ramène à l’origine à l’enregistrement. Sert aux événements serveur-à-serveur uniquement. Doit être en https, localhost compris. |
| Clé API | Jeton Bearer pour les événements S2S, champ en écriture seule. |
En mode asset, le snippet pointe vers /takt/takt.auto.js (préfixé par Origine du script si elle est renseignée) : c’est à toi de déposer ce fichier à cette URL, le plugin ne le sert pas.
HTTPS obligatoire
L’origine d’ingestion et l’origine du script doivent utiliser https, localhost compris. takt-core-php 0.7 refuse tout autre endpoint : une valeur http:// enregistrée est ignorée à l’enregistrement comme à la lecture, le champ revient vide et un avis d’administration désigne le réglage. Tant que l’origine d’ingestion n’est pas corrigée, l’envoi des achats WooCommerce est interrompu ; le suivi navigateur n’est pas touché. Une origine du script refusée, elle, suspend tout le suivi : aucun snippet n’est rendu tant qu’une origine https valide n’est pas saisie (vider le champ ne suffit pas). Le schéma de ton site WordPress n’entre pas en jeu : avec le service hébergé (https://taktlytics.com), un site local en http fonctionne. Seule une origine d’ingestion ou de script que tu sers toi-même en local doit passer en https (un certificat auto-signé approuvé par ton système convient, ou un tunnel https).
Clé API via wp-config.php
Pour les environnements où les secrets ne doivent pas vivre en base, définis la clé en constante. Elle prime sur la valeur stockée, et le champ admin est désactivé (grisé, non soumis) avec une note indiquant que la clé vient de la constante :
define('TAKT_API_KEY', 'ta-cle'); Nettoyage d’URL via wp-config.php
La réécriture d’URL est une fonction JS brute injectée verbatim dans la page : elle reste contrôlée par le dev et se définit elle aussi en constante, jamais depuis l’admin. Elle n’a d’effet qu’en mode sdk :
define('TAKT_SCRUB_URL', '(u) => u.split("#")[0]'); CSP
Le filtre takt_snippet_nonce fournit le nonce CSP posé sur la balise <script> du snippet, indispensable en mode inline (le mode par défaut) sous une politique script-src stricte :
add_filter('takt_snippet_nonce', fn () => my_csp_nonce()); Achats WooCommerce (serveur-à-serveur)
Le suivi des achats ne démarre que si les quatre conditions sont réunies : WooCommerce actif, bascule Suivi WooCommerce cochée, Origine d’ingestion renseignée et Clé API renseignée. S’il en manque une, le plugin n’accroche simplement pas le hook, sans message d’erreur.
Le plugin écoute alors woocommerce_order_status_changed et émet un événement Purchase avec le revenu depuis ton serveur. Les ventes sont donc suivies même quand la commande se termine hors-session (callback de paiement, admin, cron), là où un snippet navigateur ne peut pas se déclencher :
// Émis par le plugin au statut déclencheur :
$takt->withVisitor($order->get_customer_ip_address(), $order->get_customer_user_agent())
->event('Purchase', ['order_id' => '1234', 'items' => '2'], new Revenue('99.90', 'EUR')); Les classes du cœur sont renommées sous Takt\WP\Vendor\ dans le ZIP publié : cet extrait illustre ce que le plugin envoie, il n’est pas réutilisable tel quel depuis un thème.
L’IP et l’User-Agent du client issus de la commande sont forwardés pour l’attribution. Chaque commande n’est comptée qu’une fois : le plugin marque la commande d’un méta _takt_tracked, pour qu’un hook de statut ré-entrant (processing → completed, double clic en admin, extension qui re-sauve la commande) ne remonte jamais deux fois le même achat. Le client S2S avale les erreurs de transport par défaut : un événement en échec ne casse jamais le tunnel d’achat.
Vie privée
Les événements d’achat sont envoyés depuis ton serveur vers l’origine d’ingestion Takt et incluent l’IP et l’User-Agent du client pour l’attribution. Ils sont forwardés, jamais journalisés par le plugin. Le tracker navigateur respecte Do Not Track et un opt-out takt_ignore en localStorage.