WordPress 多站点下为登录页注入 Matomo 跟踪代码的完整方案(支持自动识别子站)

社区话题 wordpress开发 WordPress 多站点下为登录页注入 Matomo 跟踪代码的完整方案(支持自动识别子站)

标签: 

  • 该话题为空。
正在查看 0 条回复
  • 作者
    帖子
    • #670

      追光
      管理员

      在搭建 WordPress 多站点(Multisite)时,往往需要为每个子站点独立记录访问行为。借助 Matomo(原名 Piwik)开源统计系统,你可以实现高精度、无隐私外泄的全站数据追踪。

      本篇分享将介绍如何在 WordPress 多站点中为每个子站的登录页自动注入专属的 Matomo 追踪代码,并根据 blog_id 自动识别对应的 Matomo SiteID,做到完全自动化、统一管理。


      ? 场景说明

      • 你搭建了一个 WordPress 多站点网络,多个子站共用一个主题

      • 每个子站在 Matomo 中都有独立的 SiteID

      • 你希望将追踪代码添加在 登录页底部wp-login.php),且不破坏其他站点逻辑


      ✅ 实现方法:通过

      login_footer

      钩子注入

      1️⃣ 在主题的

      functions.php

      中添加以下代码:

      function insert_matomo_tracking_code_on_login_page() {
          $site_id = 10; // 默认主站 ID
      
          if ( is_multisite() ) {
              switch ( get_current_blog_id() ) {
                  case 1:
                      $site_id = 10; // 主站
                      break;
                  case 4:
                      $site_id = 11; // 子站1
                      break;
                  case 6:
                      $site_id = 12; // 子站2
                      break;
                  case 7:
                      $site_id = 13; // 子站3
                      break;
              }
          }
          ?>
      <!-- Matomo Tracking on Login Page -->
      <script>
        var _paq = window._paq = window._paq || [];
        _paq.push(["setCookieDomain", "*.newvfx.com"]);
        _paq.push(["setDomains", ["*.newvfx.com"]]);
        _paq.push(["enableCrossDomainLinking"]);
        _paq.push(['trackPageView']);
        _paq.push(['enableHeartBeatTimer', 15]);
        _paq.push(['trackAllContentImpressions']);
        _paq.push(['enableLinkTracking']);
        (function() {
          var u="https://data.newvfx.com/";
          _paq.push(['setTrackerUrl', u+'matomo.php']);
          _paq.push(['setSiteId', '<?php echo esc_js($site_id); ?>']);
          var ucdn=(('https:' == document.location.protocol) ? 'https://img.newvfx.com/j/incdn/' : 'http://img.newvfx.com/j/incdn/');
          var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
          g.async=true; g.src=ucdn+'matomo.js'; s.parentNode.insertBefore(g,s);
        })();
      </script>
      <!-- End Matomo -->
          <?php
      }
      add_action('login_footer', 'insert_matomo_tracking_code_on_login_page');

      ? 工作原理解析

      函数

      作用

      login_footer

      WordPress 登录页底部钩子,专用于注入自定义 HTML/JS

      get_current_blog_id()

      获取当前站点(子站)ID

      switch-case 结构

      自动根据 blog_id 切换 Matomo 的 SiteID

      _paq.push 数组

      Matomo 的追踪配置命令

      CDN 载入

      使用你自己的 CDN img.newvfx.com 加载 matomo.js 脚本


      ✅ 效果验证方式

      1. 各子站后台访问 wp-login.php

      2. 打开浏览器开发者工具 → Network

      3. 检查是否加载了 matomo.php?idsite=X,SiteID 是否对应当前站点


      ? 可选增强建议

      ✅ 通过后台为每个子站设置 SiteID(更灵活)

      如果未来子站增多,建议不要写死,而是为每个子站后台设置一个自定义字段:

      $site_id = get_option('matomo_site_id', 10); // 默认主站 ID

      配合 Options FrameworkRedux 添加一个选项即可。


      ? 结语

      这个方法适用于以下场景:

      • WordPress 多站点架构

      • 子站共用主题

      • 每个子站在 Matomo 中是独立站点

      • 需要细粒度追踪各站用户行为

      借助这种动态注入方式,你可以在不改变站点结构的前提下实现全面的数据追踪自动化,尤其适合搭建在 Nginx + PHP-FPM + Redis 的现代 WordPress 集群。

正在查看 0 条回复
  • 在下方一键注册,登录后就可以回复啦。