Fermer

décembre 25, 2024

WordPress : comment ajouter une chaîne de requête de campagne UTM à des redirections externes

WordPress : comment ajouter une chaîne de requête de campagne UTM à des redirections externes


Martech Zone est souvent un site intermédiaire où nous connectons nos visiteurs avec des produits, des solutions et des services disponibles sur d’autres sites. Nous ne voulons jamais que notre site soit utilisé comme un ferme de backlinks par Référencement consultants, nous sommes donc assez prudents dans le contenu que nous acceptons et dans la manière dont nous redirigeons nos visiteurs.

Là où nous ne pouvons pas monétiser un lien référent externe, nous évitons de transmettre toute autorité à la destination. Encore une fois, je ne veux pas que ce site soit vu par un moteur de recherche comme un site où nous essayons de jouer avec les moteurs de recherche pour le compte d’un client ou où nous sommes payés pour créer des backlinks par un backlinker sans scrupules. Chaque jour, nous refusons de l’argent pour ce faire, car le résultat serait un désastre pour mon classement dans les moteurs de recherche, la confiance que j’ai bâtie avec nos lecteurs et… en fin de compte… la valeur du site.

Redirections WordPress

Pour gérer ce processus, j’utilise Classer les pros en mathématiques capacités de redirection. Cela me permet de classer une redirection vers la page de destination souhaitée et de suivre la quantité de trafic que j’envoie réellement vers la destination. Qu’une destination soit monétisée via un lien de parrainage (comme le lien Rank Math que je viens de partager) ou en envoyant du trafic sans lien d’affiliation, cela me permet d’organiser, de suivre et de créer des stratégies autour du trafic que j’envoie.

L’un des inconvénients de cette solution est que les entreprises ne surveillent peut-être pas sites de référence dans Google Analytics puisqu’ils pourraient avoir des milliers de sites qui leur envoient du trafic. Puisque j’aimerais attirer leur attention en tant que bonne source de trafic important, j’aimerais ajouter UTM paramètres à un chaîne de requête de campagne pour que Martech Zone n’apparaisse pas seulement dans leurs sites référents mais dans suivi de campagne au sein de Google Analytics.

De cette façon, une entreprise peut voir combien elle dépense pour d’autres campagnes et voir l’intérêt d’établir éventuellement un partenariat via un partenariat ou un parrainage avec Martech Zone.

Ajouter une chaîne de requête UTM aux redirections

Ci-dessous se trouve un complet solution qui ajoute des paramètres UTM personnalisés à toutes les redirections WordPress. Il garantit que :

  1. utm_source = titre de la page actuelle (repli : nom du site)
  2. utm_campagne = "Redirect"
  3. utm_content = URL de la page actuelle (repli : URL du site)

Il utilise des sessions pour capturer le spécifique à une page valeurs. Si la session n’est pas disponible, elle applique les valeurs par défaut de secours dans la redirection. Cela vous aide à suivre, pour les ventes et le marketing, exactement quelle page a redirigé les visiteurs hors site.

Étape 1 : démarrer une session PHP

Dans votre thème functions.php ou un petit plugin personnalisé :

add_action( 'init', function() {
    if ( ! session_id() ) {
        session_start();
    }
});

Cela garantit que WordPress peut stocker et récupérer des données dans $_SESSION.

Étape 2 : Capturer les informations sur la page à chaque chargement de page

Utiliser add_action('wp') pour capturer le actuel le nom et l’URL de la page. S’il manque un titre à la page (ou s’il s’agit d’un itinéraire spécial), revenez au nom du site et URL d’accueil. Stockez-les sous forme de chaîne de requête UTM prédéfinie dans la session afin qu’elle soit prête pour toute redirection future.

add_action( 'wp', function() {
    // Only run on the public front-end (not in wp-admin)
    if ( ! is_admin() ) {

        // Check if the main query has at least one post/page
        if ( have_posts() ) {
            the_post();   // Prepare get_the_title(), get_permalink()
            rewind_posts(); // Reset for the main loop if needed

            // Grab the current page title and URL
            $page_title = get_the_title();
            $page_url   = get_permalink();

            // Site-level fallbacks
            $site_name  = get_bloginfo('name');
            $home_url   = home_url();

            // If the page title is empty, use the site name
            if ( empty( $page_title ) ) {
                $page_title = $site_name;
            }

            // If the page URL is empty, use the home URL
            if ( empty( $page_url ) ) {
                $page_url = $home_url;
            }

            // Build a set of parameters:
            //   utm_source   = page title (fallback: site name)
            //   utm_campaign = "Redirect"
            //   utm_content  = page URL (fallback: site/home URL)
            $utm_params = [
                'utm_source'   => $page_title,
                'utm_campaign' => 'Redirect',
                'utm_content'  => $page_url
            ];

            // Store them in the session as a pre-built query string
            $_SESSION['utm_querystring'] = http_build_query( $utm_params );
        }
    }
});

Si vous souhaitez uniquement capturer le d’abord page qu’un utilisateur visite (plutôt que de la mettre à jour à chaque fois qu’il se déplace), puis définissez uniquement $_SESSION['utm_querystring'] si c’est vide. De cette façon, vous ne l’écraserez pas sur les pages suivantes.

Étape 3 : Ajouter les paramètres UTM lors des redirections

