Dans un précédent tutoriel, Comment ajouter le code Google Tag Manager à WordPress, je vous ai laissé un extrait pour ajouter le code Google Tag Manager à votre site Web WordPress, mais que se passe-t-il si vous avez un multisite avec différents sites Web et domaines ?
Dans ce cas, l'intérêt est de pouvoir attribuer un conteneur Google Tag Manager unique à chaque site web, puisque chacun aura une configuration différente. Voyons donc comment faire.
Créer dans Google Tag Manager un conteneur pour chaque site web
Tout d'abord, vous devez disposer d'un compte Google Tag Manager. Si vous ne savez pas comment en créer un, allez sur l'aide de Google Tag Manager et suivez les instructions.
Une fois le compte créé, vous devrez ajouter les différents conteneurs pour chaque site, un pour chaque site de votre multisite. Dans le même article d'aide de Tag Manager, vous pouvez voir comment le faire.
Copiez les identifiants de chaque conteneur à partir de Google Tag Manager
Une fois les conteneurs créés, vous disposerez d'un identifiant unique pour chacun d'eux, dans le style de GTM-XXXXXXX. Copiez-les pour un usage ultérieur.

Localisez les identifiants de chacun des sites sur votre Multisite WordPress
L'étape suivante consiste à trouver les identifiants de chaque site web sur votre WordPress Multisite.
Pour ce faire, à partir de votre administrateur WordPress, allez dans "Tous les sites" dans le menu latéral. Une fois là, vous aurez une vue de tous les sites que vous avez dans votre WordPress Multisite. En cliquant sur chacun d'eux, vous verrez un résumé de chaque site et, dans l'url, vous verrez quelque chose comme ceci https://mi-sitio-web.com/wp-admin/network/site-settings.php?id=2.

L'important pour nous est la fin de cette url "?id=2" qui est ce qui nous montre ce que nous cherchons, l'identifiant de chaque site web dans le multi-site.
Nous faisons la même chose, nous copions l'identifiant de chaque site web.
Créer un extrait pour injecter des conteneurs Google Tag Manager dans chaque multi-site
Une fois que les identifiants des différents sites et les identifiants correspondants de Google Tag Manager ont été identifiés, il est temps de créer un extrait afin d'injecter chaque conteneur dans chaque site web et uniquement pour ce site. Cet extrait devra être ajouté à un mu-plugin ou à notre plugin de fonctionnalités.
<?php
/*
Plugin Name: Inyectar Google Tag Manager en WordPress
Plugin URI: https://carlosmdh.es, https://www.juanmacivico87.com/
Description: Plugin para insertar los Contenedores de Google Tag Manager en un multisite
Version: 2.0.0
Authors: carlosmdh, Juanma Civico
License: GPL 2+
License URI:
*/
// Inyectar el código de Google Tag Manager en el <head>
add_action( 'wp_head', 'carlosmdh_google_tag_manager1' );
function carlosmdh_google_tag_manager1() {
$blog_id = get_current_blog_id();
$tag_manager = array(
'1' => 'GTM-XXXXXX1', // El primer valor define el ID en el multisite y el segundo el Contenedor de Google Tag Manager de la Web 1
'2' => 'GTM-XXXXXX2', // El primer valor define el ID en el multisite y el segundo el Contenedor de Google Tag Manager de la Web 2
'3' => 'GTM-XXXXXX3', // El primer valor define el ID en el multisite y el segundo el Contenedor de Google Tag Manager de la Web 3
'4' => 'GTM-XXXXXX4', // El primer valor define el ID en el multisite y el segundo el Contenedor de Google Tag Manager de la Web 4
'6' => 'GTM-XXXXXX5', // El primer valor define el ID en el multisite y el segundo el Contenedor de Google Tag Manager de la Web 5
'13' => 'GTM-XXXXXX6', // El primer valor define el ID en el multisite y el segundo el Contenedor de Google Tag Manager de la Web 13
'14' => 'GTM-XXXXXX7', // El primer valor define el ID en el multisite y el segundo el Contenedor de Google Tag Manager de la Web 14
);
if(!isset($tag_manager[$blog_id]))
return;
$gtm_code = "<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer', '" . $tag_manager[$blog_id] . "' );</script>
<!-- End Google Tag Manager -->";
if ( !is_admin() && $gtm_code ) {
echo $gtm_code;
}
}
/* Inyectar el código noscript de Google Tag Manager justo debajo de la apertura de la etiqueta <body> */
add_action( 'wp_footer', 'carlosmdh_google_tag_manager2' );
function carlosmdh_google_tag_manager2() {
$blog_id = get_current_blog_id();
$tag_manager = array(
'1' => 'GTM-XXXXXX1', // El primer valor define el ID en el multisite y el segundo el Contenedor de Google Tag Manager de la Web 1
'2' => 'GTM-XXXXXX2', // El primer valor define el ID en el multisite y el segundo el Contenedor de Google Tag Manager de la Web 2
'3' => 'GTM-XXXXXX3', // El primer valor define el ID en el multisite y el segundo el Contenedor de Google Tag Manager de la Web 3
'4' => 'GTM-XXXXXX4', // El primer valor define el ID en el multisite y el segundo el Contenedor de Google Tag Manager de la Web 4
'6' => 'GTM-XXXXXX5', // El primer valor define el ID en el multisite y el segundo el Contenedor de Google Tag Manager de la Web 5
'13' => 'GTM-XXXXX13', // El primer valor define el ID en el multisite y el segundo el Contenedor de Google Tag Manager de la Web 13
'14' => 'GTM-XXXXX14', // El primer valor define el ID en el multisite y el segundo el Contenedor de Google Tag Manager de la Web 14
);
if(!isset($tag_manager[$blog_id]))
return;
echo '<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=' . $tag_manager[$blog_id] . '"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->';
}
Comme vous pouvez le voir, nous avons ajouté un tableau qui relie chaque site Web (id) à son conteneur Google Tag Manager. A ce stade, je tiens à remercier Juanma Civico pour son aide.
Il est évident que vous devez modifier les identifiants de chaque site du tableau pour qu'ils correspondent à ceux de votre WordPress Multisite, ainsi que les identifiants des conteneurs du Google Tag Manager qui devraient être ceux que vous avez enregistrés lors de la première étape.
Conclusion
C'est tout pour le moment, comme vous l'avez peut-être remarqué, il est très facile d'ajouter ce code à votre site web sans avoir besoin d'installer un plugin ou d'ajouter le code au fichier functions.php ou au template de tête de votre thème, ce qui n'est pas du tout recommandé.
Si vous avez des questions, vous pouvez me les envoyer via le formulaire de contact.