メインコンテンツへスキップ
6分で読めます

WordPress インテグレーション

WordPress サイトにプライバシー重視のアナリティクスを追加します。プライバシーを侵害することなく、ビジターをトラッキングし、行動を理解し、オーディエンスを成長させましょう。

手動セットアップのみ。 Zenovay は現在、公式の WordPress プラグインや WooCommerce 拡張機能を提供していません。以下の手順では、標準のトラッキングスクリプトと header.php / functions.php 内のスニペットを使用します。これはすべての WordPress インストールで確実に機能します。以下の「自動トラッキング」への言及は、テーマに貼り付ける単一の add_action() フック、すなわちインストール可能なプラグインではないことを意味します。


クイックスタート

方法適した用途セットアップ時間
header.php スニペットカスタムテーマ3 分
functions.php フック管理者除外機能を持つ開発者管理サイト5 分
wp_enqueue_scriptWordPress のスクリプトエンキューを厳密に使用するサイト5 分

方法 1: テーマヘッダー(推奨)

テーマの header.php</head> の前に追加します。

<!-- Zenovay Analytics -->
<script defer data-tracking-code="YOUR_TRACKING_CODE" src="https://api.zenovay.com/z.js"></script>

これは最もシンプルなインストール方法です。header.php ファイルとテンプレートに </head> タグが表示されているすべてのテーマで動作します。


方法 2: functions.php フック

より細かい制御(管理者ユーザーの除外・条件付き読み込みなど)が必要な場合は、テーマの functions.php に追加します。

/**
 * Add Zenovay Analytics tracking script
 */
function zenovay_tracking_script() {
    // Don't track admin users (optional)
    if (current_user_can('manage_options')) {
        return;
    }

    ?>
    <script defer data-tracking-code="YOUR_TRACKING_CODE" src="https://api.zenovay.com/z.js"></script>
    <?php
}
add_action('wp_head', 'zenovay_tracking_script');

方法 3: wp_enqueue_script

WordPress の規則に従った適切なスクリプト管理のために:

/**
 * Enqueue Zenovay Analytics script
 */
function zenovay_enqueue_scripts() {
    if (current_user_can('manage_options')) {
        return;
    }

    wp_enqueue_script(
        'zenovay-analytics',
        'https://api.zenovay.com/z.js',
        array(), // No dependencies
        null,    // No version (external script)
        false    // Load in header
    );

    add_filter('script_loader_tag', function($tag, $handle) {
        if ('zenovay-analytics' === $handle) {
            return str_replace(' src', ' defer data-tracking-code="YOUR_TRACKING_CODE" src', $tag);
        }
        return $tag;
    }, 10, 2);
}
add_action('wp_enqueue_scripts', 'zenovay_enqueue_scripts');

WooCommerce トラッキング

WooCommerce ストアで商品ビュー・カートへの追加・購入をトラッキングします。テーマの functions.php に追加します。

/**
 * Zenovay WooCommerce Event Tracking
 */

// Track product views
function zenovay_track_product_view() {
    if (!is_product()) return;

    global $product;
    ?>
    <script>
    document.addEventListener('DOMContentLoaded', function() {
        if (window.zenovay) {
            window.zenovay('track', 'product_viewed', {
                product_id: '<?php echo esc_js($product->get_id()); ?>',
                product_name: '<?php echo esc_js($product->get_name()); ?>',
                price: <?php echo $product->get_price(); ?>,
                currency: '<?php echo get_woocommerce_currency(); ?>',
                category: '<?php echo esc_js(wc_get_product_category_list($product->get_id())); ?>'
            });
        }
    });
    </script>
    <?php
}
add_action('wp_footer', 'zenovay_track_product_view');

// Track add to cart
function zenovay_track_add_to_cart($cart_item_key, $product_id, $quantity) {
    $product = wc_get_product($product_id);
    ?>
    <script>
    if (window.zenovay) {
        window.zenovay('track', 'add_to_cart', {
            product_id: '<?php echo esc_js($product_id); ?>',
            product_name: '<?php echo esc_js($product->get_name()); ?>',
            price: <?php echo $product->get_price(); ?>,
            quantity: <?php echo $quantity; ?>,
            currency: '<?php echo get_woocommerce_currency(); ?>'
        });
    }
    </script>
    <?php
}
add_action('woocommerce_add_to_cart', 'zenovay_track_add_to_cart', 10, 3);

// Track purchases on thank you page
function zenovay_track_purchase($order_id) {
    $order = wc_get_order($order_id);
    if (!$order) return;

    // Only track once
    if ($order->get_meta('_zenovay_tracked')) return;
    $order->update_meta_data('_zenovay_tracked', true);
    $order->save();

    $items = array();
    foreach ($order->get_items() as $item) {
        $items[] = array(
            'product_id' => $item->get_product_id(),
            'name' => $item->get_name(),
            'price' => $item->get_total(),
            'quantity' => $item->get_quantity()
        );
    }
    ?>
    <script>
    document.addEventListener('DOMContentLoaded', function() {
        if (window.zenovay) {
            window.zenovay('track', 'purchase', {
                transaction_id: '<?php echo esc_js($order->get_order_number()); ?>',
                revenue: <?php echo $order->get_total(); ?>,
                currency: '<?php echo $order->get_currency(); ?>',
                tax: <?php echo $order->get_total_tax(); ?>,
                shipping: <?php echo $order->get_shipping_total(); ?>,
                items: <?php echo json_encode($items); ?>
            });
        }
    });
    </script>
    <?php
}
add_action('woocommerce_thankyou', 'zenovay_track_purchase');

