Trois façons de poser la balise, de la plus simple à la plus propre. Prenez la première qui correspond à votre situation.
Prérequis : le site est créé dans CONTROL, ses domaines sont déclarés, sa clé publique est copiée. Voir le README.
Si vous utilisez déjà WPCode, Insert Headers and Footers ou équivalent :
<script src="https://messagerie.inovertix.com/inochat.js" data-site="INOCHT_PUB_votre_cle_publique" data-endpoint="https://messagerie.inovertix.com/api/inochat" defer></script>
C'est la méthode recommandée si vous n'êtes pas développeur : elle survit aux mises à jour du thème.
⚠️ Dans un thème ENFANT, jamais dans le thème parent : une mise à jour du thème effacerait votre ajout, et la bulle disparaîtrait sans que personne ne s'en aperçoive.
// functions.php du thème enfant add_action('wp_footer', function () { // Pas de widget dans l'administration ni sur les pages de connexion. if (is_admin()) { return; } ?> <script src="https://messagerie.inovertix.com/inochat.js" data-site="INOCHT_PUB_votre_cle_publique" data-endpoint="https://messagerie.inovertix.com/api/inochat" defer></script> <?php }, 100);
Le 100 en priorité place la balise en fin de pied de page, après le reste.
100
wp_enqueue_script
Pour un site où d'autres scripts sont déjà mis en file, et où vous voulez que celui-ci suive les mêmes règles :
// functions.php du thème enfant add_action('wp_enqueue_scripts', function () { if (is_admin()) { return; } wp_enqueue_script( 'inochat', 39;https://messagerie.inovertix.com/inochat.js', [], null, // pas de « ?ver= » : il casserait le cache long du fichier true // dans le pied de page ); }); // `wp_enqueue_script` ne sait pas poser d'attributs `data-*` : on les ajoute au vol. add_filter('script_loader_tag', function ($tag, $handle) { if ($handle !== 'inochat') { return $tag; } return str_replace( ' src=', ' data-site="INOCHT_PUB_votre_cle_publique"' .39; data-endpoint="https://messagerie.inovertix.com/api/inochat"' .' defer src=', $tag ); }, 10, 2);
Si votre boutique WooCommerce est reliée à CONTROL, l'assistant peut donner l'état d'une commande. Rien à installer de plus : il demande au client son numéro de commande et son téléphone, puis répond.
Les deux informations sont exigées, toujours. C'est ce qui empêche qu'on retrouve la commande de quelqu'un d'autre en essayant des numéros à la suite — et c'est pourquoi l'assistant ne dira jamais « ce numéro existe mais le téléphone ne correspond pas ».
add_action('wp_footer', function () { // Ni dans l'administration, ni au tunnel de commande : un visiteur qui paie ne // doit pas avoir une bulle par-dessus son bouton. if (is_admin() || (function_exists('is_checkout') && is_checkout())) { return; } ?> <script src="https://messagerie.inovertix.com/inochat.js" data-site="INOCHT_PUB_votre_cle_publique" data-endpoint="https://messagerie.inovertix.com/api/inochat" defer></script> <?php }, 100);
Les plugins de cache (WP Rocket, LiteSpeed, W3 Total Cache…) proposent souvent de différer ou de combiner les scripts. Pour celui-ci :
defer
Combiner / concaténer : à EXCLURE. La combinaison réécrit la balise et perd les attributs data-site et data-endpoint — le widget ne se charge alors plus, en silence. Ajoutez inochat.js à la liste d'exclusion de votre plugin de cache.
data-site
data-endpoint
inochat.js
Retarder l'exécution jusqu'à interaction (delay JS) : possible, mais la bulle n'apparaîtra qu'au premier mouvement de souris ou défilement. À vous de voir.
/wp-admin
Après vidage du cache, la bulle est toujours là (test de la combinaison de scripts).
Voyez Dépannage.