Dans le wp_redirect filtrer, nous :

  1. Analyser le existant URL de destination et tous les paramètres de requête existants.
  2. Récupérez nos paramètres UTM basés sur la session s’ils existent.
  3. S’ils ne le faites pas exister (session vide), utiliser retomber valeurs par défaut.
  4. Ajoutez uniquement les paramètres UTM qui sont manquant dans la destination.
add_filter( 'wp_redirect', 'my_session_based_utm_redirect_with_fallback', 10, 2 );
function my_session_based_utm_redirect_with_fallback( $location, $status ) {
    // Skip if we're in the admin or if the location is empty
    if ( is_admin() || ! $location ) {
        return $location;
    }

    // Process only 3xx (redirect) status codes
    if ( $status >= 300 && $status < 400 ) {

        // Parse the existing destination URL
        $parsed_url = parse_url( $location );
        if ( ! isset( $parsed_url['host'] ) ) {
            // If there's no valid host, we can't append
            return $location;
        }

        // Parse any existing query parameters
        $existing_params = [];
        if ( isset( $parsed_url['query'] ) ) {
            parse_str( $parsed_url['query'], $existing_params );
        }

        // --------------------------
        // 1) GET SESSION-BASED UTM
        // --------------------------
        $session_utm_params = [];
        if ( ! empty( $_SESSION['utm_querystring'] ) ) {
            parse_str( $_SESSION['utm_querystring'], $session_utm_params );
        }

        // --------------------------
        // 2) DEFINE FALLBACKS
        // --------------------------
        // If the session is empty or missing something, fallback to defaults.
        $site_name = get_bloginfo( 'name' );
        $site_url  = home_url();

        if ( empty( $session_utm_params['utm_source'] ) ) {
            $session_utm_params['utm_source'] = $site_name;
        }
        if ( empty( $session_utm_params['utm_campaign'] ) ) {
            $session_utm_params['utm_campaign'] = 'Redirect';
        }
        if ( empty( $session_utm_params['utm_content'] ) ) {
            $session_utm_params['utm_content'] = $site_url;
        }

        // --------------------------
        // 3) MERGE ANY MISSING UTM
        // --------------------------
        $utm_updated = false;
        foreach ( $session_utm_params as $key => $val ) {
            // If the destination doesn't already have a value for this param, append it
            if ( empty( $existing_params[$key] ) ) {
                $existing_params[$key] = $val;
                $utm_updated = true;
            }
        }

        // If we updated any param, rebuild the final URL
        if ( $utm_updated ) {
            $new_query = http_build_query($existing_params);

            // Reconstruct the URL with updated query string
            $scheme   = isset($parsed_url['scheme'])    ? $parsed_url['scheme'] . '://' : '';
            $host     = isset($parsed_url['host'])      ? $parsed_url['host']           : '';
            $port     = isset($parsed_url['port'])      ? ':' . $parsed_url['port']     : '';
            $path     = isset($parsed_url['path'])      ? $parsed_url['path']           : '';
            $fragment = isset($parsed_url['fragment'])  ? '#' . $parsed_url['fragment'] : '';

            $location = sprintf(
                '%s%s%s%s?%s%s',
                $scheme,
                $host,
                $port,
                $path,
                $new_query,
                $fragment
            );
        }
    }

    // Return the (possibly) modified location
    return $location;
}

Comment cela aide le marketing et les ventes

  • Attribution par page : Vous voyez exactement quelle page a conduit un utilisateur vers un site externe via utm_sourcevous offrant des analyses de campagne et de référencement plus précises.
  • Campagne distincte : En utilisant "Redirect" dans utm_campaignvous pouvez segmenter tout le trafic généré en externe dans votre plateforme d’analyse.
  • Balise de contenu personnalisée : Avec utm_content défini sur l’URL exacte de la page, vous pouvez mesurer précisément quelles pages génèrent le plus de trafic sortant.

Facultatif : baliser uniquement les liens externes

Si vous voulez seulement taguer sortant liens (pas de redirections internes), ajoutez une vérification rapide :

$site_url = site_url();
if ( strpos( $location, $site_url ) === 0 ) {
    // It's an internal link, so skip
    return $location;
}

Placez-le juste après avoir analysé $location. Cela garantit que vous marquez uniquement les liens qui mènent à votre domaine.

Résumé

  1. Démarrer la session – nécessaire pour capturer des données spécifiques à la page.
  2. Capturer les informations de la page – stocker le titre et l’URL de la page dans la session (repli : nom du site et URL du site).
  3. Ajouter UTM – dans wp_redirectanalysez la destination et ajoutez les paramètres UTM uniquement s’ils sont manquants. S’il n’y a pas de données de session, utilisez les mêmes valeurs par défaut de secours pour toujours avoir quelque chose.

Cette approche complète garantit que vous verrez dans vos analyses quelque chose comme :

https://destination.com/
  ?utm_source=Your+Page+Title
  &utm_campaign=Redirect
  &utm_content=https%3A%2F%2Fyourdomain.com%2Fyour-page

Chaque fois qu’un utilisateur est redirigé depuis votre site, vos rapports commerciaux et marketing peuvent attribuer avec précision quelles pages (et quelle campagne) ont généré les clics sortants.




Source link