コンタクトフォームのトラッキング

Contact Form 7

function zenovay_track_cf7_submission($contact_form, $result) {
    if ($result['status'] !== 'mail_sent') return;
    ?>
    <script>
    if (window.zenovay) {
        window.zenovay('track', 'form_submitted', {
            form_id: '<?php echo esc_js($contact_form->id()); ?>',
            form_name: '<?php echo esc_js($contact_form->title()); ?>'
        });
    }
    </script>
    <?php
}
add_action('wpcf7_mail_sent', 'zenovay_track_cf7_submission', 10, 2);

または JavaScript イベントを使用します。

document.addEventListener('wpcf7mailsent', function(event) {
    if (window.zenovay) {
        window.zenovay('track', 'form_submitted', {
            form_id: event.detail.contactFormId,
        });
    }
});

Gravity Forms

function zenovay_track_gf_submission($entry, $form) {
    ?>
    <script>
    if (window.zenovay) {
        window.zenovay('track', 'form_submitted', {
            form_id: '<?php echo esc_js($form['id']); ?>',
            form_name: '<?php echo esc_js($form['title']); ?>'
        });
    }
    </script>
    <?php
}
add_action('gform_after_submission', 'zenovay_track_gf_submission', 10, 2);

WPForms

function zenovay_track_wpforms_submission($fields, $entry, $form_data) {
    ?>
    <script>
    if (window.zenovay) {
        window.zenovay('track', 'form_submitted', {
            form_id: '<?php echo esc_js($form_data['id']); ?>',
            form_name: '<?php echo esc_js($form_data['settings']['form_title']); ?>'
        });
    }
    </script>
    <?php
}
add_action('wpforms_process_complete', 'zenovay_track_wpforms_submission', 10, 3);

ログインユーザーを識別する

クロスセッショントラッキングのために WordPress ユーザーを識別します。

function zenovay_identify_user() {
    if (!is_user_logged_in()) return;

    $user = wp_get_current_user();
    ?>
    <script>
    document.addEventListener('DOMContentLoaded', function() {
        if (window.zenovay) {
            window.zenovay('identify', {
                userId: '<?php echo esc_js($user->ID); ?>',
                email: '<?php echo esc_js($user->user_email); ?>',
                name: '<?php echo esc_js($user->display_name); ?>'
            });
        }
    });
    </script>
    <?php
}
add_action('wp_footer', 'zenovay_identify_user');

ファーストパーティトラッキングのセットアップ

ドメイン経由でプロキシを設定することで広告ブロッカーを回避できます。クロスプラットフォームのセットアップについては ファーストパーティトラッキングガイド をご覧ください。WordPress 固有のリライトルール:

/**
 * Add rewrite rules for Zenovay first-party proxy
 */
function zenovay_add_rewrite_rules() {
    add_rewrite_rule('^_z/script\.js$', 'index.php?zenovay_proxy=script', 'top');
    add_rewrite_rule('^_z/event$', 'index.php?zenovay_proxy=event', 'top');
}
add_action('init', 'zenovay_add_rewrite_rules');

function zenovay_query_vars($vars) {
    $vars[] = 'zenovay_proxy';
    return $vars;
}
add_filter('query_vars', 'zenovay_query_vars');

function zenovay_proxy_handler() {
    $proxy = get_query_var('zenovay_proxy');
    if (!$proxy) return;

    if ($proxy === 'script') {
        header('Content-Type: application/javascript');
        echo file_get_contents('https://api.zenovay.com/z.js');
        exit;
    }

    if ($proxy === 'event') {
        $response = wp_remote_post('https://api.zenovay.com/e/' . $_GET['tracking_code'], [
            'body' => file_get_contents('php://input'),
            'headers' => ['Content-Type' => 'application/json']
        ]);

        header('Content-Type: application/json');
        echo wp_remote_retrieve_body($response);
        exit;
    }
}
add_action('template_redirect', 'zenovay_proxy_handler');

次に、プロキシを使用するようにトラッキングスクリプトを更新します。

<script defer
    data-tracking-code="YOUR_TRACKING_CODE"
    data-api-url="/_z/"
    src="/_z/script.js">
</script>

リライトルールを追加した後、Settings → Permalinks に移動して Save Changes をクリックし、リライトキャッシュをフラッシュしてください。


キャッシュプラグインの互換性

イベントが正しくポストされるよう、キャッシュプラグインから Zenovay のファーストパーティルートを除外します。

WP Super Cache

wp-content/wp-cache-config.php に追加します:

$cache_rejected_uri = array(
    '/_z/',
);

W3 Total Cache

Performance → Page Cache に移動して、Never cache the following pages/_z/ を追加します。

LiteSpeed Cache

LiteSpeed Cache → Cache → Excludes → Do Not Cache URIs

/_z/

WP Rocket

Settings → WP Rocket → Advanced Rules → Never Cache URL(s)

/_z/(.*)

WP Fastest Cache

WP Fastest Cache → Exclude → Exclude Pages/_z/ を追加します。


Multisite の設定

WordPress Multisite ネットワークでは、トラッキングスクリプトはテーマの header.php または functions.php に存在し、設定に応じてサイトごとに動作します。ネットワーク全体で単一のトラッキングコードを使用するには:

/**
 * Use a single tracking code across the multisite network
 */
function zenovay_network_tracking_code() {
    return 'YOUR_NETWORK_TRACKING_CODE';
}
add_filter('zenovay_tracking_code', 'zenovay_network_tracking_code');

または、各サイトのテーマにハードコードして、サイトごとに異なるトラッキングコードを設定します。


パフォーマンスに関する注意

Zenovay トラッカーの特徴:

  • defer — ページレンダリングをブロックしない
  • 軽量 — gzip 圧縮後 23 KB 未満
  • CDN 配信 — エッジでグローバルにキャッシュ

条件付き読み込み

特定のページでトラッキングをスキップします。

function zenovay_conditional_loading() {
    if (is_admin()) return;
    if (is_page(array('privacy-policy', 'terms'))) return;
    ?>
    <script defer data-tracking-code="YOUR_TRACKING_CODE" src="https://api.zenovay.com/z.js"></script>
    <?php
}
add_action('wp_head', 'zenovay_conditional_loading');

トラブルシューティング

スクリプトが読み込まれない

  1. ページソースを確認(Cmd/Ctrl+U)して <head></head> の間の <script defer data-tracking-code=...> を探す
  2. トラッキングコードが Zenovay ダッシュボードの値と一致していることを確認する
  3. ブラウザコンソールを開いて JavaScript エラーを確認する
  4. テストのためにキャッシュを一時的に無効にする
  5. セキュリティプラグイン(Wordfence・iThemes Security など)が api.zenovay.com への外部スクリプトをブロックしていないか確認する

ページビューの重複

  • スニペットを一度だけ追加していることを確認する(header.phpfunctions.php フックの両方に貼り付けない)
  • AJAX で読み込まれたコンテンツがトラッキングを再トリガーしていないか確認する
  • キャッシュプラグインの設定を確認する

WooCommerce の購入が記録されない

  • スニペットがサンキューページで読み込まれているか確認する
  • WooCommerce チェックアウトフロー(マルチページ vs シングルページ)を確認する。一部のチェックアウトは標準の woocommerce_thankyou フックをスキップする
  • jQuery 互換モードが干渉していないか確認する

キャッシュの問題

  • ページキャッシュから /_z/ ルートを除外する(上記のキャッシュプラグインの互換性を参照)
  • 設定変更後にすべてのキャッシュをクリアする
  • プライベートブラウジングモードでテストする

セキュリティに関する考慮事項

Content Security Policy

サイトで CSP ヘッダーを使用している場合は、Zenovay を許可します。

script-src 'self' https://api.zenovay.com;
connect-src 'self' https://api.zenovay.com;

ファーストパーティプロキシを使用する場合は 'self' のみで十分です。

機密ページの除外

function zenovay_should_track() {
    if (is_admin()) return false;
    if (is_page(array('my-account', 'checkout'))) return false;
    if (current_user_can('manage_options')) return false;
    return true;
}

プライバシーコンプライアンス

クッキーレストラッキングを行うには、data-cookieless="true" を追加します。

<script defer
    data-tracking-code="YOUR_TRACKING_CODE"
    data-cookieless="true"
    src="https://api.zenovay.com/z.js"></script>

このモードでは Cookie もローカルストレージエントリも設定されません。ビジター ID は現在のタブにのみ存在します。詳細については プライバシーコンプライアンスガイド をご覧ください。

一般的な同意プラグインとの連携:

// CookieYes — load tracking after consent
document.addEventListener('cookieyes_consent_update', function(e) {
    if (e.detail.accepted.includes('analytics')) {
        var s = document.createElement('script');
        s.defer = true;
        s.src = 'https://api.zenovay.com/z.js';
        s.dataset.trackingCode = 'YOUR_TRACKING_CODE';
        document.head.appendChild(s);
    }
});

// Complianz — same pattern
document.addEventListener('cmplz_fire_statistics', function() {
    var s = document.createElement('script');
    s.defer = true;
    s.src = 'https://api.zenovay.com/z.js';
    s.dataset.trackingCode = 'YOUR_TRACKING_CODE';
    document.head.appendChild(s);
});

詳細なセットアップについては GDPR コンプライアンスガイド をご覧ください。


関連リソース


サポートが必要ですか? [email protected] までお問い合わせいただくか、ヘルプセンター をご覧ください。

このページは役に立ちましたか?